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 を再起動するのが手っ取り早い、という知見を得ました。