目次
Debian パッケージ管理に利用できるツールは、視覚的あるいはテキストベースのインターフェイスを備えたものからパッケージのインストールに利用される低レベルツールまで複数あります。利用できるツールはすべて適切に機能するために低レベルツールに依存しており、複雑さを軽減するために存在しています。
aptitude や synaptic といった高レベルのパッケージ管理ツールが apt に依存し、その apt 自体はそのシステムでのパッケージ管理について dpkg に依存していることを理解しておくのは大切です。
Debian パッケージ管理ユーティリティのさらなる情報については、Debian リファレンスの第2章 Debian パッケージ管理を見てください。この文書は様々な言語や形式のものが利用できます。DDP ユーザ用マニュアルの Debian リファレンスの項目を見てください。
これは主要なパッケージ管理プログラムです。dpkg は多数のオプションを指定して実行することができます。よく使うものをいくつか示します:
全オプションを調べるには: dpkg --help
指定されたパッケージの制御ファイル (や他の情報) を表示: dpkg --info
foo_VVV-RRR.deb
パッケージをハードディスクのファイルシステムにインストール (展開や設定も含む): dpkg --install
foo_VVV-RRR.deb
Debian アーカイブをハードディスクのファイルシステムに展開 (設定はしない): dpkg --unpack
foo_VVV-RRR.deb
。この操作は必ずしもパッケージを使える状態にするとは限らないことに注意してください。適切に動作させるためにはさらに一部のファイルに調整が必要かもしれません。このコマンドはそのプログラムの既にインストールされているバージョンを全て削除し、そのパッケージに付属している
preinst (「Debian preinst、postinst、prerm、postrm スクリプトとは何ですか?」 参照) スクリプトを実行します。
既に展開されているパッケージを設定: dpkg --configure foo
。この操作にはパッケージ付属の
postinst (「Debian preinst、postinst、prerm、postrm スクリプトとは何ですか?」 参照)
スクリプトを実行するという特徴があります。また、このパッケージの conffiles
内のファイル一覧の更新も行います。「configure」操作は Debian アーカイブファイル (例えば foo_VVV-RRR.deb)
ではなくパッケージ名 (例えば foo) を引数に取ることに注意してください。
Debian アーカイブから「blurf」という単一のファイル (または「blurf*」という名のファイル群) を抽出: dpkg
--fsys-tarfile foo_VVV-RRR.deb | tar -xf - blurf*
パッケージを削除 (設定ファイルは残す): dpkg --remove foo
パッケージを削除 (設定ファイルも削除): dpkg --purge foo
パッケージのインストール状態に文字列 (または正規表現)「foo*」を含むものを表示: dpkg --list
'foo*'
APT、進化したパッケージツール (Advanced Package Tool) は Debian
パッケージシステムへの進化したインターフェイスで apt-get
プログラム順を提供します。パッケージの検索、管理用コマンドラインツール、情報参照用には libapt-pkg
ライブラリの全機能への低レベルアクセス手段を提供します。さらなる情報については/usr/share/doc/apt-doc/guide.html/index.html
にあるユーザーズガイドを見てください (apt-doc
パッケージをインストールする必要があるでしょう)。
Debian Jessie 以降では、apt-get 及び apt-cache のよく使われる一部のコマンドについては新しい apt バイナリを経由する代替が用意されています。これは apt-get update、apt-get install、apt-get remove、apt-cache search、apt-cache show といった一部の人気コマンドが単に apt を経由して apt update、apt install、apt remove、apt search、apt show でもできるようになったということです。以下が新旧コマンドの概要となります。
apt-get update -> apt update apt-get upgrade -> apt upgrade apt-get dist-upgrade -> apt full-upgrade apt-get install package -> apt install package apt-get remove package -> apt remove package apt-get autoremove -> apt autoremove apt-cache search string -> apt search string apt-cache policy package -> apt list -a package apt-cache show package -> apt show package apt-cache showpkg package -> apt show -a package
apt ツールは apt-get と apt-cache の機能を統合し、デフォルトで小洒落た色付きの出力形式を採用して人間にとって使いやすくなっています。スクリプトでの利用や細かな処理には apt-get の方が好ましいあるいは必要となるでしょう。
apt-get provides a simple way to retrieve and install
packages from multiple sources using the command line. Unlike
dpkg, apt-get does not understand .deb
files, it works with the packages proper name and can only install .deb
archives from a source specified in
/etc/apt/sources.list
. apt-get will
call dpkg directly after downloading the .deb
archives[5] from the configured sources.
apt-get のよくある使い方をいくつか示します:
システムが把握するパッケージ一覧を更新するには
apt update
(これは定期的に実行してパッケージ一覧を更新しておくべきです)
foo
パッケージのその依存を全てインストールするには
apt install foo
foo パッケージをシステムから削除するには
apt remove foo
foo パッケージとその設定ファイルをシステムから削除するには
apt purge foo
新しいバージョンが利用できるようになっている全パッケージの一覧表示は
apt list --upgradable
システムにあるパッケージをすべて (余計なパッケージのインストールやパッケージの削除は行わずに) アップグレードするには
apt upgrade
システム上にあるパッケージをすべてアップグレードし、パッケージのアップグレードに余計なパッケージのインストールやパッケージの削除が必要な場合は
apt full-upgrade
(アップグレードの際に新しい依存を満たすのに余分なパッケージをインストールする必要がある場合、コマンド
upgrade
ではバージョンが古くなっているインストール済みパッケージを維持します。full-upgrade
コマンドはあまり保守的ではありません。)
パッケージを変更するコマンドの実行には root でログインしている必要があることに注意してください。
apt-get は現在、推奨される (recommended) パッケージをデフォルトでインストールすることと、その堅牢性から、コンソールからのシステムのインストールやシステムの規模の大きなアップグレードを行うのに望ましいパッケージ管理プログラムとなっていることに注意してください。
apt ツール群にはパッケージ一覧に対して検索を行う apt-cache ツールも収録されています。これを使って簡単なテキストや正規表現を照会したり、あるいはパッケージ管理システム内の依存関係を照会することで、特定の機能を提供するパッケージを検索することができます。apt-cache のよくある使い方をいくつか示します:
説明文に単語
を含むパッケージを探す:
apt search 単語
パッケージの詳細な情報を表示するには:
apt show package
指定したパッケージが依存しているパッケージを表示:
apt-cache depends package
そのパッケージの利用可能バージョンの詳細な情報やそれが逆依存しているパッケージを表示:
apt-cache showpkg package
For more information, install the apt
package and read
apt(8),
apt-get(8),
sources.list(5)
and install the apt-doc
package and
read /usr/share/doc/apt-doc/guide.html/index.html
.
aptitude は apt パッケージ管理基盤のフロントエンドを提供する Debian GNU/Linux システム用パッケージ管理プログラムです。aptitude は curses ライブラリを使ったテキストベースのインターフェイスです。操作は視覚的インターフェイスかコマンドラインから行うことができます。
aptitude を使うと管理タスクを迅速、簡単に実行できます。ユーザがパッケージ一覧を見たり、パッケージのインストールやアップグレード、削除といったパッケージ管理作業を行うことが可能になります。
aptitude は apt-get の機能、さらに多数の機能を追加で提供します:
aptitude はパッケージの全バージョンへの簡単なアクセスを提供します。
aptitude は「廃止された、またはローカルで作成されたパッケージ」の下に一覧を表示することで古くなっているソフトウェアの把握を簡単にします。
aptitude は特定のパッケージを検索して表示するパッケージを限定する非常に強力なシステムを収録しています。mutt をよく理解しているユーザなら表現として mutt を思い付くのですぐ探せるでしょう。
aptitude は利用可能な定義済みタスクのインストールに利用することができます。さらなる情報については 「tasksel」 を見てください。
aptitude の全画面モードでは su 機能が組み込まれ、通常のユーザが実行できるようになっています。管理用の権限が実際に必要となったときに su を呼び出し (root パスワードが設定されている場合はそれを聞いてき) ます。
aptitude は、視覚的インターフェイス経由 (単純に aptitude
で実行) またはコマンドラインから直接実行することができます。利用するコマンドライン書式は apt-get
とかなり似ています。例えば foo
パッケージをインストールするには
aptitude install
を実行します。
foo
aptitude は日常のパッケージ管理をコンソールから行うのに望ましいパッケージ管理プログラムとなっていることに注意してください。
For more information, read the manual page
aptitude(8)
and install the aptitude-doc
package.
synaptic はグラフィカルなパッケージ管理プログラムです。これを使うとソフトウェアパッケージのインストールやアップグレード、削除をユーザにとってわかりやすい方法で行うことができます。aptitude が提供している機能に加え、利用しているリポジトリ一覧を編集する機能やパッケージに関連する利用可能な全文書閲覧を支援する機能もあります。さらなる情報については Synaptic ウェブサイトを見てください。
特定の作業を行いたい場合に、要件を満たす適切なパッケージ群を見つけるのが困難なことがあります。Debian
開発者タスク
を定義しています。タスクは全て特定の活動に関連する個々の Debian
パッケージを集めたものです。タスクは tasksel プログラムや
aptitude 経由でインストールすることができます。
Typically, the Debian installer will automatically install the task
associated with a standard system and a desktop environment. The specific
desktop environment installed will depend on the CD/DVD media used, most
commonly it will be the GNOME desktop (gnome-desktop
task). Also, depending on your selections throughout the installation
process, tasks might be automatically installed in your system. For
example, if you selected a language other than English, the task associated
with it will be installed automatically too.
このプログラムは Debian アーカイブ (.deb
) ファイルを操作します。よくある使い方をいくつか示します:
全オプションを調べる: dpkg-deb --help
Debian アーカイブファイルに収録されているファイルの調査: dpkg-deb --contents
foo_VVV-RRR.deb
Debian アーカイブに収録されているファイルをユーザが指定されたディレクトリに抽出: dpkg-deb --extract
foo_VVV-RRR.deb tmp
を実行すると foo_VVV-RRR.deb
中の各ファイルをディレクトリ tmp/
に抽出します。これは root
ファイルシステムにパッケージをインストールすることなくディレクトリを限定してパッケージの内容を調べるのに便利です。
制御情報ファイルをパッケージから抽出: dpkg-deb --control foo_VVV-RRR.deb
tmp
単に dpkg-deb --extract
を使って展開したパッケージは正常にインストールされていないことに注意してください。代わりに dpkg
--install
を使ってください。
More information is given in the manual page dpkg-deb(1).
Debian GNU/Linux システムのカーネル (ファイルシステム) では使用中であってもファイルを置き換えることができます。
start-stop-daemon というプログラムも提供しています。これはブート時にデーモンを開始、あるいはランレベルが変更された (例えばマルチユーザからシングルユーザへの変更や halt) 時にデーモンを停止するのに使います。インストール用スクリプトがデーモンを収録する新しいパッケージをインストールするときに必要に応じて実行中のデーモンを停止、再起動するのに同一のプログラムを使います。
Debian システムにインストールされている全パッケージの状態を確認するには、コマンド
dpkg --list
を実行します。こうすると各パッケージについて、2文字の状態を示す記号 (ヘッダで説明されています)、パッケージ名、インストールされているバージョン、簡単な説明を1行にまとめたものが表示されます。
「foo」で始まる全パターンに名前がマッチするパッケージの状態を調べるには、コマンド
dpkg --list 'foo*'
特定のパッケージについてもっと詳しい報告を得るには、コマンド
dpkg --status パッケージ名
インストールされているパッケージ foo
により提供されている全ファイルを列挙するには、コマンド
dpkg --listfiles foo
を実行します。インストール用スクリプトにより作成されたファイルは表示されないことに注意してください。
foo
という名のファイルを提供しているパッケージを見つけるには、以下のどれかを実行します。
dpkg --search ファイル名
これはインストールされているパッケージからファイル名
を検索します。(これは (現在は) ファイルの拡張子が
.list
の全ファイルをディレクトリ
/var/lib/dpkg/info/
から検索し、それを収録するパッケージの名前を全て表示するように出力を調整しているのと等価です。
もっと高速な代替方法が dlocate ツールです。
dlocate -S ファイル名
zgrep foo Contents-ARCH.gz
This searches for files which contain the substring foo
in their full path names. The files Contents-ARCH.gz
(where ARCH represents the wanted architecture) reside in the major package
directories (main, non-free, contrib) at a Debian archive site (i.e. under
/debian/dists/bookworm
). A
Contents
file refers only to the packages in the
subdirectory tree where it resides. Therefore, a user might have to search
more than one Contents
files to find the package
containing the file foo
.
この方法には、現在そのシステムにインストールされていないパッケージに収録されているファイルを検索するという点で dpkg
--search
よりも優れています。
apt-file search
foo
apt-file
パッケージをインストールしていれば、これも上記と同様、フルパス名に部分文字列や正規表現 foo
を含むファイルを検索します。これには上記の例と比べて、(root で) apt-file update
を実行したときに /etc/apt/sources.list
で定義されている全ソースから自動的に取得しているためにこの Contents-ARCH.gz
ファイルを取得する必要がないという利点があります。
パッケージによってはプログラム (「foo」) とデータ (「foo-data」) (あるいは「foo」と「foo-doc」) に分割されています。Debian ではゲームやマルチメディアアプリケーション、辞書の多くがこのようになっています。これは、プログラムをインストールせずに生データにアクセスしたいユーザがいるであろうことや、そのデータ自体はなくてもプログラムは実行できる等の理由により「foo-data」をオプションにするために導入されました。
ライブラリの取り扱いでも似た状況が発生します: こちらは通常、アプリケーションを収録するパッケージが依存するためにインストールされます。アプリケーションパッケージを完全削除したときにライブラリパッケージはシステムに残るかもしれません。あるいは、アプリケーションパッケージが例えば libdb4.2 に代えて libdb4.3 に依存するようになった場合、アプリケーションパッケージをアップグレードしたときに libdb4.2 パッケージが残るかもしれません。
こういった場合、「foo-data」は「foo」に依存していないため、「foo」パッケージを削除する際、ほとんどのパッケージ管理ツールで自動的には削除されません。ライブラリパッケージでも同じです。これは循環依存を避けるために必要です。ただし、パッケージ管理ツールに apt-get (「APT」 参照) や aptitude (「aptitude」 参照) を利用している場合は、インストールされているパッケージを自動的に追跡し、必要としているパッケージがそのシステムに残っていないようなら削除を提案します。
[5] Notice that there are ports that make this tool available with other package management systems, like Red Hat package manager, also known as rpm