Vraag Hoe weet ik welk pakket vereist dat mijn systeem opnieuw opstart?


ik heb unattended-upgrade opgezet op mijn Ubuntu-systemen. Af en toe zal ik me op afstand aanmelden bij een van hen en ik zal een bericht zien dat me informeert dat ik het systeem opnieuw moet opstarten (om een ​​upgrade te voltooien). Is er een manier om het specifieke pakket (of de reeks pakketten) te bepalen dat deze melding veroorzaakt?


83
2018-03-01 08:17


oorsprong




antwoorden:


Verkorte versie:

cat /var/run/reboot-required.pkgs

Uitleg:

Het lijkt erop dat er een eenvoudige manier is om automatisch de gevraagde informatie te extraheren.

Binnen .deb bestanden zijn er besturingsbestanden voor de installatie, inclusief postinst (uitgevoerd na installatie).

Bijvoorbeeld in linux-image-2.6.35-25-generic_2.6.35-25.44_amd64.deb,
postinst omvat

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

en

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

Het shellscript /usr/share/update-notifier/notify-reboot-required updates
/var/run/reboot-required  en  /var/run/reboot-required.pkgs.

Het laatste bestand bevat een lijst met pakketten die om een ​​herstart vragen.


79
2018-03-01 09:11



Op mijn systeem het bestand /var/run/reboot-required is een dag ervoor gemaakt maar er is geen /var/run/reboot-required.pkgs bestand @ Ubuntu 16.04.5 LTS. - Lion


Opnieuw opstarten wordt aanbevolen door de unattended-upgrades wanneer het dat ziet a /var/run/reboot-required bestaat. Het bestand is gemaakt door postinst (post-installatie) scripts in sommige pakketten, het ziet er ongeveer zo uit:

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

Als u wilt zien welke pakketten dit hebben geactiveerd, kunt u de inhoud van de /var/run/reboot-required.pkgs het dossier.

Zie voor meer info ook deze draad.


25
2018-03-01 09:10





Gebaseerd op Olli's eerdere antwoord, bedacht ik een methode om alle momenteel geïnstalleerde pakketten op je systeem te vinden die opnieuw moeten worden opgestart.

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

Wacht tot het downloaden is voltooid, op mijn systeem was het ongeveer 900 MB, dus het kan even duren, afhankelijk van je verbinding. Dan:

~/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

De uitvoer ziet er ongeveer zo uit:

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

Natuurlijk is deze methode niet waterdicht. Er kunnen pakketten zijn die informeren over de vereiste herstart via andere middelen dan 'notify-reboot-required', en terwijl dit laat zien welke geïnstalleerde pakketten vereisen of niet opnieuw moeten worden opgestart, is het niet zeker dat hetzelfde zal gelden voor later versies van hetzelfde pakket.


2
2018-02-10 10:22



Je zou hetzelfde kunnen doen zonder moe te worden met gewoon downloaden grep -l reboot-required /var/lib/dpkg/info/*.postinst | sed -e 's,^.*/\(.*\)\.postinst,\1,'. Merk echter op dat alleen die pakketten worden gerapporteerd macht opnieuw opstarten vereist, niet welk pakket deed opnieuw opstarten vereist deze keer - Matija Nalis


Ik weet niet echt of er andere pakketten zijn die opnieuw moeten worden opgestart, maar kernelupdates altijd. Ik zou zeggen dat bijna elke keer dat ik "ben gevraagd" om opnieuw op te starten, de kernel is bijgewerkt.


0
2018-03-01 08:42



Dat is naar mijn mening niet goed genoeg. Bootloader-updates vragen ook om opnieuw opstarten, evenals init (upstart). - Olli
Nou, ook enkele andere pakketten, zoals DBus: ubuntu.com/usn/USN-799-1 . Dus het samenstellen van een lijst van pakketten die herstart vereisen (DBus hoeft dat niet altijd te doen) is dwaas voor een complete oplossing. - Olli
Je hebt gelijk ... De mijne is een gedeeltelijke kennis :( Bedankt voor de informatie. Ik had me niet gerealiseerd dat andere pakketten opnieuw moeten worden opgestart. - luri