OpenSUSE 13: 自動アップデートを設定する

自動アップデートの設定について記述します。

1 自動アップデートを無効にする

デフォルトだとPackageKitが自動アップデートを担っています。

packagekit.serivceがzypperの実行を阻害します。

> sudo zypper -n install git
PackageKit is blocking zypper. This happens if you have an updater
applet or other software management application using PackageKit running.
Tell PackageKit to quit? [yes/no] (no): no
System management is locked by the application with pid 1573
(/usr/lib/packagekitd).
Close this application before trying again.

/usr/lib/packagekitdはpackagekit.serviceが起動したものです。packagekit.serviceを止めるためにはPackageKitパッケージを削除するしかありません。PackageKitを削除するとPackageKitの挙動をGUIで設定できるApperも削除されます。

> sudo zypper -n remove PackageKit

2 PackageKit

デフォルトでインストールされた自動アップデートを担うパッケージです。PackageKitによる自動アップデートは以下のファイルで固定されています。

/etc/cron.daily/packagekit-background.cron
/usr/lib/systemd/system/packagekit.service

/etc/cron.daily/packagekit-background.cronの挙動は/etc/sysconfig/packagekit-backgroundで設定できます。デフォルトでは無効になっています。周期もdailyに固定です。

問題なのは、packagekit.serviceから起動されるpackagekitdが、起動後にしばらくzypperのロックを取ってしまう点です。packagekit.serviceはstaticなのでdisableできません。

> systemctl status packagekit
packagekit.service - PackageKit Daemon
   Loaded: loaded (/usr/lib/systemd/system/packagekit.service; static)
   Active: inactive (dead)

3 YaST Online Update Configuration

"YaST Online Update Configuration"でも自動アップデートができます。

yast2-online-update-configurationをインストールします。

> sudo zypper -n in yast2-online-update-configuration

YaSTを起動します。

> sudo yast

yast2-online-update-configurationをインストールすると、"Software"の項目に"Online Update Configuration"が追加されます。

0001_yast.png

"Online Update Configuration"にて以下の項目を設定できます。

0002_online-update-configuration.png

"Online Update Configuration"では以下を実行しております。以下の項目を辿れば非インタラクティブな設定も可能です。

  • /usr/lib/YaST2/bin/online_updateを/etc/cron.[interval]/opensuse.org-online_updateへコピーする。
  • /etc/sysconfig/automatic_online_updateにて、AOU_AUTO_AGREE_WITH_LICENSESやAOU_INCLUDE_RECOMMENDSの値を設定する。AOU_ENABLE_CRONJOBがfalseの場合は/etc/cron.[interval]/opensuse.org-online_updateは実行されるが、アップデートは実行されない。

3.1 特定の時刻に自動アップデートする

PackageKitを削除してYaST Online Update Configurationを使い、/etc/sysconfig/automatic_online_updateで値を設定した後、crontabで/usr/lib/YaST2/bin/online_updateを実行するジョブを登録します。