alfort's Blog

Linuxエンジニアのメモ

dnf updateの自動化

Fedoradnf update

Fedoraを使っていると、dnf updateした際にしょっちゅうパッケージの更新がある。

できるだけ新しいものがインストールされるように、なので、自動でアップデートが走るようにしてみた。

だいたいのことはここに書いてある。

fedoraproject.org

やりたいこと

以下のことがやりたい。

  • 自動でパッケージのアップデートが行われる
  • アップデート後に、再起動が必要な場合再起動してくれる(ここはまだできていない)

やること

パッケージのインストール

dnf-automaticを使う。Fedora22以降であればdnfyumでインストールできるようだ。 手元のFedora 32では以下のコマンドでインストールした。

sudo dnf install dnf-automatic

設定の変更

/etc/dnf/automatic.confで設定ができる。 アップデート時のメールなどを飛ばしたりできる。

サービスの起動とその確認

以下でサービスの起動を行う。 enable--nowをつけておくと、サービスの起動自体もできる。

# systemctl enable --now dnf-automatic.timer

サービスの状態の確認は以下でできる。

# systemctl list-timers *dnf-*

ひとまず午前6時ぐらいに動くようになっている。

# systemctl list-timers *dnf-*
NEXT                        LEFT       LAST                        PASSED    UNIT                ACTIVATES
Sat 2020-04-18 15:14:29 JST 23min left Sat 2020-04-18 14:14:29 JST 36min ago dnf-makecache.timer dnf-makecache.service
Sun 2020-04-19 06:01:51 JST 15h left   n/a                         n/a       dnf-automatic.timer dnf-automatic.service

2 timers listed.
Pass --all to see loaded but inactive timers, too.

時間を変更する

デフォルトだと、毎日6:00に実行されるようである。 また、これを変えたい場合には、以下のファイルを編集して再度サービスファイルを読み込ませたらよい。

# vi /usr/lib/systemd/system/dnf-automatic.timer
# systemctl enable --now dnf-automatic.timer

ファイルの中身は以下のように16時からした。

[Unit]
Description=dnf-automatic timer
# See comment in dnf-makecache.service
ConditionPathExists=!/run/ostree-booted
Wants=network-online.target

[Timer]
OnCalendar=*-*-* 16:00
RandomizedDelaySec=60m
Persistent=true
[Install]WantedBy=timers.targe

再度サービスの状況を確認すると、ちゃんと時間を変更することができた。

NEXT                        LEFT          LAST                        PASSED    UNIT                ACTIVATES
Sat 2020-04-18 16:38:06 JST 2min 48s left n/a                         n/a       dnf-automatic.timer dnf-automatic.service
Sat 2020-04-18 17:18:30 JST 43min left    Sat 2020-04-18 16:18:30 JST 16min ago dnf-makecache.timer dnf-makecache.service

再起動に対応する

ここはまだできていないが、いつか対応させたい