Für Updates verwende ich ein eigenes Script, die grafische Verwaltung mag ich nicht. Gerne möchte ich dafür sorgen, dass diese Updates automatisch geschehen, wenn sie ohne Konflikte durchgeführt werden können. Genau hier ist mein derzeitiges Problem.
Fiktives Beispiel: Wenn ich vor ein paar Jahren noch nicht wusste, dass man besser nicht in sshd_config Anpassungen vornimmt und dort etwas geändert habe, dann gibt es heutzutage einen Konflikt beim Update des openssh-Paketes, wenn eine Konfiguration oder ein Kommentar seitens des Paket-Maintainers in dieser Datei geändert wird. Da möchte ich die Anpassung, die ich fälschlicherweise in sshd_config gemacht habe, in eine Datei in sshd_config.d schreiben. Dann übernehme ich die Änderungen des Paket-Maintainers und habe eine saubere Installation, die künftig deswegen keinen Konflikt mehr bei Updates haben wird.
Derzeit mache ich:
1 | apt update && apt full-upgrade && apt autoremove |
(tatsächlich ist der Rest des Scriptes nicht wesentlich für diese Frage) und werde bei Konflikten gefragt. Das kann ich in einem zweiten Terminal lösen, oder Abbrechen und später weitermachen.
Mein Anliegen: Ich möchte etwas wie apt update -y, das aber bei einem Konflikt abbricht und einen Fehler meldet. Darauf kann ich im Script reagieren und beispielsweise mit notify-send einen Hinweis anzeigen oder eine Mail senden oder was auch immer.
Das wäre die Grundlage, damit ich die apt Updates/Upgrades automatisch aufrufen kann, statt sie in unregelmäßigen Abständen manuell durchzuführen.
Konflikte sind selten. Ich erwarte nicht öfter als einmal alle 1-2 Jahre so etwas zu sehen. Aber wenn es der Fall ist, möchte ich es sehen und nicht automatisch die eigene Konfiguration behalten, wie es UnattendedUpgrades meines Wissens der Fall wäre. Wenn dann die lokale modifizierte Variante stehen bleibt, ist es ansonsten unnötig schwierig, die Änderungen gegenüber der ursprünglichen Paketversion, die man modifiziert hat, herauszufinden und in die aktuelle zu übertragen.
In der man-Page von apt und apt-get wird so manches an Optionen erwähnt, aber das Zusammenspiel, was die Option genau bewirkt und ob alle Fälle eines automatischen Ablaufs (upgrade wenn ohne Konflikte möglich durchführen, ansonsten Abbruch mit Exitcode) dann abgefangen wären, erschließt sich mir nicht. Gibt es bereits passende Optionen für meinen Wunschablauf? Insbesondere wird erwähnt, dass -y unter einigen Umstände abbricht, was genau mein Wunsch wäre, aber eben mein Beispiel wird nicht erwähnt. Tut es schon, was ich will oder kann man es mit DEBIAN_FRONTEND=noninteractive dazu bringen?
Am Besten fände ich es natürlich, wenn Upgrades für konfliktfreie Pakete weiter installiert würden und erst am Schluss der Konflikt gemeldet wird, oder noch besser eine Liste der Konflikte. Aber mit einem Abbruch könnte ich gut leben.
Ich habe mittels Google schon Diskussionen zu dem Thema gefunden, aber leider keine befriedigenden Antworten.