시스템을 재부팅해야하는 패키지를 어떻게 알 수 있습니까?


85

unattended-upgrade우분투 시스템 을 설정했습니다. 간혹 그 중 하나에 원격으로 로그인하고 업그레이드를 완료하기 위해 시스템을 재부팅해야한다는 메시지가 표시됩니다. 이 통지를 발생시키는 특정 패키지 (또는 패키지 세트)를 결정하는 방법이 있습니까?

답변:


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.pkgs@ Ubuntu 16.04.5 LTS 파일 이 없습니다 .
Lion

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}')

다운로드가 완료 될 때까지 기다리십시오. 내 시스템에서 약 900MB이므로 연결에 따라 시간이 걸릴 수 있습니다. 그때:

~/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
당신은 그냥 지루한 다운로드없이 동일한을 달성 할 수 있습니다 grep -l reboot-required /var/lib/dpkg/info/*.postinst | sed -e 's,^.*/\(.*\)\.postinst,\1,'. 단지 어떤 패키지보고합니다 그러나주의 할 수 없는 어떤 패키지, 약간의 시간에 재부팅이 필요 했던 재부팅을 요구하는 이 시간
마티 Nalis

0

재부팅이 필요한 다른 패키지가 있는지는 모르겠지만 커널 업데이트는 항상 있습니다. 나는 거의 재부팅을 요구할 때마다 커널이 업데이트되었다고 말하고 싶다.


1
내 의견으로는 충분하지 않습니다. 부트 로더 업데이트는 재부팅뿐만 아니라 초기화 (시작)를 요청합니다.
Olli

1
또한 DBus : ubuntu.com/usn/USN-799-1 과 같은 다른 패키지도 있습니다 . 따라서 완전한 솔루션을 위해서는 재시작이 필요한 패키지 목록 (DBus가 항상 필요하지는 않음)을 어리석게 만듭니다.
Olli

1
당신이 맞아요 ... 광산은 부분 지식입니다 :( 정보에 감사드립니다. 다른 패키지도 다시 시작해야한다는 것을 깨닫지 못했습니다.
luri
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.