Linux Mint 21.1 に systemd 249.11-0ubuntu3.7 というアップデートが配信されたので早速アップデートしたものの、systemd 自体のアップデートってどうやって反映させるの?ということで調べてみました。
アップデートの内容がセキュリティ関連ということですぐさま実施しましたが、Linux kernel だともう PC を再起動するしかないんですが、systemd 自体のアップデートはどうすればいいんでしょうか?
とりあえず、systemctl daemon-reload はかけておきましたが、これで完了?でいいのかしら?
ということで、調べてみるとプロセス単位で再起動が必要なものをリストアップしてくれるツールが存在しているということです。Debian 向けとしては checkrestart というコマンドで、具体的には debian-goodies というパッケージをインストールします。
$ checkrestart -a コマンド 'checkrestart' が見つかりません。次の方法でインストールできます: sudo apt install debian-goodies
debian-goodies は標準ではインストールされていないようなので、手動でインストールします。
$ apt install debian-goodies パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 状態情報を読み取っています... 完了 以下の追加パッケージがインストールされます: autoconf automake autopoint autotools-dev debhelper debugedit dh-autoreconf dh-strip-nondeterminism dwz elfutils equivs libarchive-cpio-perl libasm1 libdebhelper-perl libfile-slurper-perl libfile-stripnondeterminism-perl libfile-which-perl libltdl-dev libmail-sendmail-perl libsub-override-perl libsys-hostname-long-perl libtool po-debconf 提案パッケージ: autoconf-archive gnu-standards autoconf-doc dh-make apt-file konqueror popularity-contest libtool-doc gfortran | fortran95-compiler gcj-jdk libmail-box-perl 以下のパッケージが新たにインストールされます: autoconf automake autopoint autotools-dev debhelper debian-goodies debugedit dh-autoreconf dh-strip-nondeterminism dwz elfutils equivs libarchive-cpio-perl libasm1 libdebhelper-perl libfile-slurper-perl libfile-stripnondeterminism-perl libfile-which-perl libltdl-dev libmail-sendmail-perl libsub-override-perl libsys-hostname-long-perl libtool po-debconf アップグレード: 0 個、新規インストール: 24 個、削除: 0 個、保留: 1 個。 3,794 kB のアーカイブを取得する必要があります。 この操作後に追加で 12.9 MB のディスク容量が消費されます。 続行しますか? [Y/n]
思っていたよりもたくさんの関連パッケージが必要になるみたいです。でもまあ、インストールしてみます。
インストールが完了したので、さっそく checkrestart を試してみましょう。
$ sudo checkrestart -a
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
lsof: WARNING: can't stat() fuse.portal file system /run/user/1000/doc
Output information may be incomplete.
Found 116 processes using old versions of upgraded files
(74 distinct programs)
(43 distinct packages)
Of these, 17 seem to contain systemd service definitions or init scripts which can be used to restart them.
The following packages seem to have definitions that could be used
to restart their services:
accountsservice:
968 /usr/libexec/accounts-daemon
avahi-daemon:
973 /usr/sbin/avahi-daemon
1013 /usr/sbin/avahi-daemon
network-manager:
976 /usr/sbin/NetworkManager
irqbalance:
982 /usr/sbin/irqbalance
networkd-dispatcher:
995 /usr/bin/networkd-dispatcher
polkitd:
996 /usr/libexec/polkitd
rsyslog:
997 /usr/sbin/rsyslogd
udisks2:
1005 /usr/libexec/udisks2/udisksd
modemmanager:
1130 /usr/sbin/ModemManager
rtkit:
1221 /usr/libexec/rtkit-daemon
upower:
1274 /usr/libexec/upowerd
lightdm:
1287 /usr/sbin/lightdm
kerneloops:
1401 /usr/sbin/kerneloops
1403 /usr/sbin/kerneloops
colord:
1622 /usr/libexec/colord
packagekit:
3491 /usr/libexec/packagekitd
cups-daemon:
76907 /usr/sbin/cupsd
77192 /usr/lib/cups/notifier/dbus
cups-browsed:
76918 /usr/sbin/cups-browsed
These are the systemd services:
systemctl restart accounts-daemon.service
systemctl restart NetworkManager-wait-online.service
systemctl restart NetworkManager-dispatcher.service
systemctl restart nm-priv-helper.service
systemctl restart NetworkManager.service
systemctl restart networkd-dispatcher.service
systemctl restart polkit.service
systemctl restart dmesg.service
systemctl restart rsyslog.service
systemctl restart udisks2.service
systemctl restart ModemManager.service
systemctl restart rtkit-daemon.service
systemctl restart upower.service
systemctl restart colord.service
systemctl restart packagekit-offline-update.service
systemctl restart packagekit.service
These are the initd scripts:
service avahi-daemon restart
service irqbalance restart
service lightdm restart
service kerneloops restart
service cups restart
service cups-browsed restart
These processes (26) do not seem to have an associated init script to restart them:
xserver-xorg-core:
1160 /usr/lib/xorg/Xorg
pipewire-bin:
1424 /usr/bin/pipewire
1425 /usr/bin/pipewire
wireplumber:
1426 /usr/bin/wireplumber
cinnamon-session:
1432 /usr/bin/cinnamon-session
fcitx5:
1518 /usr/bin/fcitx5
at-spi2-core:
1535 /usr/libexec/at-spi-bus-launcher
1545 /usr/libexec/at-spi2-registryd
cinnamon-settings-daemon:
1556 /usr/libexec/csd-background
1558 /usr/libexec/csd-wacom
1561 /usr/libexec/csd-screensaver-proxy
1562 /usr/libexec/csd-color
1564 /usr/libexec/csd-xsettings
1572 /usr/libexec/csd-a11y-settings
1575 /usr/libexec/csd-housekeeping
1576 /usr/libexec/csd-power
1580 /usr/libexec/csd-clipboard
1583 /usr/libexec/csd-media-keys
1586 /usr/libexec/csd-print-notifications
1587 /usr/libexec/csd-automount
1588 /usr/libexec/csd-keyboard
1655 /usr/libexec/csd-printer
gvfs-daemons:
1630 /usr/libexec/gvfs-udisks2-volume-monitor
1804 /usr/libexec/gvfsd-metadata
gvfs-backends:
1660 /usr/libexec/gvfs-gphoto2-volume-monitor
1665 /usr/libexec/gvfs-mtp-volume-monitor
2330 /usr/libexec/gvfsd-network
2344 /usr/libexec/gvfsd-dnssd
16382 /usr/libexec/gvfsd-http
gnome-online-accounts:
1679 /usr/libexec/goa-daemon
1686 /usr/libexec/goa-identity-service
libproxy1-plugin-gsettings:amd64:
1694 /usr/lib/x86_64-linux-gnu/libproxy/0.4.17/pxgsettings
1849 /usr/lib/x86_64-linux-gnu/libproxy/0.4.17/pxgsettings
1907 /usr/lib/x86_64-linux-gnu/libproxy/0.4.17/pxgsettings
2388 /usr/lib/x86_64-linux-gnu/libproxy/0.4.17/pxgsettings
python3.10-minimal:
1701 /usr/bin/python3.10
1760 /usr/bin/python3.10
2131 /usr/bin/python3.10
2204 /usr/bin/python3.10
cinnamon:
1704 /usr/bin/cinnamon
libxapp1:amd64:
1734 /usr/libexec/xapps/sn-watcher/xapp-sn-watcher
evolution-data-server:
1747 /usr/libexec/evolution-data-server/evolution-alarm-notify
1792 /usr/libexec/evolution-source-registry
1814 /usr/libexec/evolution-calendar-factory
1871 /usr/libexec/evolution-addressbook-factory
policykit-1-gnome:
1753 /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1
nemo:
1755 /usr/bin/nemo-desktop
network-manager-gnome:
1756 /usr/bin/nm-applet
gnome-terminal:
2010 /usr/libexec/gnome-terminal-server
system-config-printer:
2071 /usr/share/system-config-printer/applet.py
sticky:
2072 /usr/lib/sticky/sticky.py
xdg-desktop-portal:
2363 /usr/libexec/xdg-desktop-portal
2367 /usr/libexec/xdg-document-portal
transmission-gtk:
69206 /usr/bin/transmission-gtk
xdg-dbus-proxy:
77229 /usr/bin/xdg-dbus-proxy
99076 /usr/bin/xdg-dbus-proxy
firefox:
77883 /usr/lib/firefox/firefox-bin
77975 /usr/lib/firefox/firefox-bin
78020 /usr/lib/firefox/firefox-bin
78162 /usr/lib/firefox/firefox-bin
78448 /usr/lib/firefox/firefox-bin
78484 /usr/lib/firefox/firefox-bin
78526 /usr/lib/firefox/firefox-bin
78652 /usr/lib/firefox/firefox-bin
78654 /usr/lib/firefox/firefox-bin
95927 /usr/lib/firefox/firefox-bin
97673 /usr/lib/firefox/firefox-bin
97716 /usr/lib/firefox/firefox-bin
105366 /usr/lib/firefox/firefox-bin
106405 /usr/lib/firefox/firefox-bin
110796 /usr/lib/firefox/firefox-bin
112120 /usr/lib/firefox/firefox-bin
114249 /usr/lib/firefox/firefox-bin
114543 /usr/lib/firefox/firefox-bin
115854 /usr/lib/firefox/firefox-bin
115909 /usr/lib/firefox/firefox-bin
116034 /usr/lib/firefox/firefox-bin
116037 /usr/lib/firefox/firefox-bin
116088 /usr/lib/firefox/firefox-bin
116193 /usr/lib/firefox/firefox-bin
xdg-desktop-portal-gtk:
100091 /usr/libexec/xdg-desktop-portal-gtk
思っていたのよりもかなりたくさんのプロセスを再起動しなければならないことが判明しました。サーバー用途で使っていてどうしても再起動が難しい場合は仕方ないとしても、デスクトップ Linux であれば素直に PC を再起動した方が速いですね。
というわけで、systemd 自体のアップデートをした時は PC を再起動するのが手っ取り早い、という知見を得ました。
