恥は/dev/nullへ by 初心者

プログラミング初心者がのろのろと学んだことをつづっています♪

Debianメモ(2) パッケージやシステムのupgradeとログファイル

upgrade系コマンドについて、Debian Administrator's Handbookを読みました(ただ、目新しい知識は余りありませんでした^^;。distributionを指定してupgradeする方法くらいだったような気がします。)。

 

 

この記事の情報源

buster用のDebian Administrator's Handbookを元にして、この記事を書いています。
https://debian-handbook.info/

 

本記事では、以下「buster用ハンドブック」と記述します。

 

 

パッケージのアップデート

先にapt updateを行った上で、以下のいずれかのコマンドを実行します。

apt upgrade
apt-get upgrade
aptitude safe-upgrade

このうち、(aptやaptitudeに比べると)apt-getはやや厳しく、事前にインストールされていないパッケージのインストールを拒む、とbusterハンドブックに書かれています。aptやaptitudeは、必要ならマシン上に存在しないパッケージもインストールするということでしょうか・・・?

この点は他のサイトを後日調べてみることにします。

 

distributionを指定してアップグレード

アップグレードされたパッケージを探す時に、特定のdistribution(stable版、unstable版、buster、stretchなど)を指定するには、aptに対して -t オプションか --target-releaseオプションを使用します。

apt -t stable upgrade

 

毎回指定するのが面倒な場合は、/etc/apt/apt.conf.d/local に以下のように記述します。

APT::Default-Release "stable"

 

システム全体のアップグレード

システム全体のアップグレードには以下のいずれかのコマンドを使います。

apt full-upgrade
aptitude full-upgrade
apt-get dist-upgrade

 

apt や aptitude の場合は full-upgrade を使いますが、以下のようにdist-upgrade を使うこともできるそうです。

apt dist-upgrade
aptitude dist-upgrade

 

ログファイル

apt等でアップグレードした内容は以下のログファイルにあります。

/var/log/apt/history.log
/var/log/apt/term.log

 

一方、dpkgのログは次のファイルに記述されています。

/var/log/dpkg.log

 

APTの設定ファイル等

/etc/apt/apt.conf.d/ ディレクトリ、または /etc/apt/apt.conf ファイルに指示を記述することでAPTの挙動を設定することができますが、busterハンドブックには余り詳しいことが書かれておらず、「man apt.conf」を読みましょうとのことでした。
実際、それが一番良いと思います。

 

.d で終わるディレクト

名前が .d で終わるディレクトリには、複数の設定ファイルが入っています。

たとえば、/etc/apt/apt.conf.d/ にはAPTに対する指示が記述されたファイルがあります。


APTはそれらのファイルをアルファベット順に読み込むため、最初の方でなされた指示を最後の指示によって変更することができます。busterハンドブックには「この仕組みが、マシンの管理者やパッケージのメンテナーに柔軟性をもたらす。」と書かれています。

 

外部スクリプトが .dディレクトリにある設定ファイルを結合して設定ファイルを自動生成するケースがあるようです。この場合の注意点について、busterハンドブックに次のように書かれています。

 

Depending on the application, the .d directory is used directly or managed by an
external script which will concatenate all the files to create the configuration file
itself. It is important to execute the script after any change in that directory so
that the most recent modifications are taken into account. In the same way, it is
important not to work directly in the configuration file created automatically, since
everything would be lost at the next execution of the script.

 

(テキトーな訳)
アプリケーションによっては .d ディレクトリを外部スクリプトが直接利用したり管理したりします。このスクリプトは全てのファイルを結合して設定ファイルを作り出します。
.d ディレクトリに何か変更を加えた後は、直近の変更を反映させるために、このスクリプトを実行することが重要です。
また、外部スクリプトにより自動生成された設定ファイルを直接変更してはいけません。次にスクリプトを実行した時に変更内容が全て失われてしまうからです。

 

/usr/share/doc/パッケージ名/README.Debian

当たり前ですが、/usr/share/doc/パッケージ名/README.Debian を読むのは大切ですね。busterハンドブックに次の記述があります。

 

Without a .d directory, it is impossible for an external package to change the settings of a program without modifying its configuration file. Instead it must invite the user to do it themselves and lists the operations to be done in the file
/usr/share/doc/package/README.Debian.

 

(テキトーな訳)
.d ディレクトリが無い場合、設定ファイルを変更せずに外部パッケージがプログラムの設定を変更することはできません。代わりに、ユーザーが設定を変更するように案内し、/usr/share/doc/パッケージ名/README.Debian に必要な作業内容を一通り記述しておく必要があります。