パッケージを自動アップデート(yum-updatesd-3.0.1)[FC6]

[サーバの実験室 Redhat/Fedora]

作成 : 2006/11/19

"サーバの実験室"の検索


Fedora Core 5での自動アップデート

Fedora Core 5では、cronで定期的にyumを実行して自動アップデートをしていた。

# /etc/init.d/yum
#!/bin/bash
#
# yum           This shell script enables the automatic use of YUM
#
# Author:       Seth Vidal 
#
# chkconfig:    - 50 01
#
# description:  Enable daily run of yum, a program updater.
# processname:  yum
# config: /etc/yum.conf
#

# source function library
. /etc/rc.d/init.d/functions

lockfile=/var/lock/subsys/yum

RETVAL=0

start() {
        echo -n $"Enabling nightly yum update: "
        touch "$lockfile" && success || failure
        RETVAL=$?
        echo
}

stop() {
        echo -n $"Disabling nightly yum update: "
        rm -f "$lockfile" && success || failure
        RETVAL=$?
        echo
}

restart() {
        stop
        start
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|force-reload)
        restart
        ;;
  reload)
        ;;
  condrestart)
        [ -f "$lockfile" ] && restart
        ;;
  status)
        if [ -f $lockfile ]; then
                echo $"Nightly yum update is enabled."
                RETVAL=0
        else
                echo $"Nightly yum update is disabled."
                RETVAL=3
        fi
        ;;
  *)
        echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
        exit 1
esac

exit $RETVAL
# /etc/cron.daily
#!/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
update
ts run
exit

Fedora Core 6での自動アップデート

Fedora Core 6では、yum-updatesdパッケージを利用して自動アップデートを行う。

注意 yum-updatesd-3.0-6では、PIDファイル(/var/run/yum.pid)を残して、自動アップデートは失敗してしまう。 さっさとyum-updatesdパッケージをアップデートするのが吉。 ちなみに、PIDファイルが残っていると、手動でyumを実行しようとしたときエラーになる。 PIDファイルを削除すれば、実行可能になる。

# yum update
Loading "installonlyn" plugin
Existing lock /var/run/yum.pid: another copy is running. Aborting.

yum-updatesdの設定

yum-updatesdの設定は、/etc/yum/yum-updatesd.confに記述する。

 # /etc/yum/yum-updatesd.conf
[main]
 # アップデートされたパッケージがあるか、チェックする間隔
 # デフォルトの記述だと、3600秒=1時間
# how often to check for new updates (in seconds)
run_interval = 3600
 # なんなのでしょう
# how often to allow checking on request (in seconds)
updaterefresh = 600

 # アップデートをユーザに通知する方法
 # デフォルトの記述だとdbus
 #     dbus : GNOMEを使っていると、パネルに通知されるらしい
 #     email : メールで通知
 #     syslog : syslog(/var/log/messages)に記録
# how to send notifications (valid: dbus, email, syslog)
emit_via = email

 # メールで通知する宛先を指定
email_to = root@localhost
 # メールの送信者を指定
email_from = yum-updatesd@localhost

 # yesを指定すると、自動アップデートを実行
# automatically install updates
do_update = no
 # yesを指定すると、アップデートされたパッケージをダウンロード
# automatically download updates
do_download = no
 # yesを指定すると、アップデートされたファイルとともに、依存関係にあるパッケージもダウンロード
# automatically download deps of updates
do_download_deps = no
 # do_update、do_download、do_download_depsをすべてnoにすると通知だけ行う

yum-updatesdを起動(dbus-daemonも起動)

dbus-daemonが起動していないと、yum-updatesdを起動できないようだ。

# /etc/init.d/yum-updatesd start
Starting yum-updatesd:                                     [  OK  ]

# ps -ef | grep yum
root      2718  2654  0 14:12 pts/0    00:00:00 grep yum

# /etc/init.d/yum-updatesd status
yum-updatesd dead but subsys locked

dbus-daemonを起動してから、yum-updatesdを起動する。

# /etc/init.d/messagebus start
Starting system message bus:                               [  OK  ]

# /etc/init.d/messagebus status
dbus-daemon (pid 4472) is running...

# /etc/init.d/yum-updatesd start
Starting yum-updatesd:                                     [  OK  ]

# ps -ef | grep yum
root      2757     1  6 14:14 pts/0    00:00:00 /usr/bin/python /usr/sbin/yum-updatesd
root      2760  2654  0 14:14 pts/0    00:00:00 grep yum

# /etc/init.d/yum-updatesd status
yum-updatesd (pid 2757) is running...

プロセスが自動的に起動するよう、chkconfigを実行しておく。

# chkconfig messagebus on

# chkconfig yum-updatesd on

自動アップデートを無効(do_update=no)にしたときの通知

emit_via=syslogを指定すると、/var/log/messageに記録される。

Nov  5 15:06:08 localhost yum-updatesd: 21 updates available

emit_via=emailを指定すると、メールで通知される。 デフォルトは、rootさんからrootさん宛。 email_toとemail_fromで、送信先と送信元を変更することができる。

Subject: 21 Updates Available
From: root@localhost.localdomain
To: root@localhost.localdomain


        Hi,
        There are 21 package updates available. Please run the system
        updater.

        Thank You,
        Your Computer

自動アップデートを有効(do_update=yes)にしたときの通知

通知されない.... /var/log/yum.logにログが残る分、cronでyumを実行した方がいいのかなあ。


[サーバの実験室 Redhat/Fedora]