それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Debian/ubuntu のapt自動アップデートのUnattendedUpgradesを設定する

Debian の apt 更新がめんどくさいのでなんとかする。

昔は cron-apt でやってたけど、今時はどうするのかなーと思って調べてたらUnattendedUpgradesがあったのでコレを設定することに。

Debian Wikiに従ってインストール

sudo apt install unattended-upgrades apt-listchanges

apt-listchanges は無くても良さそう。apt-listchangesはメールで更新の通知をするツール。

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

sudo dpkg-reconfigure -plow unattended-upgrades

アップグレードを有効にする。

sudo -e /etc/apt/apt.conf.d/20auto-upgrades

定期的にアップグレードとパッケージリストの更新を有効にする。

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

自動更新の確認

sudo unattended-upgrades --dry-run

dry-run で自動更新の設定と動作をチェックできる。

更新するパッケージの指定と除外はここで設定できる

takuya@orangepizero:~$ cat  /etc/apt/apt.conf.d/50unattended-upgrades | head
// Unattended-Upgrade::Origins-Pattern controls which packages are
// upgraded.
//
// Lines below have the format format is "keyword=value,...".  A
// package will be upgraded only if the values in its metadata match
// all the supplied keywords in a line.  (In other words, omitted
// keywords are wild cards.) The keywords originate from the Release
// file, but several aliases are accepted.  The accepted keywords are:
//   a,archive,suite (eg, "stable")
//   c,component     (eg, "main", "crontrib", "non-free")

設定が不安なら dpkg-recongfigure でも出来る

sudo dpkg-reconfigure -plow unattended-upgrades

no を選ぶと、/etc などのファイル更新でどっちを優先するか決められる。

設定ファイル更新されるの嫌だから、ローカル優先しておいた。

もし更新するパッケージを指定するなら

以下のファイルにアレコレ書いて、更新するパッケージを指定する。 デフォルトで大丈夫だと思うのですが。更新したら動かなくなる野良ビルドドライバとか入ってたら linux-header とかカーネルの更新は避けたいところだったりする。

sudo -e /etc/apt/apt.conf.d/50unattended-upgrades

たとえば、gitlab-ce の パッケージを指定した例。

gitlab-ce をapt に行を追加していて、ominibus パッケージとして使っている場合

// Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
    "${distro_id}:${distro_codename}-updates";
    // この行を追加
    "o=*packages.gitlab.com/gitlab/gitlab-ce,codename=${distro_codename}";

このようにすると apt に追加した gitlab のパッケージが自動更新の対象になる。

もし自身でapt に追加していたらこのようにする。通常は debian の updates / security を自動インストールしてくれる。

除外したい場合はブラックリストにパッケージ名を書く

アップデートの実行ログ

アップデートの実行ログは /var/log/unattended-upgrades/unattended-upgrades.log に書かれる。

また、dpkg のログが /var/log/dpkg.log に記載されるので、自動更新のヒストリ(履歴・実行記録)をたまに見てやるといい。

参考資料

2021-11-23

ログについて記述を追加