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

参考

h3pei's icon

h3pei

フリーランスのソフトウェアエンジニア。Ruby / Rails アプリケーションの開発が得意領域。設計・実装・運用まで含めてプロダクト開発が好きです。

Questalという目標達成コミュニティサービスを開発しました。仲間と一緒に目標達成に取り組みたい方はぜひご利用ください。

お仕事のご依頼
GitHubnoteX

関連記事