yumの定時アップデート処理について。
さて、開発用・・・とはいえど。本番用もあるわけで。で、調べなくちゃ行けないのがパッケージのアップデート処理。というわけで、まずはさくっとyumパッケージ自体の中身を見てみます。
$ rpm -ql yum /etc/cron.daily/yum.cron /etc/cron.weekly/yum.cron /etc/logrotate.d/yum /etc/rc.d/init.d/yum /etc/yum /etc/yum.conf /etc/yum.repos.d /etc/yum/yum-daily.yum /usr/bin/yum /usr/bin/yum-arch /usr/lib/python2.3/site-packages/repomd ... /usr/lib/python2.3/site-packages/yum/transactioninfo.pyc /usr/share/doc/yum-2.4.3 ... /usr/share/man/man5/yum.conf.5.gz ... /usr/share/yum-cli/callback.py ... /usr/share/yum-cli/yummain.pyc /var/cache/yum
はぁん。で、各ファイルをざっと見てまとめ直すと。
/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
/etc/yum/yum-daily.yumについては、shellオプションで起動されたときに対する「入力」が書かれていた。
で、ifでファイル存在をチェックしている。このロックファイルはどこで作られるのかというと。
/etc/rc.d/init.d/yum
これ、startでロックファイルを作成、stopでロックファイルを削除する仕組み。はぁん。つまり、cron.dailyが実行されるのを前提として、そのスイッチの役目になっているわけだ。
他。
というわけで、おおよそのポイントは押さえ終わった。yumのオプションとかについては省略。--helpやmanを見れば済む。
後は関連する雑多なファイルについて。
- /etc/cron.weekly/yum.cron
- "clean package"オプションで実行される。yumのキャッシュディレクトリ内の、ダウンロードしたパッケージファイルを削除してくれる。
- /etc/logrotate.d/yum
- /var/log/yum.log のlogrotate設定。
- /etc/yum.conf
- man (5) yum.conf を参照。
- /var/cache/yum
- yum.confの"cachedir"のデフォルト。
こんな感じ。
ふーん・・・じゃあ結局、yumをdefaultでONにしておけば、特に、まぁ・・・問題はなさそうだね。
・・・ってちょっとまて。もうちょっと慎重に。伊達に、TurboLinuxでApacheのパッケージ更新で何度も涙を流してはいない。(設定ファイル上書きされてマジ怒り心頭)
cron.dailyのyum.cronをもうちょっと慎重に見てみよう。
/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
まず最初の行は、"yumパッケージそれ自体"のアップデートを行っている。-eはエラーレベル、-dはデバッグレベル。-yは何かプロンプトされたら全てYesにするオプション。
二行目が問題で、shellモードで起動するよう指示し、入力内容は yum-daily.yum を使うよう指示している。shellモードって何?ということで、man yumを見てると
yum-shell(8)
という記述が。というわけで、"man 8 yum-shell"。
え〜〜っと・・・。まぁ単純で、yumのコマンドラインオプションをそのまま打ち込めますよ、ということらしい。
# yum list ... # yum update ... ...
と打たなければいけなかったのが、
# yum shell list ... update ...
となるわけ。
では実際に、yumのshellに渡されるファイル、/etc/yum/yum-daily.yumの中身は
update ts run exit
えーっと。ようするに、アップデート「しちゃう」わけだ・・・。
まぁ・・・いっか。どちらかというと check-update した結果をメールで寄越してお仕舞いで、アップデートは管理者自身で、というのもイイかなとは思ってたんだけど。
但し、すっぴんのインストールしたてのCentOS4でコレやると、かなりの数のパッケージがアップデートかかるので。最初からONにするのはやめておいた方が良いかも。
それはそれとして、CentOSについてはパッケージアップデートのXMLフィードとかは特に用意してないんだな。TurboLinuxだと
http://www.turbolinux.co.jp/security/index.rdf
から読めるので、結構便利なんだが・・・。まぁ、いっか。
うん、とりあえずこれはこれで、yumについていろいろ理解できたので良しとしよう。なんというか・・・アレだな。パッケージ自体はRPMで昔通りなんだけど、「リポジトリ」という概念をサポートする為のツールとして、yumがあるんだろな・・・。
それにしても、時流に取り残されてるな。自分。