ubuntu のインストール直後の調整 (その 4)

[自動アップグレードの設定]

先の記事でメールサーバーをインストールしたので、次にインストールされているパッケージのアップグレードを自動的かつ定期的に行うためのパッケージをインストールする。
ここでインストールするパッケージは cron-apt というパッケージだ。

実は ubuntu でパッケージのアップグレードを自動的かつ定期的に行わせること自体は、そんなに難しいことではない。
sudo aptitude update; sudo aptitude –y safe-upgrade というコマンドと、cron の仕組みを知っていれば簡単に作ることができる。
それでもきちんとパッケージ化されているものを使う方が (設定の仕方を知っていれば) 圧倒的に楽で便利なことは間違いない。

それでは cron-apt パッケージをインストールするために、以下のコマンドを実行する。

ここではパッケージの操作 (インストール、アンインストール) に aptitude コマンドを使っている。
ubuntu (debian 系 linux ディストリビューション) ではパッケージのインストール、アンインストールを行うコマンドが複数あるが、インストールされたパッケージが明示的に指定されたのか、依存関係によって非明示的にインストールされたのかを管理する方法が別であるため、これらを混在させて使用しない方が望ましい。

パスワードを訊いてきたらログインしたときのパスワードを入力する (直前の sudo コマンドの使用から時間が空いていなければパスワードは訊かれない。)

cron-apt と bsd-mailx の二つのパッケージをインストールして良いか確認してくるので ‘y’ を入力して Enter を押す (すでに bsd-mailx パッケージがインストールされているなら、bsd-mailx は表示されない。)
パッケージのダウンロードと展開が順次行われ、それらが終わるとコマンドプロンプトが表示される。
Postfix をインストールしたときとは異なり、設定のためのダイアログが表示されることはない。

cron-apt の設定は /etc/cron-apt/config ファイルを直接編集することで行う。
また cron-apt をインストールしたときに作成される /etc/cron-apt/config ファイルでは、/etc/cron-apt/action.d ディレクトリや /etc/cron-apt/config.d ディレクトリなど、/etc/cron-apt ディレクトリ以下のディレクトリに含まれるファイルを読み込むようになっている。
/etc/cron-apt/config ファイルを編集する際には、この /etc/cron-apt ディレクトリ以下のディレクトリに含まれるファイルを読み込むようになっている箇所は、手を触れない方が良いだろう。

インストールしたままで何も設定変更しなかった場合、cron-apt は以下のコマンドを定期的に実行し、コマンド実行中に何らかのエラーが起きると、それを root 宛てにメールで通知されるようになっている。

残念なことに、これでは期待通りの動作にならないことが、すぐに分かる。
これだとアップグレード対象のパッケージをダウンロードしているだけだ。
更に、パッケージの操作には apt-get コマンドを使っている。

これまで一貫して、パッケージのインストールに aptitude コマンドを使ってきた。
繰り返しになるが、aptitude と apt-get ではパッケージの管理方法 (依存関係による自動インストール状態の管理) が異なるために、混在させて使うことはしたくない。
そこでまずは cron-apt が使うパッケージ管理コマンドを apt-get から aptitude に変更する。
そのためには /etc/cron-apt/config ファイル中の APTCOMMAND エントリを aptitude にすればよい。

通知メールの宛先も root から別のものに変えておく。
/etc/cron-apt/config ファイル中の MAILTO エントリを root から upgrede-report にしておこう。
これで cron-apt からのメール通知は upgrede-report 宛てに送られるようになる。
なおここで指定した宛先はドメイン部が無いので、/etc/aliases にupgrede-report 宛てのメールを実在するメールアドレスに転送するように設定するのを忘れないようにする。

これら 2 箇所を変更した /etc/cron-apt/config の内容を以下に記載する。

/etc/cron-apt/config ファイルを 2 箇所変更したことで、cron-apt は以下のコマンドを定期的に実行し、コマンド実行中に何らかのエラーが起きると、それを cupgrede-report 宛てにメールで通知するようになった。

しかし、未だにアップグレード対象のパッケージをダウンロードしているだけで、実際にアップグレードするようにはなっていない。
実際にアップグレードまでを行うには、/etc/cron-apt/action.d ディレクトリにファイルを一つ追加すればいい。

/etc/cron-apt/action.d ディレクトリには、既に /etc/cron-apt/acriont.d/0-update/etc/cron-apt/acriont.d/3-download の二つのファイルがある。
これらのファイルの内容は以下のようになっており、各行の頭に /etc/cron-apt/config ファイルの APTCOMMAND エントリで指定したコマンドを付け、ファイル名の順番に並べると、先に挙げた cron-apt が実行するコマンドになる。

つまり、アップグレードを行うコマンドになるような内容で、3-donwload よりも後になる名前のファイルをこの /etc/cron-apt/action.d ディレクトリに作成すればいいということだ。
具体的には 4-upgrade という名前で以下の内容のファイルを /etc/cron-atp/action.d ディレクトリに作成するだけだ。

これで cron-apt が以下のコマンドを実行するようになる。

ところで、cron-apt は毎日午前 4 時に定期的に実行されるようになっている。
これは /etc/cron.d/cron-apt ファイルで指定されている。
/etc/cron.d ディレクトリにあることからも分かるように、cron-apt は定期的な実行には cron を使用している。
起動時刻や回数などを変更したいときは、この /etc/cron.d/cron-apt ファイルを編集すればよい。
このファイルを編集した後に cron デーモンを再起動や再読込をする必要は無い。

関連記事

コメントを残す