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にしてもいいかなぁというかんじがしてきた。 インストール時のログと不要パッケージの自動削除が魅力的だなあ。

参考