Product SiteDocumentation Site

第 6 章 メンテナンスと更新、APT ツール

6.1. sources.list ファイルの内容
6.1.1. 構文
6.1.2. 安定版 ユーザ用リポジトリ
6.1.3. テスト版/不安定版ユーザ向けリポジトリ
6.1.4. 代替ミラーの利用
6.1.5. 非公式リソース、mentors.debian.net
6.1.6. Debian パッケージのキャッシュプロキシ
6.2. aptitudeapt-getapt コマンド
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 はパッケージを独立なものとして単純に評価するのではなく、パッケージ全体を考慮し、(依存関係に従って) 利用できて相性の良いパッケージを選び出すことで、実現できる最適なパッケージの組み合わせを作り出します。
APT には「パッケージソースのリスト」を与える必要があります。つまり /etc/apt/sources.list には Debian パッケージを公開しているさまざまなリポジトリ (つまり「ソース」) が記載されています。APT はそれぞれのソースで公開されているパッケージのリストを取り込みます。具体的に言うと、バイナリパッケージソースの場合は Packages.xz ファイルまたは別の方法で圧縮されたファイル (Packages.gzPackages.bz2)、ソースパッケージソースの場合は Sources.xz ファイルまたは別の方法で圧縮されたファイルをダウンロードして、内容を解析して、パッケージのリストを取り込みます。これらのファイルの古いコピーが既にあるのなら、APT は差分だけをダウンロードしてファイルを更新することも可能です (補注TIP 増分アップグレード」を参照してください)。

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

6.1.1. 構文

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

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

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

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

# セキュリティ更新
deb http://security.debian.org/ stretch/updates main contrib non-free
deb-src http://security.debian.org/ stretch/updates main contrib non-free

## Debian アーカイブミラー

# ベースリポジトリ
deb http://deb.debian.org/debian stretch main contrib non-free
deb-src http://deb.debian.org/debian stretch main contrib non-free

# 安定版更新
deb http://deb.debian.org/debian stretch-updates main contrib non-free
deb-src http://deb.debian.org/debian stretch-updates main contrib non-free

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

6.1.2.1. セキュリティ更新

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

6.1.2.2. 安定版更新

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

6.1.2.3. 提案された更新

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

6.1.2.4. 安定版バックポート

stable-backports リポジトリは「パッケージのバックポート」をホストしています。「パッケージのバックポート」という用語は古いディストリビューション (通常は安定版) 用に再コンパイルした最新ソフトウェアのパッケージを指す言葉です。
安定版ディストリビューションの公開から少し時間が経っただけで、多くのソフトウェアプロジェクトが新バージョンをリリースします。しかしながら、ソフトウェアの新バージョンは現在の安定版に組み込まれません (安定版に組み込まれるのはセキュリティ問題などの最も重要な問題に対する修正に限られています)。安定性の観点からテスト版不安定版ディストリビューションを使うのは危険過ぎると考える安定版のユーザ向けに、パッケージメンテナはしばしば安定版向けに最新のソフトウェアアプリケーションを再コンパイルして提供することがあります。バックポートされたパッケージを使うことにより、安定版のユーザはシステムの不安定性をバックポートされたパッケージに起因する不安定性だけに制限することが可能です。
stable-backports に収録されているバックポートは常にテスト版で利用できるパッケージから作成されます。このおかげで、次の Debian 安定版リリースが利用できるようになったら、すべてのインストール済みバックポートパッケージはそれに対応する安定版から提供されたパッケージにアップグレードできることが保証されています。
stable-backports リポジトリはパッケージの新しいバージョンを提供しますが、APT は以下に示すように明確な指示を出さない限り (または以前に同じバックポートの古いバージョンをインストールしていない限り) バックポートパッケージをインストールしません。
$ sudo apt-get install package/stretch-backports
$ sudo apt-get install -t stretch-backports package

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

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

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

# 不安定版
deb http://deb.debian.org/debian unstable main contrib non-free
deb-src http://deb.debian.org/debian unstable main contrib non-free

# テスト版
deb http://deb.debian.org/debian testing main contrib non-free
deb-src http://deb.debian.org/debian testing main contrib non-free

# 安定版
deb http://deb.debian.org/debian stable main contrib non-free
deb-src http://deb.debian.org/debian stable main contrib non-free

# セキュリティ更新
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 設定を使って (第 6.2.3 節「システムのアップグレード」をご覧ください) APT に他のディストリビューションから (今回の場合テスト版から) パッケージを取得するよう伝えます。
ここで指定するリポジトリは 1 種類のバージョンに対するリポジトリだけでも十分なのに、3 種類のバージョンに対するリポジトリを含めているのには正当な理由があります。テスト版のユーザなら、あるパッケージのテスト版に含まれるバージョンが厄介なバグの影響を受けている場合、そのパッケージを不安定版に含まれる修正済みバージョンにアップグレードできればうれしいでしょう。逆に、不安定版のユーザなら、あるパッケージの不安定版に含まれるバージョンに前のバージョンになかった不具合がある場合、そのパッケージをテスト版に含まれる (おそらく動く) バージョンにダウングレードすることも可能です。
ここに安定版用のリポジトリが含まれている点については異論があるかもしれませんが、こうすることで開発版から削除されたパッケージを入手できるようになります。また、最新安定版リリース以降に変更さていないパッケージの最新更新を手に入れることも保証されます。

6.1.3.1. 実験版リポジトリ

実験版パッケージのアーカイブはすべての Debian アーカイブミラーに存在し、品質基準を満たしていないためにまだ不安定版に収録されていないパッケージを含んでいます。すなわち、実験版に含まれるパッケージはソフトウェアの開発版バージョンか先行バージョン (アルファ、ベータ、リリース候補など) であることが多いです。パッケージに対する一連の修正によって問題が引き起こされる可能性がある場合も、パッケージは実験版に送られます。メンテナは、重要な問題を取り扱う能力を持つ熟練ユーザの助けを借りて、その問題を明らかにしようとします。この最初のステージの後、パッケージは不安定版に移動されます。不安定版に移動されたパッケージはより多くのユーザに配布され、より詳細にテストされます。
実験版リポジトリを使うのは通常、システムを破壊したり修復することを気にしないユーザです。実験版リポジトリを使うユーザは必要に応じて試してみたいか使ってみたいと思ったパッケージを実験版からシステムに取り込むことができます。これはまさに Debian が実験版を活用する時の方法です。なぜなら、実験版リポジトリを APT の sources.list ファイルに追加しても、実験版パッケージを体系的に利用することにはならないからです。実験版リポジトリを追加するには以下を sources.list ファイルに追加します。
deb http://deb.debian.org/debian experimental main contrib non-free

6.1.4. 代替ミラーの利用

本章で載せた sources.list の例は deb.debian.og でホストされているパッケージリポジトリを使っています。これらの URL を使うことで、ユーザは自分に近いサーバへ転送されます。転送先のサーバはコンテンツデリバリネットワーク (CDN) によって管理されています。コンテンツデリバリネットワークの主な役割は世界中にファイルのコピーを複数保存し、それらをユーザに可能な限り素早く配送することです。Debian に協力している CDN 会社は Debian パートナーであり、Debian に自社のサービスを無償提供しています。Debian はこれらのサーバを 1 つも管理していませんが、すべてのアーカイブは GPG 署名で保護されているために、この点は問題ではありません。
あなたがこだわるタイプで deb.debian.org の性能に満足できないなら、以下の公式ミラーリストからさらに良いミラーを探してみてください:
どのミラーを選べばよいかわからないなら、公式のミラーリストは役に立ちません。そんな人のために、Debian は ftp.country-code.debian.org という (例: USA 用に ftp.us.debian.org、フランス用に ftp.fr.debian.org など) DNS エントリを整備しています。数多くの国に対するエントリが用意されていますし、その国の中で最良のミラー (複数個の場合もあります) に転送されます。
deb.debian.org の代替として、過去に httpredir.debian.org がありました。このサービスはユーザに近いミラーを見極め (主に GeoIP を使って公式ミラーから選び)、APT リクエストをそのミラーに転送するものでした。このサービスは信頼性の懸念が原因で既に停止しており、httpredir.debian.org では deb.debian.org と同じ CDN に基づくサービスが提供されています。

6.1.5. 非公式リソース、mentors.debian.net

Debian パッケージの非公式ソースはたくさんあります。非公式ソースはソフトウェアを再コンパイルした熟練ユーザ (Ubuntu は Personal Package Archive サービスを提供することで熟練ユーザの提供する非公式ソースを普及させました)、自分の創作物を誰でも利用できる状態にするプログラマ、自分のパッケージの先行バージョンをオンラインで提供する Debian 開発者によって提供されています。
mentors.debian.net サイトは興味深いものです (ただしこのサイトが配布しているのはソースパッケージだけです)。なぜなら mentors.debian.net には、パッケージの組み込み過程を経ずに、公式 Debian 開発者の候補者や Debian パッケージを作りたいと望むボランティアが作成したパッケージが集められているからです。mentors.debian.net に集められたパッケージは、品質保証のないまま、利用できるようになっています。このため、起源と整合性を必ず確認し、稼働中のシステムでパッケージを使う前にパッケージを必ずテストしてください。
あるパッケージをインストールすることは、パッケージの作者に root 権限を与えることを意味しています。なぜなら、パッケージ作者は root 権限で実行される初期化スクリプトの内容を決定するからです。公式 Debian パッケージは、パッケージの起源と整合性が確認できるように、選出され審査を受けたボランティアとパッケージの内容の責任を請け負うことができるボランティアによって作成されます。
一般に、出自が不明で公式 Debian サーバの 1 つでホストされていないパッケージには警戒してください。つまり、作者の信頼度を評価し、パッケージの整合性を確認してください。

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

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