apt list –upgradeable <-- Pakete für Reboot ermitteln

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mzurhorst
User
Beiträge: 2
Registriert: Sonntag 31. Juli 2022, 13:03

Hallo zusammen.

Ich bastele an einen Python-Script, um mir den Status mehrerer Debian-VMs über MQTT zentral melden zu lassen.
Nun komme ich an einer Stelle nicht weiter, und habe mich mal hier angemeldet in der Hoffnung, dass ich einen Tipp bekommen könnte.

Und zwar nutze ich das Modul "apt", um die Paketquellen zu aktualisieren.
So kann ich sehr einfach rausfinden, ob es für diesen virtuellen Server überhaupt aktuellere Pakete gibt, welche installiert werden sollten.

Das ist schon ganz gut so, nur fehlt mir jetzt die Information, ob irgendeines dieser zu installierenden Pakete denn einen Reboot des Servers erfordern würde.
Ich hatte gehofft, dass ich da irgendwo in der exessiven Debian-Doku etwas zu finde, denn das sollte ja in den Metadaten der *.deb Pakete drin stehen.
Aber ich finde nichts, bzw. Suche ich wohl falsch.


Mein Brute-Force Ansatz wäre als nächstes, im Namen der Pakete nach "kernel", "glibc" oder ähnliches zu suchen, nur ist das vermutlich nicht vollständig.
Da sollte es doch hoffentlich einen eleganteren Weg geben.

Was meint ihr?

Danke und viele Grüße,
Marcus
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

das ist scheinbar relativ simple, eine Google Suche nach "apt determine necessary reboot" liefert z.B. die beiden folgenden Links als erste Suchtreffer:
* https://megamorf.gitlab.io/2019/06/10/c ... x-updates/
* https://www.cyberciti.biz/faq/how-to-fi ... -a-reboot/

Gruß, noisefloor
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Das ist ja jetzt keine Python-Frage sondern eine Debian-Frage. Und mein google ist so gut wie Deins:
https://askubuntu.com/questions/28530/h ... 993#731993
https://www.reddit.com/r/linuxquestions ... trequired/
mzurhorst
User
Beiträge: 2
Registriert: Sonntag 31. Juli 2022, 13:03

Danke euch.

Das ist eben nicht sicher, ob es eine Debian Frage ist, da ich ja nicht verstehe, wie ich die mit der Python Programmiersprache und dem Python Modul "apt" beantwortet bekomme.
Daher hatte ich hier gefragt. Evtl. ist das aber auch zu speziell.

Die Links bringen mich mehr oder weniger zu den gleichen Infos, die ich bereits hatte.
Allerdings habe ich nun noch weiter in der Debian-Doku gelesen. Es scheint tatsächlich solch ein Flag in den Metadaten nicht zu geben.
Es gibt wohl nur wenige, echte Pakete, welche immer einen Neustart erfordern, wie z.B. der Kernel.
Aber darüber hinaus gibt es im Userspace einige Tools, die manchmal einen Neustart benötigen, und manchmal aber auch nicht. Das hängt wohl von der exakten Änderung des Pakets ab und das hatte ich so nicht erwartet.

Ich arbeite also dann mit einer selbst gepflegten Liste weiter.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

du denkst zu kompliziert. Das hat auch nicht direkt was mit dem Python apt Modul zu tun. Du musst doch lediglich prüfen, ob die Datei "/var/run/reboot-required" vorhanden ist. Das geht mit Bordmitteln von Python. Wenn die Datei vorhanden ist -> neustarten.

Eine Liste der Pakete, die sich aktuell einen Neustart wünschen, findest du übrigens in der Datei "/var/run/reboot-required.pkgs".

Userspaceprogramme können eigene Dateien anlegen. Wenn z.B.der Firefox aus den Paketquellen installiert ist, läuft und ein neueres Paket geladen wurde, dann gibt es (unter Ubuntu zumindest) die Datei "/var/run/firefox-reboot-required".

Gruß, noisefloor
Benutzeravatar
__blackjack__
User
Beiträge: 13079
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@noisefloor: Soweit ich das verstanden habe ist das nicht das was mzurhorst will. Diese Datei(en) gibt es ja erst wenn man die Pakete, welche einen Neustart brauchen, *installiert* hat. Ich habe die Frage so verstanden, dass nach der Aktualisierung der Quellen geschaut werden soll, welche neuen Pakete installiert werden *könnten* und ob danach ein Neustart fällig *wäre*.

Also das man beispielsweise anhand dieser Information *vor* dem Installieren entscheiden kann, ob man das gleich macht, oder lieber wenn ein Neustart möglichst wenig stört, oder man andere darüber Informiert hat, dass es eine kurze Downtime gibt, oder etwas in der Richtung.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ach so... also seit ich das sehe wird der Neustart im Skript `postinst` im Archiv `control.tar.zst` im DEB-Paket festgelegt. Da steht dann irgendwo eine Zeile wie

Code: Alles auswählen

if [ -x /usr/share/update-notifier/notify-reboot-required ]; then
/usr/share/update-notifier/notify-reboot-required
fi
Ich denke, dass man ohne Laden des DEB-Pakets und Durchsuchen des Skripts nicht an die Info kommt.

Gruß, noisefloor
Antworten