第9章 Debian システムを最新に保つ

目次

9.1. Debian システムを現行版に維持する方法は?
9.1.1. aptitude
9.1.2. apt-get、apt-cdrom
9.1.3. mirror
9.2. パッケージをアップグレードするためにシングルユーザモードに入る必要はありますか?
9.3. こういった .deb アーカイブファイルを全てディスク上に残しておく必要はありますか?
9.4. システムに追加したパッケージの記録を残す方法は? いつ、どのパッケージにアップグレードや削除があったのか知りたいのですが!
9.5. システムを自動的に更新することはできますか?
9.6. 複数のマシンがありますが、更新のダウンロードを一度だけにする方法はありますか?

Debian の目標の一つは継続的にアップグレードできる手段や安全なアップグレードプロセスを提供することです。新しいリリースへのアップグレードを円滑に進められるようにするために常に全力を尽くします。アップグレードプロセスにおいて重要な注意事項がある場合、そのパッケージはユーザに注意喚起し、その際は起こりうる問題の解決方法も提供することがよくあります。

特定のアップグレードについて詳細を説明しているリリースノートにも目を通しておくべきです。これは https://www.debian.org/releases/stable/releasenotes の Debian ウェブサイトにあり、Debian CD や DVD、Blu-Ray ディスクにも収録されています。

9.1. Debian システムを現行版に維持する方法は?

Debian アーカイブに対して単純に匿名FTPで接続し、目的のファイルを見つけるまでディレクトリを細かく調べ、見つけたら取得して dpkg を使ってやっとインストールする、ということもできます。dpkg はそれが実行中のシステムであってもアップグレードされるファイルを所定の位置にインストールすることに注意してください。改訂されたパッケージが、別のパッケージの新しく改訂されたバージョンがインストールされていることを要求することもあり、そのときその別のパッケージがインストールされていない場合はそれをインストールするまでそのパッケージのインストールは失敗します。

Debian の展開はとても速いため、多数の人がこのやり方では時間がかかりすぎることをわかっています。標準的に、新しいパッケージが毎週10以上アップロードされています。この数字は新しい主要リリース直前にはもっと大きくなります。この殺到している状況に対応するためには、多くの人はもっと自動化された方法を好みます。複数の異なるパッケージがこの目的のために利用できます:

9.1.1. aptitude

aptitude は Debian GNU/Linux システム用の推奨されるパッケージ管理フログラムで、「aptitude」 で説明しています。

aptitude を使ってアップグレードできるようにするには、/etc/apt/sources.list ファイルを編集して準備する必要があります。Debian の最新の安定版 (stable) にアップグレードしたい場合は恐らくこれに似たソースを使うことになるでしょう:

deb http://ftp.jp.debian.org/debian/ stable main contrib

ftp.jp.debian.org (日本にあるミラー) の部分はもっと近くて速い Debian ミラーがあればその名前に置き換えてください。さらなる情報については、ミラー一覧 https://www.debian.org/mirror/list を見てください。

あるいは、httpredir.debian.org の転送サービスを使う方法もあります。このサービスの狙いは Debian ミラー選択の問題を解消することです。ユーザの地理的な位置やその他の情報によりファイルの提供に最適なミラーを選択します。この恩恵を活用するには

http://httpredir.debian.org/debian stable main contrib

More details on this can be found in the sources.list(5) manual page.

コマンドラインでシステムを更新するには

aptitude update

続いて

aptitude full-upgrade

を実行します。出てくる質問に全て回答するとシステムはアップグレードされます。

を実行します。aptitude は、ある Debian GNU/Linux リリースから別のリリースにアップグレードするために推奨するツールではないことに注意してください。代わりに apt-get を使ってください。リリース間のアップグレードの際は、リリースノートに目を通すようにしてください。この文書では前のリリースからアップグレードする際に推奨される手順やアップグレード前に考慮すべき既知の問題について詳細に説明しています。

For details, see the manual page aptitude(8), and the file /usr/share/aptitude/README.

9.1.2. apt-get、apt-cdrom

aptitude の代替としてAPTベースのコマンドラインツール apt-get があります (「APT」 で前述しています)。

APTベースのパッケージ処理用コマンドラインツール apt-get はパッケージを簡単、安全にインストール、アップグレードする方法を提供します。

apt-get を利用するには 「aptitude」 と同様に /etc/apt/sources.list ファイルを編集します。

それから

apt-get update

続いて

apt-get dist-upgrade

Answer any questions that might come up, and your system will be upgraded. See also the apt-get(8) manual page, as well as 「APT」.

パッケージのインストールに CD/DVD/BD を使いたい場合は apt-cdrom を使えます。詳細については、リリースノートの「Adding APT sources from optical media」節を見てください。

パッケージを取得、インストールする時点では、/var ディレクトリ階層にパッケージが置かれることに注意してください。パーティションをオーバーフローさせないためには、apt-get cleanapt-get autoclean を使って余計なファイルを削除するかどこか別の場所に移動することを忘れないようにしてください (参考: apt-move を使ってみましょう)。

9.1.3. mirror

この Perl スクリプトや mirror-master というその (オプションの) 管理プログラムを利用して、ディレクトリツリーのユーザが指定した部分を匿名 FTP 経由で指定されたホストから取得することができます。

mirror は特にソフトウェアを大量にダウンロードするのに有用です。最初にファイルをサイトからダウンロードした後、.mirrorinfo というファイルがローカルホストに保存されます。リモートのファイルシステムへの変更は mirror により自動的に追跡されます。このプログラムはこのファイルをリモートシステム上の似たファイルと比較し、変更されたファイルだけをダウンロードします。

mirror プログラムは通常、リモートのディレクトリツリーのローカルコピーを更新するのに有用です。取得するファイルは Debian ファイルである必要はありません。(mirror は Perl スクリプトなので、非 Unix システムでも実行できます)。mirror プログラムはユーザが指定した文字列に該当するファイル名を除外する仕組みを提供していますが、このプログラムは、選択したパッケージだけではなくディレクトリツリー全体をダウンロードすることが目的の場合に最も有用なものとなります。

9.2. パッケージをアップグレードするためにシングルユーザモードに入る必要はありますか?

いいえ。パッケージは実行中のシステムであっても適切にアップグレードされます。Debian には start-stop-daemon プログラムがあり、パッケージのアップグレード中に必要がある場合は実行中のプロセスを停止、再起動します。

9.3. こういった .deb アーカイブファイルを全てディスク上に残しておく必要はありますか?

いいえ。ファイルをディスクにダウンロードしてそのパッケージをインストールした後は例えば aptitude clean を実行してシステムから削除できます。

9.4. システムに追加したパッケージの記録を残す方法は? いつ、どのパッケージにアップグレードや削除があったのか知りたいのですが!

--log-option を dpkg に渡すと dpkg は状態の変更や操作を記録するようになります。dpkg の呼び出し (例えば

2005-12-30 18:10:33 install hello 1.3.18 2.1.1-4

) とその結果 (例えば

2005-12-30 18:10:35 status installed hello 2.1.1-4

) をどちらも記録します。dpkg が発動した操作を全て (aptitude のようなフロントエンドを使って行われた場合でも) 記録したい場合は

log /var/log/dpkg.log

/etc/dpkg/dpkg.cfg に追加します。作成されるログファイルが必ず定期的にローテートされるようにしてください。logrotate を使っている場合、これには

/var/log/dpkg {
  missingok
  notifempty
}

More details on dpkg logging can be found in the dpkg(1) manual page.

aptitude は実行しようとしたパッケージのインストールや削除、アップグレードについて /var/log/aptitude に記録します。その操作の結果はこのファイルには記録されないことに注意してください!

Another way to record your actions is to run your package management session within the script(1) program.

9.5. システムを自動的に更新することはできますか?

はい。cron-apt を使うことができます。このツールは cron ジョブを使ってシステムを一定周期で更新します。デフォルトでは、パッケージ一覧を更新して新しいパッケージをダウンロードするだけで、インストールは行いません。

注意: testingunstable システムでパッケージを自動でアップグレードすることは勧められません。そうした場合、思いも寄らない挙動や気付かないうちにパッケージを削除するといったことがあるかもしれません。

9.6. 複数のマシンがありますが、更新のダウンロードを一度だけにする方法はありますか?

自分のネットワークに Debian マシンが複数ある場合、apt-cacher を使って Debian システムを全て最新に保つと便利です。

apt-cacher はバックエンドからの Packages、Releases、Sources ファイルの更新周期を制限して、どのファイルもプロキシからの実際のリクエストとは無関係に一度だけ取得することにより Debian ミラーに要求される帯域を減らします。apt-cacher は、プロキシに渡すリクエストを元に自動的に Debian HTTP ミラーを構成します。

標準的なキャッシュ用プロキシを既に使っていて全システムでそれを利用するように設定している場合はもちろん同じ効果が得られます。