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)