システムの再起動が必要なパッケージを確認するにはどうすればよいですか?


85

私がしているunattended-upgrade私のUbuntuシステム上で設定します。そのうちの1つにリモートでログインする場合があり、アップグレードを完了するためにシステムを再起動する必要があることを通知するメッセージが表示されます。この通知をトリガーしている特定のパッケージ(またはパッケージのセット)を判別する方法はありますか?

回答:


80

短縮版:

cat /var/run/reboot-required.pkgs

説明:

要求された情報を自動的に抽出する簡単な方法があるようです。

内部.debのファイルを含め、インストール用の制御ファイルがあるpostinst(インストール後に実行します)。

たとえばlinux-image-2.6.35-25-generic_2.6.35-25.44_amd64.deb、に
postinst

my $notifier          = "/usr/share/update-notifier/notify-reboot-required";

my $warn_reboot     = 'Yes';     # Warn that we are installing a version of
                                 # the kernel we are running

そして

# Warn of a reboot
if (-x $notifier) {
 system($notifier);
}

シェルスクリプトが /usr/share/update-notifier/notify-reboot-required更新され
/var/run/reboot-required /var/run/reboot-required.pkgs

後者のファイルには、再起動を要求するパッケージのリストが含まれています。


1
私のシステムでは、ファイル/var/run/reboot-requiredは前日に作成されましたが、/var/run/reboot-required.pkgsUbuntu 16.04.5 LTS にはファイルがありません。
ライオン

25

が存在するunattended-upgradesことが確認された場合は、再起動をお勧めし/var/run/reboot-requiredます。このファイルはpostinst、いくつかのパッケージの(インストール後)スクリプトによって作成され、次のようになります。

[ -x /usr/share/update-notifier/notify-reboot-required ] && \
/usr/share/update-notifier/notify-reboot-required || true

どのパッケージがこれをトリガーしたかを見たい場合は、/var/run/reboot-required.pkgsファイルの内容を見ることができます。

詳細については、このスレッドも参照してください。


2

Olliの以前の回答に基づいて、システムに現在インストールされている、再起動が必要なすべてのパッケージを見つける方法を思いつきました。

~$ mkdir debs
~$ cd debs
~/debs$ apt-get download $(dpkg -l | tail -n +7 | awk '{print $2}')

ダウンロードが完了するまで待ちます。私のシステムでは約900 MBでしたので、接続によっては時間がかかる場合があります。次に:

~/debs$ for x in $(ls); do y=$(dpkg-deb -I "$x" postinst 2>/dev/null | grep 'reboot-required'); if [ -n "$y" ]; then echo "$x" | grep -Poe '^.*?(?=_)'; fi; done

出力は次のようになります。

dbus
gconf2
initscripts
libc6
libpam0g
libpam-systemd
libssl1.0.0
linux-image-3.19.0-47-generic
linux-image-3.19.0-49-generic
network-manager
upstart

もちろん、この方法は万全ではありません。「notify-reboot-required」以外の手段で必要なリブートについて通知するパッケージが存在する場合があり、これは現在インストールされているパッケージのうちリブートが必要かどうかを示しますが、同じことが今後も当てはまるかどうかはわかりません同じパッケージのバージョン。


3
あなただけで任意の面倒なダウンロードしなくても同じことをacomplish可能性がgrep -l reboot-required /var/lib/dpkg/info/*.postinst | sed -e 's,^.*/\(.*\)\.postinst,\1,'。それが唯一のパッケージがどのレポートすることに注意してくださいかもしれないいくつかの時点で再起動する必要はなく、どのパッケージがなかった、再起動を必要とし、この時間を
マティヤNalis

0

再起動が必要な他のパッケージがあるかどうかはわかりませんが、カーネルの更新は常に必要です。私は、リブートするように「求められた」ほぼ毎回、カーネルが更新されていたと思います。


1
それは私の意見では十分ではありません。ブートローダーの更新では、再起動とinit(upstart)も要求されます。
オリ

1
まあ、またDバスのようないくつかの他のパッケージ、:ubuntu.com/usn/USN-799-1。したがって、完全なソリューションを得るには、再起動が必要なパッケージのリストをコンパイルすること(DBusが常にそれを必要とするわけではありません)。
-Olli

1
あなたは正しい...私は部分的な知識です:(。情報をありがとう。他のパッケージも再起動が必要だとは気がつきませんでした
。– luri
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.