最近のLinuxは、オンラインでパッケージをアップデートできる仕組みを持っています。Red Hat系のディストリビュージョンでは「yum」、Debian系では「apt」といったソフトウェアがそれにあたります。
これらのソフトウェアを利用し、日々のアップデートを自動監視するにはcronジョブに登録を行います。
RedHat系のOSでは、毎日1回実行されるcronジョブは以下のように/etc/cron.daily/に保存されています。
% ls /etc/cron.daily/
0anacron 0logwatch certwatch logrotate makewhatis.cron mlocate.cron
prelink rpm tetex.cron tmpwatch yum.cron
このディレクトリにはログのローテーションやlocateコマンドのデータベースをアップデートするといったプログラムが含まれています。日々のアップデートの監視には「yum.cron」を利用します。以下は標準的な設定です。
% cat /etc/cron.daily/yum.cron
#!/bin/sh
if [ -f /var/lock/subsys/yum ]; then
/usr/bin/yum -R 120 -e 0 -d 0 -y update yum
/usr/bin/yum -R 10 -e 0 -d 0 -y shell /etc/yum/yum-daily.yum
fi
それぞれの行で指定されているオプションについては以下のような意味があります。
-R |
タイムアウトまでの時間 |
-e、-d |
エラーやデバッグの出力レベル |
-y |
更新があった際に、確認を取らずにすべてのパッケージをアップデート |
表2:yumのオプション
このようにアップデート確認を自動化しておけば、必要なときに管理者権限でyum updateコマンドを実行することでアップデートを行うことができます。
しかし、アップデートの際にはglibcなどのアップデートを行った後に再起動を要するライブラリなどもあるため、ウノウでは以下のように変更しています。
% cat /etc/cron.daily/yum.cron
if [ -f /var/lock/subsys/yum ]; then
#/usr/bin/yum -R 120 -e 0 -d 0 -y update yum
#/usr/bin/yum -R 10 -e 0 -d 0 -y shell /etc/yum/yum-daily.yum
/usr/bin/yum -e 0 -d 0 check-update
fi
「check-update」はアップデートをチェックして表示してくれます。cronでの出力は通常メールとして配信されるため、あらかじめroot宛のメールを管理者が通常利用するメールアドレス宛に送信するように設定しておきます。
% cat /etc/aliases
......
root: ← 送信したいアドレス
このように設定しておくことで、以下のような更新すべきパッケージの情報が毎朝メールされるようになります。
メールの内容
/etc/cron.daily/yum.cron
crontabs.noarch 1.10-8.fc5 updates
rsync.i386 2.6.9-2.fc5 updates
内容を確認したら、以下のように実際のアップデートを行います。
% yum update -y crontab rsync
|