読者です 読者をやめる 読者になる 読者になる

UNIX的なアレ

UNIX的なこととかいろいろ

不要になったパッケージを削除してくれる、autoremove

Linux Debian Ubuntu

Debian系OSでのパッケージ管理コマンド、aptは便利ですが、不要になった際に依存のパッケージまでは削除してくれません。
削除する際は、


# sudo apt-get remove --purge {package名}

と指定しますが、これでも消せるのはそのパッケージのみです。

ところが、ubuntu edgy以降で利用できるautoremoveを使えば不要なパッケージも簡単に削除可能!


# sudo apt-get autoremove

これだけで依存関係がなく、不要と判断されたパッケージは削除してくれます。
すごいなーとても便利。しかし、manを見ても--helpをみても記載されていないのです。

Commands:
update - Retrieve new lists of packages
upgrade - Perform an upgrade
install - Install new packages (pkg is libc6 not libc6.deb)
remove - Remove packages
purge - Remove and purge packages
source - Download source archives
build-dep - Configure build-dependencies for source packages
dist-upgrade - Distribution upgrade, see apt-get(8)
dselect-upgrade - Follow dselect selections
clean - Erase downloaded archive files
autoclean - Erase old downloaded archive files
check - Verify that there are no broken dependencies

manを見ても記載されていないのは、ubuntuが独自に追加したコマンドだからっぽいな。

でもaptitudeを使えばそんな心配はいらないようですね。
以下のページの解説がすごくわかりやすいです。

主な違いは必要のなくなったパッケージ(孤児(orphan)パッケージと呼ばれるらしい)の扱いです。apt-getもaptitudeもあるパッケージをインストールしたとき、必要なパッケージも自動的にインストールしてくれますが、インストールしたパッケージを削除したとき、apt-getはそのパッケージだけを、aptitudeは(/var/log/aptitudeのログを元に)不要になったパッケージも削除します。

シーサー株式会社
なるほどなるほど。

追記(2008/1/10)

noritadaさんから教えていただきました。apt-get autoremoveはubuntuが独自に追加したものではなくaptのバージョンによるものだそうです。


# apt-get --version
apt 0.6.46.4-0.1 for linux i386 compiled on Feb 26 2007 16:19:57


# apt-get --version
apt 0.7.6ubuntu14 for i386 compiled on Oct 15 2007 20:39:10

どうやら、autoremoveはaptの0.7系から実装された機能とのことです。
大変勉強になりました。