aptとdpkg

apt(Advanced Packaging Tool)はパッケージ管理ユーティリティです。インストールしたいパッケージに依存するパッケージ群をまとめてインストールしてくれます。アンインストール時も同様に依存するパッケージ群がまとめてアンインストールされます。パッケージ間の依存関係をしっかり管理してくれるので、とても便利です。以下、簡単に使い方を紹介します。詳しくは、APT HOWTOなどを参照してください。

aptコマンド名 aptitudeコマンド名 解説
$ apt-get update $ aptitude update ローカルのパッケージデータベースを更新
$ apt-cache search keyword $ aptitude search keyword 文字列keywordを含むインストール可能なパッケージ一覧を取得
$ apt-get install package $ aptitude install package packageをインストール
$ apt-get upgrade $ aptitude upgrade パッケージのバイナリを最新のものに更新
$ apt-get -s upgrade $ aptitude -s upgrade 更新されるパッケージを表示
$ apt-get remove package $ aptitude remove package packageをアンインストール
$ apt-get --purge remove package $ aptitude purge package 設定ファイルを削除し、packageをアンインストール

aptは

  • インストールされているパッケージ
  • インストールされていないパッケージ
  • インストール可能なパッケージ

を判断するためにローカルなデータベースを利用します。このデータベースは/etc/apt/sources.listで記述した各サーバが配布可能なパッケージ群の情報を元に作成されます。このローカルなデータベースを更新するためにはapt-get updateを実行します。うまく更新されない場合はログから失敗したサーバ名を特定し、apt-lineの一部をコメントアウトするとうまく更新されるはずです。そして、apt-cache search keywordを実行し、更新したローカルなデータベースを元にインストール可能なパッケージ一覧を取得し、apt-get install packageを実行し、パッケージをインストールします。
また、apt-get updateによってインストール可能なパッケージを特定することができるとともに、バグフィックスや機能変更によるパッケージ更新情報などを取得することができます。このパッケージ更新情報を元に実際にパッケージのバイナリを最新のものに更新するためにはapt-get upgradeを実行します。更新されるパッケージを事前に知りたい場合は、-sオプションを付加することでupgradeをシミュレートできます。
既にインストールされているパッケージをアンインストールする場合にはapt-get remove packageを実行します。しかし、この場合、パッケージの設定ファイルはローカルに残ったままになります。設定ファイルを削除し、パッケージをアンインストールするためにはapt-get --purge remove packageを実行します。

dpkg

aptはパッケージ間の依存関係を解決してくれるツールであり、特にDebianのapt内ではdpkgコマンドが呼ばれます。dpkgはDebianが利用するdeb形式のパッケージのインストール、アンインストールを行うためのプログラムです。aptを利用しなくてもdpkgだけでパッケージをインストールし、利用することもできます。自分で独自のdebパッケージを作成した場合などにはapt経由ではなく、dpkgで直接インストールしてしまった方がいいでしょう。dpkgの使い方のうち、使用頻度の高いものを以下に示します。

コマンド名 解説
$ dpkg -i package packageをインストール
$ dpkg -r package packageをアンインストール
$ dpkg --purge package 設定ファイルを削除し、packageをアンインストール
$ dpkg -l 既にインストールされているパッケージ群を表示
$ dpkg-reconfigure package 既にインストールされているpackageの再設定

dpkg -lに該当するコマンドがaptに用意されていないため、このコマンドには頻繁にお世話になると思います。実行すると以下のような情報が得られます。

$ dpkg -l
(snip)
ii  emacs21-bin-co 21.4a-1        The GNU Emacs editor's shared, architecture
(snip)

左に表示されている文字列は順に

  • 一文字目(apt-get upgrade、apt-get dist-upgradeを実行したときにパッケージに行われる処理の内容)
表示される文字 意味
u 未知
h ホールド
i インストール
r アンインストール
p 設定ファイル削除、アンインストール
  • 二文字目(現在のパッケージの状態)
表示される文字 意味
n 未インストール
i インストール済
c 未設定
u 展開されていない
f 設定失敗
h インストール途中で失敗
  • 三文字目(パッケージのエラーの致命度)
表示される文字 意味
エラーなし
h ホールド
r 要再インストール
x 障害

を表します。また、列の横幅が小さいため、表示されるべき文字列が途中で途切れることがしばしばあります。こんなときは、環境変数COLUMNSを変更して実行します。

$ COLUMNS=150 dpkg -l
(snip)
ii  emacs21-bin-common              21.4a-1                         The GNU Emacs editor's shared, architecture dependent files
(snip)