バージョン 3.1.3
製作著作 © 1998 Jason Gunthorpe
概要
This document provides an overview of how to use the APT package manager.
目次
APT パッケージは現在、APT dselect メソッドと apt-get コマンドラインユーザインターフェイスの2つを収録しています。両方ともインターネットから新しいパッケージをダウンロードするのと同様、パッケージをインストール、削除する方法を提供しています。 |
Debian パッケージシステムには各パッケージに関連する膨大な情報があり、システムに手際良く簡単に統合することを支援します。その最も重要な機能は依存システムです。 |
依存システムにより、システムにあるライブラリ等の共有要素を個々のプログラムを使えるようになります。簡単に言うと、プログラムのうちまれに利用される部分を別個のパッケージに配置して、平均的ユーザがインストールを必要とするものの数を減らします。また、メール転送エージェントや X サーバ等の選択ができるようにもなります。 |
依存システムの理解はまず単純な依存の概念を把握することから始まります。単純な依存というのは、あるパッケージが適切に機能するためには別のパッケージが同時にインストールされている必要があるということです。 |
例えば mailcrypt は emacs を拡張するプログラムで、GPG によるメールの暗号化を支援します。GPGP がインストールされていなければ mailcrypt は役に立たないので mailcrypt には GPG に単純に依存しています。また、これは emacs の拡張なので emacs に単純に依存し、emacs がないと何の役にも立ちません。 |
理解しておかないといけないもう一つの重要な依存に競合する依存があります。これはあるパッケージが別のパッケージと同時にインストールされていると機能せず、システムにとってひどく有害なこともあります。例として sendmail や exim、qmail 等のメール転送エージェントで考えてみましょう。メール転送エージェントはどれもメールを受け取るのにネットワークを待ち受ける必要があるため、2つインストールすることは不可能です。複数インストールするとシステムに重大な被害を与える可能性があるため、メール転送エージェントはどれも他のあらゆるメール転送エージェントと競合依存となっています。 |
複雑な例としては、別のパッケージのように装うパッケージがあります。exim と sendmail について見てみると、その多くの目的は同一で、両方ともメールを配送し、一般的インターフェイスを解釈します。そこで、パッケージシステムにはどちらも mail-transport-agents だと宣言する方法があります。そうして exim と sendmail は両方とも mail-transport-agent を提供すると宣言し、他のメール転送エージェントを必要とするパッケージは mail-transport-agent に依存します。手作業によりパッケージを修正しようとしたときに多大な混乱が生まれる可能性があります。 |
既にインストールされている、あるいはされていないパッケージについて、1つの依存が生まれる可能性は常にあります。APT はインストールするパッケージの選択を支援する自動化でのアルゴリズムをいくつか提供することで依存問題の解決支援に努めます。 |
apt-get はコマンドラインからパッケージをインストールする簡単な方法を提供します。dpkg とは異なり、apt-get は .deb ファイルを解釈せず、連携するのはパッケージ特有の名前で、インストールできるのはソースにある .deb アーカイブだけです。 |
apt-get を使う前にまずやるべきことは[1]パッケージ一覧をソースから取得することで、それにより利用できるパッケージがわかるようになります。これには
|
# apt-get update 取得 http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages 取得 http://llug.sep.bnl.gov/debian/ testing/contrib Packages パッケージリストを読み込んでいます... 完了 |
更新後は複数のコマンドを使えます: |
|
apt-get にはコマンドラインオプションが複数あり、man ページの
apt-get(8)
で詳細に説明されています。最も有用なオプションは取得したファイルをインストールしない |
APT の dselect メソッドは dselect パッケージ選択 GUI を使った完全な APT システムを提供します。インストールや削除するパッケージの選択には dselect を使い、実際のインストールは APT が行います。 |
APT メソッドを有効にするには、dselect でアクセス(a) を選択し、それから APT メソッドを選択する必要があります。そうするとアーカイブの取得先の場所となるソース群を聞かれます。これにはリモートのインターネットサイトやローカルの Debian ミラー、CD-ROM を指定できます。各ソースで Debian アーカイブ全体のうちの一部を提供でき、APT は自動的に組み合わせてパッケージ群一式を構成します。CD-ROM がある場合はまずそれを指定し、それからミラーを指定するのが良い方法で、そうすることで最新のバグ修正にアクセスできるようになります。APT はインターネットからダウンロードする前に CD-ROM にあるパッケージを自動的に利用します。 |
ディストリビューションソース位置一覧の準備
Debian ディストリビューションの基底 URL を指定してください。
認識できるアクセス方法: http file
例:
file:/mnt/debian,
https://deb.debian.org/debian,
http://deb.debian.org/debian,
URL [http://llug.sep.bnl.gov/debian]:
|
ソースの準備は基礎となる Debian アーカイブの質問から始まり、デフォルトは HTTP ミラーとなっています。その次は取得するディストリビューションを質問します。 |
取得するディストリビューションのタグやパッケージファイルへのパスを / で終える形式で指定してください。ディストリビューションのタグには 以下のようなものがあります: stable unstable testing ディストリビューション [stable]: |
The distribution refers to the Debian version in the archive, stable refers to the latest released version and unstable refers to the developmental version. |
取得するコンポーネントを指定してください コンポーネントには以下のようなものがあります: main contrib non-free non-free-firmware コンポーネント [main contrib non-free non-free-firmware]: |
コンポーネント一覧は取得するサブディストリビューションの一覧を参照します。このディストリビューションはソフトウェアのライセンスを基にして分けられています。main にあるのは DFSG フリーのパッケージですが contrib や non-free には利用目的や配布形態に様々な制限を課せられているものが収録されています。 |
ソースはいくらでも追加できます。準備スクリプトは必要なソースを全て指定するまで聞き続けます。 |
dselect を使う前にメニューから更新(u)を選択して利用可能なパッケージ一覧を更新する必要があります。これは
|
その後は選択(s)を使って選択し、導入(i)を使ってインストールします。APT メソッドを使っている場合は設定(c)や削除(r)コマンドに意味はなく、導入(i)コマンドがその両方を実行します。 |
デフォルトで APT はインストールに成功したパッケージ (.deb) ファイルを自動的に削除します。この挙動を変更するには
/etc/apt/apt.conf 中に |
目次
APT の dselect メソッドと apt-get は共に同一のインターフェイスを共有しています。通常は行う内容を告知して実行する簡単なシステムです。[2] 実行内容のまとめを告知した後 APT が参考になる状態メッセージをいくらか表示するため、どれくらい進んでいるのか、あるいは残り作業がどれくらいあるのか見積もることができるようになっています。 |
update 以外のあらゆる操作で、APT はいくつか処理を行い内部状態を準備します。また、システムの状態についてもいくらか確認します。この処理は
|
# apt-get check パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 |
これが最初に行うのはパッケージファイルを全てメモリに読み込むことです。APT はキャッシュを使うようになっているので、この処理は次に実行するときには早く終わります。見つけられないパッケージファイルがある場合は無視され、apt-get 終了時に注意を表示します。 |
最後の処理はシステムの依存関係の詳細な分析です。インストール、あるいは展開されたパッケージの依存関係を全て確認し、問題ないか判断します。問題が見つかった場合は報告し、apt-get の実行を拒否します。 |
# apt-get check
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
これらを直すためには 'apt --fix-broken install' を実行する必要があるかもしれません。
下のパッケージには満たせない依存関係があります:
9fonts: 依存: xlib6g しかし、インストールされていません
uucp: 依存: mailx しかし、インストールされていません
blast: 依存: xlib6g (>= 3.3-5) しかし、インストールされていません
adduser: 依存: perl-base しかし、インストールされていません
aumix: 依存: libgpmg1 しかし、インストールされていません
debiandoc-sgml: 依存: sgml-base しかし、インストールされていません
bash-builtins: 依存: bash (>= 2.01) しかし、2.0-3 はインストールされています
cthugha: 依存: svgalibg1 しかし、インストールされていません
依存: xlib6g (>= 3.3-5) しかし、インストールされていません
libreadlineg2: 競合:libreadline2 (<< 2.1-2.1)
|
この例ではシステムに libreadlineg2 に関する重大な問題を含めて多数の問題があります。未解決の依存関係があれば各パッケージごとにそのパッケージに問題があることを示し、併せて未解決の依存関係を1行で出力します。そのパッケージの依存問題の理由について簡潔な説明も添えられます。 |
システムがこのように壊れた状態となる原因は2つあります。1つ目はアップグレード実行時にパッケージ間の難解な依存関係を dpkg がいくらか欠いていることによります。[3]2つ目はパッケージのインストール処理中に何か失敗した場合です。この状況では依存するパッケージがインストールされないままパッケージが展開されている可能性があります。 |
APT がパッケージのインストール順序に特定の制約を設けていることにより2つ目の状況は1つ目の状況と比べて重大ですらなくなります。どちらの場合でも
apt-get に |
しかし、1つ目の状況により重大な壊れ方になっているシステムの修正に |
処理を続ける前に apt-get
は実行しようとする処理について報告します。通常この報告は実行される操作の種類を反映したものになりますが、一般的要素がいくつかあります。どの場合でもこの処理一覧は最終的な状態を示し、 |
以下の特別パッケージがインストールされます: libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy squake pgp-i python-base debmake ldso perl libreadlineg2 ssh |
追加パッケージリストはコマンドラインで指示した以外にインストールやアップグレードされるパッケージを全て表示します。これは
|
以下のパッケージは「削除」されます: The following packages will be REMOVED: xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid nas xpilot xfig |
削除するパッケージリストはシステムから削除されるパッケージを全て表示します。これはどの操作でも起きるもので、重要なものが失われることのないように注意深く確認すべきです。 |
以下のパッケージが新たにインストールされます: zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base |
新規パッケージリストでは単純にこれから起きることを再通知します。このパッケージ一覧は現在システムにインストールされておらず、APT 処理後には存在することになります。 |
以下のパッケージは保留されます compface man-db tetex-base msql libpaper svgalib1 gs snmp arena lynx xpat2 groff xscreensaver |
システム全体をアップグレードする場合、新しいパッケージが必要であったり既にインストールされているパッケージと競合するためにパッケージの新しいバージョンがインストールできないということがあります。この場合、そのパッケージは一時固定リストに表示されます。この一覧に挙げられたパッケージをインストールする最善の方法は
|
以下の変更禁止パッケージは変更されます: cvs |
保留となっているパッケージをインストールするように APT に指示することもできます。その際、保留となっているパッケージを変更することを警告します。これは dist-upgrade または install を指示したときにしか起きないはずです。 |
最後に、APT は発生する全変更のまとめを表示します。 |
アップグレード: 206 個、新規インストール: 8 個、削除: 23 個、保留: 51 個。 12 個のパッケージが完全にインストールまたは削除されていません。 66.7MB 中 65.7MB のアーカイブを取得する必要があります。 この操作後に追加で 26.5MB のディスク容量が消費されます。 |
まとめの1行目は単純に一覧を全て短くまとめたもので、アップグレードされる (既にインストールされていて新しいバージョンが利用可能な) パッケージの数についても示します。2行目は設定が完了していないパッケージの数を示し、インストールを中止した場合にこれに集計されることがあります。最終行はそのインストールで必要となる容量の要件を示します。最初の数値の組はアーカイブファイルのサイズを示します。この1つ目の数値はリモートから取得してくる必要のあるバイト数、2つ目は必要となる全アーカイブの合計サイズを示します。次の数値は現在インストールされているパッケージと新しくインストールしたパッケージのサイズの違いを示します。これは処理が全て終わった後に /usr で消費される容量にほぼ相当します。パッケージを大量に削除する場合は解放される容量を示すこともあります。 |
他の報告として、-u オプションを使うとアップグレードされるパッケージを表示します。これは前に示した例と似たものです。 |
アーカイブやパッケージファイルのダウンロード中、APT は状態を示す一連のメッセージを表示します。 |
# apt-get update 取得:1 http://ftp.de.debian.org/debian/ stable/main Packages 取得:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages ヒット http://llug.sep.bnl.gov/debian/ testing/main Packages 取得:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages 取得:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages 11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s |
APT
がファイルの取得を開始すると、最終行でダウンロードの進捗状況を示しつつ取得で始まる行が表示されます。進捗の最初のパーセント値は全ファイルに対する取得済みの全体での割合を示します。残念ながらパッケージファイルのサイズは不明なので
|
状態を示す行の次の節は各ダウンロードスレッドごとに1度ずつ繰り返され、進行中の操作や処理についての有用な情報をいくらか示します。この節は単純に Forking となっていることもあり、その場合は OS がダウンロード用のモジュールを読み込んでいることを示します。[ の後の最初の語は履歴に表示されている取得番号です。その次の語はダウンロード対象の名前の短縮形です。アーカイブの場合は取得中のパッケージの名前が入ります。 |
単一引用符内はダウンロードのやりとりの進捗を示す有益な文字列です。標準的には...へ接続していますからファイルを待っていますへ、それから...をダウンロードしていますまたは...を再開していますへと進みます。最後の値はリモートサイトからダウンロードしたバイト数です。ダウンロードが始まるとこれは
|
状態表示は0.5秒ごとに更新してダウンロードの進捗状況を絶えず通知し、取得行は新しいファイルの処理が始まるたびに流れていきます。状態表示は絶えず更新されるためファイルへの記録には適しません。 |
APT はアーカイブのインストールに dpkg を使い、ダウンロードの完了後は dpkg インターフェイスに切り替わります。dpkg もパッケージの処理中にいくつか質問し、パッケージ自体も複数質問するかもしれません。通常それぞれの質問の前にそれが何を聞いているのか説明します。その質問の内容は多岐にわたるものであり、ここで説明できるものでは全くありません。 |