Product SiteDocumentation Site

第6章 保守と更新: APT ツール

6.1. sources.list ファイルの内容
6.1.1. 構文
6.1.2. 安定版 ユーザ用リポジトリ
6.1.3. テスト版/不安定版ユーザ向けリポジトリ
6.1.4. 非公式リソース: apt-get.orgmentors.debian.net
6.1.5. Debian パッケージのキャッシュプロキシ
6.2. aptitudeapt-get コマンド
6.2.1. 初期設定
6.2.2. インストールと削除
6.2.3. システムのアップグレード
6.2.4. 設定オプション
6.2.5. パッケージ優先度の管理
6.2.6. 複数ディストリビューションの利用
6.2.7. 自動的にインストールされたパッケージの追跡
6.3. apt-cache コマンド
6.4. フロントエンド: aptitudesynaptic
6.4.1. aptitude
6.4.2. synaptic
6.5. パッケージ信頼性の確認
6.6. 安定版から次のディストリビューションへのアップグレード
6.6.1. 推奨手順
6.6.2. アップグレードの後から問題を取り扱う
6.7. システムを最新の状態に保つ
6.8. 自動アップグレード
6.8.1. dpkg の設定
6.8.2. APT の設定
6.8.3. debconf の設定
6.8.4. コマンドラインインターフェースの取り扱い
6.8.5. 奇跡の組み合わせ
6.9. パッケージの検索
Debian が管理者に人気がある理由は、ソフトウェアのインストールが簡単で、システム全体の更新が簡単だからです。この比類なき長所は、主としてAPT プログラムが荷っており、Falcot Corp の管理者はこれについて熱心に学びました。
APT は Advanced Package Tool の略称です。このプログラムを「先進的」たらしめているものとは、パッケージの取り扱い方です。APT はパッケージを独立なものとして簡単に評価するのではなく、パッケージ全体を考慮し、(依存関係に従って) 利用可能で矛盾のないパッケージを選び出すことで、実現可能で最適なパッケージの組み合わせを作り出します。
APT には「パッケージソースのリスト」を与える必要があります: /etc/apt/sources.list には Debian パッケージを公開している様々なリポジトリ (または「ソース」) が記載されています。APT はそれぞれのソースが公開しているパッケージのリストを取り込みます。この作業は Packages.{gz,bz2,lzma,xz} ファイル (バイナリパッケージのソースの場合) と Sources.{gz,bz2,lzma,xz} (ソースパッケージのソースの場合) をダウンロードして、内容を解析することで実現されます。これらのファイルの古いコピーが既にあるのなら、APT は差分だけをダウンロードしてファイルを更新します (傍注 TIP 増分アップグレードを参照してください)。

6.1. sources.list ファイルの内容

6.1.1. 構文

/etc/apt/sources.list ファイルの各有効行には、スペースで分割された 3 つの部分からなる、ソースの説明が含まれています。
1 番目のフィールドはソースタイプです:
  • deb」はバイナリパッケージ用、
  • deb-src」はソースパッケージ用です。
2 番目のフィールドはパッケージソースの基点 URL です (Packages.gz ファイル内のファイル名と組み合わせます、これは完全で有効な URL でなければいけません): 起点 URL には Debian ミラーまたはサードパーティが提供する他のパッケージアーカイブを指定できます。URL は、システムのファイル階層構造内にあるローカルソースを表す file://、ウェブサーバにあるソースを示す http://、FTP サーバにあるソースを示す ftp://、で始めることができます。この URL はまた CD-ROM/DVD-ROM/ブルーレイディスクからインストールしたことを表す cdrom:// で始めることもできます。しかしこれはそれほど多くありません。なぜなら、ネットワークを使ったインストール方法がずっと一般的だからです。
最後のフィールドの構文はリポジトリの構造に依存します。最も単純な場合、このフィールドにはソースから見たサブディレクトリ (末尾スラッシュ必須) を指定します (サブディレクトリが無い - パッケージが指定された URL の直下に有る - ことを示す単純な「./」の場合が多いです)。しかし最も多く見られるのは、リポジトリが Debian ミラーのように構造化されている、つまり、複数のコンポーネントを持つ複数のディストリビューションを配布している場合です。この場合、そのマシンのディストリビューションの名前 (「コードネーム」- 傍注 COMMUNITY Bruce Perens、賛否の分かれるリーダー を参照 - または対応する「スイート」- stabletestingunstable) を指定し、その後に有効化するコンポーネント (またはセクション) を指定します (典型的な Debian ミラーでは maincontribnon-free から選びます)。
cdrom エントリはあなたの持っている CD/DVD-ROM を表しています。他のエントリと異なり、CD-ROM は常に利用可能ではありません。なぜなら、ディスクをドライブに挿入しなければいけませんし、一度に 1 つのディスクしか読めないからです。このような理由で、CD-ROM ソースは少し違う方法で管理されます。ソースを追加するには通常 apt-cdrom プログラムに add パラメータを付けて実行します。このようにプログラムを実行すると、ドライブにディスクを挿入するよう要求されます。プログラムはディスクの内容を閲覧して Packages ファイルを探します。このファイルは利用可能なパッケージデータベースを更新する際に利用されます (更新作業は apt-get update コマンドで実行されます)。そして、APT はディスクに含まれるパッケージが必要になったらディスクを挿入するように要求します。

6.1.2. 安定版 ユーザ用リポジトリ

下に示すのは、Debian の安定版を動かしているシステムで標準的な sources.list です:

例6.1 Debian 安定版ユーザ向けの /etc/apt/sources.list ファイル

# Security updates
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free

## Debian mirror

# Base repository
deb http://ftp.debian.org/debian wheezy main contrib non-free
deb-src http://ftp.debian.org/debian wheezy main contrib non-free

# Stable updates
deb http://ftp.debian.org/debian wheezy-updates main contrib non-free
deb-src http://ftp.debian.org/debian wheezy-updates main contrib non-free

# Stable backports
deb http://ftp.debian.org/debian wheezy-backports main contrib non-free
deb-src http://ftp.debian.org/debian wheezy-backports main contrib non-free
このファイルは Debian Wheezy (これを書いている時点の 安定版) に関連するパッケージの全ソースをリストしています。ここでディストリビューション名に「wheezy」を使い、対応する「stable」(stablestable-updatesstable-backports) という別名を使わなかった理由は、新しい安定版が公開されたことで自動的にディストリビューションのバージョンが変わるのを望まないからです。
ほとんどのパッケージは「ベースリポジトリ」から取得されます。「ベースリポジトリ」には全てのパッケージが収録されていますが、めったに更新されません (約 2 ヶ月に 1 度の「ポイントリリース」で更新されます)。他のリポジトリには、一部のパッケージしか収録されていません (全てパッケージが収録されているわけではありません) が、APT がインストールする更新 (パッケージの新しいバージョン) が収録されています。以下の節ではこの目的と、それぞれのリポジトリを支配しているルールについて説明します。
あるパッケージの希望したバージョンが複数のリポジトリから取得できる場合、sources.list ファイルにリストされた最初のリポジトリから取得されることに注意してください。この理由から、非公式ソースは通常最後に追加されます。
ちなみに、この節で安定版に関して述べていることのほとんどは旧安定版に関しても同じことが言えます。なぜなら、旧安定版とは並行して保守されている古い安定版に過ぎないからです。

6.1.2.1. セキュリティ更新

セキュリティ更新は Debian ミラーの通常のネットワーク上ではなく、security.debian.org (Debian システム管理者 が管理する少数のマシン) でホストされています。このアーカイブには、安定版ディストリビューション用の (Debian セキュリティチームまたはパッケージメンテナが用意した) セキュリティ更新が含まれています。
このサーバはテスト版用のセキュリティ更新もホストしていますが、実際にこれがホストされることはめったにありません。なぜなら、テスト版 対するセキュリティ更新は不安定版対する通常の更新手順を通じて行われることが多いからです。

6.1.2.2. 安定版更新

安定版更新はセキュリティに影響を及ぼすものではありませんが、その重要性は次の安定版ポイントリリースよりも前にユーザに提供するに値するとみなされます。
このリポジトリには通常、リリースの前に修正できなかったり、後続のアップデートによって生まれた、重要なバグの修正が含まれています。緊急度に応じて、時間と共に進化させる必要のあるパッケージの更新、例えば spamassassin のスパム検出ルール、clamav のウィルスデータベース、全てのタイムゾーンの夏時間ルール (tzdata) など、を含めることができる。
実際のところ、このリポジトリは内容を proposed-updates リポジトリからの一部抜粋したもので、安定版リリースマネージャが内容を注意深く選んでいます。

6.1.2.3. 提案された更新

一旦公開されたら、 安定版 ディストリビューションが更新される頻度は約 2 ヶ月に 1 回だけです。proposed-updates リポジトリは (安定版リリースマネージャの指揮の下で) 予定された更新を準備する場所です。
前の節で説明したセキュリティ更新と安定版更新は、常に proposed-updates リポジトリに加えられますが、更新は他にもあります。なぜなら、パッケージメンテナは素早くリリースすることもないけれど重要と思われるバグを修正する機会があるからです。
誰でも、正式公開前に更新をテストするために、proposed-updates リポジトリを使うことができます。以下で引用した例は wheezy-proposed-updates 別名を使っています。このような、より明白でより一貫性のある別名を使っている理由は、(旧安定版 用の) squeeze-proposed-updates 別名が存在するからです。
deb http://ftp.debian.org/debian wheezy-proposed-updates main contrib non-free

6.1.2.4. 安定版バックポート

stable-backports リポジトリは「パッケージのバックポート」をホストしています。この用語は、古いディストリビューション用に、通常は安定版用に、再コンパイルした最新ソフトウェアのパッケージを指す言葉です。
ディストリビューションがほんの少し時代遅れになっただけで、多くのソフトウェアプロジェクトが新バージョンをリリースしますが、新バージョンは現在の安定版に取り込まれません (このディストリビューションは最も重要な問題、例えばセキュリティ問題など、の修正しか取り込みません)。テスト版不安定版ディストリビューションはより危険性が高いので、パッケージメンテナはしばしば安定版向けに最新のソフトウェアアプリケーションを再コンパイルして提供することがあります。これは潜在的不安定性を少数の選ばれたパッケージだけに制限できるという利点があります。
今や、stable-backports リポジトリは普通の Debian ミラーから利用可能です。しかし Squeeze 用のバックポートはまだ専用サーバ (backports.debian.org) でホストされており、以下の sources.list エントリが必要です:
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
stable-backports に収録されているバックポートは常にテスト版で利用可能なパッケージから作成されます。これは、次の Debian 安定版リリースが利用可能になったら、全てのインストール済みバックポートは対応する安定版にアップグレード可能である、ということを保証します。
このリポジトリはパッケージの新しいバージョンを提供しますが、APT は明確な指示を出さない限り (または以前同じバックポートの古いバージョンをインストールしていない限り) バックポートパッケージをインストールしません:
$ sudo apt-get install package/wheezy-backports
$ sudo apt-get install -t wheezy-backports package

6.1.3. テスト版/不安定版ユーザ向けリポジトリ

下に示すのは、Debian のテスト版不安定版を動かしているシステムで標準的な sources.list です:

例6.2 Debian テスト版/不安定版ユーザ向けの /etc/apt/sources.list ファイル

# Unstable
deb http://ftp.debian.org/debian unstable main contrib non-free
deb-src http://ftp.debian.org/debian unstable main contrib non-free

# Testing
deb http://ftp.debian.org/debian testing main contrib non-free
deb-src http://ftp.debian.org/debian testing main contrib non-free

# Stable
deb http://ftp.debian.org/debian stable main contrib non-free
deb-src http://ftp.debian.org/debian stable main contrib non-free

# Security updates
deb http://security.debian.org/ stable/updates main contrib non-free
deb http://security.debian.org/ testing/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ testing/updates main contrib non-free
この sources.list ファイルを使う場合、APT は不安定版からパッケージをインストールします。これを望まない場合、APT::Default-Release 設定を使って (「システムのアップグレード」 をご覧ください) APT に他のディストリビューションから (この場合テスト版から) パッケージを取得するよう伝えます。
1 つでも十分なのに、全てのリポジトリを含めるのには正当な理由があります。テスト版ユーザは、あるパッケージのテスト版に含まれるバージョンが厄介なバグの影響を受けている場合、不安定版に含まれる修正されたバージョンを使えると良いと考えるでしょう。逆に、予期しない不具合に悩まされ続けている不安定版のユーザは、パッケージを (おそらく動く) テスト版に含まれるバージョンにダウングレードできます。
ここに安定版が含まれている点については異論があるかもしれませんが、こうすることで開発版から削除されたパッケージを入手可能になります。また、最新安定版リリース以降に変更されたパッケージの最新更新を手に入れることも保証されます。

6.1.3.1. 実験版リポジトリ

テスト版パッケージは全ての Debian ミラーに存在し、品質基準を満たしていないためにまだ不安定版に収録されていないパッケージを含んでいます - このようなパッケージはソフトウェアの開発版バージョンか先行バージョン (アルファ、ベータ、リリース候補) であることが多いです。メンテナは、重要な問題に対処する能力を持つ先進的なユーザに向けて、パッケージを公開しようとします。この最初のステージの後、パッケージは不安定版に移動されます。ここで、パッケージはより多くのユーザに配布され、より詳細にテストされます。
実験版を使うのは通常、システムを破壊したり修復することを気にしないユーザです。このディストリビューションでは、ユーザは必要に応じてが試してみたいか使ってみたいと思ったパッケージを取り込むことがきます。これはまさに Debian が実験版を使う時の方法です。なぜなら、実験版を APT の sources.list ファイルに追加することは、パッケージの体系的な利用に結び付かないからです。実験版を追加するには以下のようにします:
deb http://ftp.debian.org/debian experimental main contrib non-free

6.1.4. 非公式リソース: apt-get.orgmentors.debian.net

Debian パッケージの非公式ソースはたくさんあります。非公式ソースにパッケージを提供しているのは、ソフトウェアを再コンパイルした先進的ユーザ、つまり自分の創作物を誰でも利用可能な状態にするプログラマや自分のパッケージの先行バージョンをオンラインで提供する Debian 開発者です。非公式ソースをより簡単に発見するためのウェブサイトがあります。このウェブサイトには、大量の Debian パッケージソースが含まれ、それらは即座に sources.list ファイルに統合できます。しかしながら、当てずっぽうにパッケージソースを追加しないように気を付けてください。それぞれのソースは Debian の特定のバージョン (パッケージのコンパイルを実行したバージョン) 用に設計されいてます; 各ユーザは、追加するパッケージソースが設計されたバージョンが自分が使っているバージョンと一致していることを確認するべきです。
mentors.debian.net サイトもまた興味深いです。なぜならここには、パッケージの統合過程を経ずに、公式 Debian 開発者の候補者や Debian パッケージを作りたいと望むボランティアが作成したソースパッケージをアップロードできるからです。これらのパッケージは、品質保証の無いまま、利用可能になっています; このため、起源と整合性を必ず確認し、稼働中のシステムでパッケージを使う前にパッケージを必ずテストしてください。
あるパッケージをインストールすることは、パッケージの作者に root 権を与えることを意味しています。なぜなら、パッケージ作者は root 権で実行される初期化スクリプトの内容を決定するからです。公式 Debian パッケージは、パッケージの起源と整合性が確認できるように、選出され審査を受けたボランティアとパッケージの内容の責任を請け負うことができるボランティアによって作成されます。
一般に、出自不明で公式 Debian サーバの 1 つでホストされていないパッケージには警戒してください: 作者の信頼度を評価し、パッケージの整合性を確認してください。

6.1.5. Debian パッケージのキャッシュプロキシ

マシンのネットワーク全体で、同じ更新済みパッケージをダウンロードするために同じリモートサーバを使うよう設定されている場合、管理者はネットワークローカルキャッシュとして振る舞う中間プロキシを持つのは有益であると知っています (傍注VOCABULARY キャッシュ参照)。
APT が「標準的な」プロキシを使うように設定することもできます (APT 側は 「設定オプション」、プロキシ側は 「HTTP/FTP プロキシ」 を参照) が、Debian にはこの問題に対するより優れた選択肢が準備されています。この節で取り上げる専用ソフトウェアは単純なプロキシキャッシュよりも賢いです。なぜなら、このソフトウェアは APT リポジトリの特定の構造を頼りにすることができるからです (例えば、個々のファイルが時代遅れになるタイミングがわかるので、ファイルを保存しておく時間を調整できます)。
apt-cacherapt-cacher-ng は普通のプロキシキャッシュサーバのように振舞います。APT の sources.list を変える必要はありませんが、APT はそれらを外部リクエスト用のプロキシとして設定します。
これに対して、approx はトップレベル URL の下にある複数のリモートリポジトリを「ミラー」する HTTP サーバのように振舞います。トップレベルディレクトリとリモート URL の対応関係は /etc/approx/approx.conf に保存されています:
# <name> <repository-base-url>
debian   http://ftp.debian.org/debian
security http://security.debian.org
approx のデフォルト設定では、inetd 経由で (inetd スーパーサーバ」参照) 9999 番ポートを使います。ユーザは approx サーバを指すように sources.list ファイルを書き換えなければいけません。
# Sample sources.list pointing to a local approx server
deb http://apt.falcot.com:9999/security wheezy/updates main contrib non-free
deb http://apt.falcot.com:9999/debian wheezy main contrib non-free