2014-02-11
apt-get/apt-cacheとaptitudeの違い
Ubuntuの情報を調べていると、apt-getとaptitudeの両方を見かけることが多いので気になって調べてみた。
全体
- apt-get/apt-cacheはコマンドラインのユーザーインターフェースのみを提供する
- aptitudeはコマンドラインユーザーインターフェースに加え、フルスクリーンのインタラクティブなテキストユーザーインターフェースを提供する
→ aptitudeの方がインタラクティブ性を持っている点で高機能
インストール・アンインストール
- 推奨パッケージの扱いが異なる。apt-getは推奨パッケージを表示するだけに留めるが、aptitudeは推奨パッケージもインストールしようとする
- 必要のなくなったパッケージ(孤児パッケージ)の扱いも異なる。apt-getもaptitudeもあるパッケージをインストールしたとき、必要なパッケージも自動的にインストールしてくれるが、インストールしたパッケージを削除したとき、apt-getはそのパッケージだけを、aptitudeは不要になったパッケージも削除する
- aptitudeは依存関係に従って間接的にインストールされたパッケージを不要になった時点で自動的に削除できる
- aptitudeは「推奨」のような「依存」よりも弱い関係にあるパッケージを一緒にインストールすることができる
→ 推奨パッケージの扱いと、不要になったパッケージの扱いが異なる。aptitudeの方が気が効くかんじかな。
メモリ消費量
- aptitudeの方がapt-getより便利にパッケージの依存関係を解消してくれるようだが、メモリの消費量が多く、重い
- apt-get/apt-cacheはメモリ消費量は少なく、実行速度が早い。一方aptitudeはメモリ消費量が多く、実行速度も遅い
→ apt-get/apt-cacheの方がメモリ消費量が少なくて、高速
検索機能
- apt-cacheはパッケージ名や説明に関して標準のregexを使った検索機能を提供する
- aptitudeはパッケージメタデータ全てに関する拡張されたregexを使った探索機能を提供する
→ aptitudeの方が高機能な検索機能を持つ
複数バージョン管理
- apt-getとapt-cacheは/etc/apt/preferencesを使って複数のバージョンのパッケージを管理できるが、非常に面倒
- aptitude は /etc/apt/preferences を使わずに複数のバージョンのパッケージを直観的に管理できる
→ 複数バージョン管理をしたいならaptitudeを使おう
得意分野
- apt-getはリリース間のような大掛かりなシステムアップグレードに最適
- aptitudeはインストールされたパッケージを検査したり利用可能なパッケージを探索したりするような日常のインタラクティブなパッケージ管理に最適
→ これは使う場面でちゃんと使い分けたいところ
その他
aptitudeはパッケージインストールの記録(ログ)を残す
→ ログ機能いいね
移行はできるか?(今までaptだったけど、aptitudeに移行したい。とか)
aptitudeは内部でapt-getを呼び出している。なので移行は容易。
混在しても大丈夫か?
- lenny以降のaptは拡張管理情報を扱えるため、混在しても問題ない
- aptitudeの拡張情報をaptで共有するためには一度aptitudeを実行しておく必要がある
今までapt-get/apt-cache使ってたけど、aptitudeにしてもいいかなぁというかんじがしてきた。 インストール時のログと不要パッケージの自動削除が魅力的だなあ。