Debian系パッケージ管理の全体像
Debian、Ubuntuなど、Debian系のディストリビューションでは、ソフトウェアは.deb形式のパッケージとして配布・管理されます。パッケージ管理は、大きく2つの階層に分かれています。
| 階層 | 役割 | 代表コマンド |
|---|---|---|
| 低レベル(パッケージファイル自体の操作) | 個々の.debファイルのインストール・削除・情報照会を行う | dpkg |
| 高レベル(リポジトリと依存関係の管理) | 設定されたリポジトリから、依存関係を自動的に解決しながらパッケージを取得・管理する | apt-get、apt-cache、apt |
dpkg:パッケージファイルを直接操作する
dpkgは、ダウンロード済みの.debファイルを直接インストール・削除したり、既にインストールされているパッケージの情報を照会したりするための低レベルなコマンドです。依存関係の自動解決は行いません。依存関係が満たされない場合、パッケージは展開されても設定処理が完了せず、エラーとなって未設定の状態で残ることがあります。
| 主なオプション | 効果 |
|---|---|
-i パッケージファイル | 指定した.debファイルをインストールする |
-r パッケージ名 | パッケージを削除する(設定ファイル=conffileは残す) |
-P パッケージ名 | パッケージを完全に削除する(パッケージが管理する設定ファイル=conffileも削除する) |
-l [パターン] | dpkgのデータベースに登録されているパッケージの一覧を表示する(削除済みで設定ファイルだけが残るパッケージも含む) |
-L パッケージ名 | 指定したパッケージがシステムに配置したファイルの一覧を表示する |
-S ファイル名 | 指定したファイルが、どのパッケージによってインストールされたかを検索する |
--status パッケージ名 | 指定したパッケージのインストール状態の詳細を表示する |
dpkg -i package.deb # ローカルの.debファイルをインストールする
dpkg -r package # パッケージを削除する(設定ファイルは残す)
dpkg -L package # packageが配置したファイルの一覧を表示する
dpkg -S /usr/bin/vim # /usr/bin/vimがどのパッケージのものかを調べる-r(削除)と-P(完全削除)の違いは、パッケージが管理する設定ファイル(conffile)を残すかどうかです。再インストールを見込む場合は-r、パッケージとその設定ファイルを削除したい場合は-Pを使い分けます。
dpkg-reconfigure:パッケージの初期設定をやり直す
dpkg-reconfigureは、debconfを利用するパッケージの設定を後から再実行するためのコマンドです。パッケージや設定によっては、対話的な設定ダイアログが表示されます。
dpkg-reconfigure tzdata # タイムゾーンの設定を再度行うapt-get:リポジトリからのインストールと依存関係の解決
apt-getは、/etc/apt/sources.listや/etc/apt/sources.list.d/に登録されたリポジトリから、依存関係を自動的に解決しながらパッケージを取得・インストールする高レベルなコマンドです。
| コマンド | 効果 |
|---|---|
apt-get update | リポジトリのパッケージ一覧(インデックス)を最新の状態に同期する(パッケージ自体はまだ更新しない) |
apt-get upgrade | インストール済みのパッケージを、削除や新規インストールを伴わない範囲で最新版に更新する |
apt-get dist-upgrade | 依存関係の変更を解決するため、必要に応じてパッケージの新規インストールや削除も行いながら、インストール済みパッケージを最新版に更新する |
apt-get install パッケージ名 | パッケージを、依存関係も含めて自動的に解決しながらインストールする(既にインストール済みならアップグレードも兼ねる) |
apt-get remove パッケージ名 | パッケージを削除する(設定ファイルは残す) |
apt-get purge パッケージ名 | パッケージを、パッケージが管理する設定ファイルも含めて削除する |
apt-get autoremove | 依存関係の解決のために自動的にインストールされ、現在はどのパッケージからも必要とされなくなったパッケージを削除する |
apt-get update # パッケージ一覧を最新化する(インストール前に行うのが基本)
apt-get install nginx # nginxとその依存パッケージをインストールする
apt-get autoremove # 不要になった依存パッケージを整理するapt-get updateはパッケージ一覧の同期、apt-get upgradeは実際のパッケージの更新という役割の違いに注意してください。
リポジトリの設定:/etc/apt/sources.list
/etc/apt/sources.listおよび/etc/apt/sources.list.d/配下の通常.listまたは.sourcesの拡張子を持つ設定ファイルは、パッケージの取得元となるリポジトリの一覧を記述する設定ファイルです。設定形式はAPTやディストリビューションのバージョンにより異なる場合があります。以下は従来の1行形式の例です。
deb http://deb.debian.org/debian bookworm main contrib non-free従来の1行形式では、各行は「種別(deb=バイナリ、deb-src=ソース)」「リポジトリのURL」「ディストリビューションのコードネーム」「コンポーネント(main等)」から構成されます。
apt-cache:パッケージ情報を検索・照会する
apt-cacheは、パッケージのインストールを伴わず、リポジトリのインデックス情報を検索・参照するためのコマンドです。
| コマンド | 効果 |
|---|---|
apt-cache search キーワード | パッケージ名・説明文からキーワードで検索する |
apt-cache show パッケージ名 | バージョン・依存関係・説明などのパッケージ情報を表示する(インストールの有無を問わない) |
apt-cache depends パッケージ名 | そのパッケージの依存関係などのパッケージ関係と、それを満たし得るパッケージを表示する |
apt-cache policy [パッケージ名] | 候補となるパッケージのバージョンと、それぞれに適用される優先度を表示する |
apt-cache search "text editor" # 「text editor」に関連するパッケージを検索する
apt-cache show vim # vimパッケージの詳細情報を表示する
apt-cache depends vim # vimが依存するパッケージの一覧を表示する統合コマンド:apt
比較的新しいバージョンでは、apt-getとapt-cacheの代表的な機能を1つにまとめたaptコマンドが用意されており、apt install・apt remove・apt update・apt upgrade・apt searchのように、より簡潔に利用できます。試験範囲としては引き続きapt-get・apt-cacheが明示的に挙げられているため、両者の対応関係を理解しておくとよいでしょう。