orangain flavor

じっくりコトコト煮込んだみかん2。知らないことを知りたい。

unattended-upgradesはインストールしただけでは動かない

2018-06-17追記: パッケージの自動削除について追記しました。検証環境はUbuntu 16.04 LTS x86_64です。

ということを知らなかったので、Debian/Ubuntuでの自動アップデートについて改めて調べてみました。

動作を確認した環境は、Ubuntu Server 12.04 LTS x86_64です。

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

結論から言うと、以下のようにインストールすれば有効になります。既にインストールされている環境では3行目だけを実行すればよいです。

$ sudo apt-get update
$ sudo apt-get install unattended-upgrades
$ sudo dpkg-reconfigure -plow unattended-upgrades  # Choose "Yes"

3行目のコマンドは、以下のファイルを生成してくれます。*1

$ cat /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

不要パッケージの自動削除

自動アップデートを有効にしているとカーネル関連のファイルが溜まってディスクフルになることがあります。これを防ぐために、不要なパッケージを自動削除します。

$ sudo vim /etc/apt/apt.conf.d/50unattended-upgrades

以下の設定をtrueにします。

Unattended-Upgrade::Remove-Unused-Dependencies "true";

ログ

自動アップデートのログは、 /var/log/unattended-upgrades/ 以下に出力されます。 デフォルトでは毎日1回実行されます。

ドキュメント

自動アップデートを有効にする方法は、 /usr/share/doc/unattended-upgrades/README の冒頭に書かれています。

Unattended upgrades
-------------------

This script can upgrade packages automatically and unattended.
However, it is not enabled by default.  Most users enable it via the
Software Sources program (available in System/Administration).

If you would prefer to enable it from the command line, run
"sudo dpkg-reconfigure -plow unattended-upgrades".

ちなみに、 Ubuntu Server Guide には /etc/apt/apt.conf.d/10periodic を以下のように書き換えるという方法が載っています。これでも設定内容は同じことなので動くと思いますが、古い方法らしいです。 *2

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";

参考サイト

*1:-plowは優先度がlow以上の質問を表示するオプションですが、付けなくても変わらなかったので必要なのかよくわからないです。

*2:参考サイトに挙げたServer Faultの質問におけるHendy Irawan氏によれば。