自動アップデートの設定について記述します。
Table of Contents
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"が追加されます。
"Online Update Configuration"にて以下の項目を設定できます。
"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を実行するジョブを登録します。