Defekte Pakete in Debian Sid
veröffentlicht am 30.03.2020 mit 1066 Worten - Lesezeit: 6 Minute(n) in * LINUX *
Neugierde und Vorsicht - zwei Eigenschaften, die man als IT-Nutzer abseits (aber auch innerhalb (!)) des Mainstreams mitbringen sollte. Für mich war es an der Zeit, mal wieder was Neues zu testen (zum Hintergrund in einem folgenden Beitrag mehr):
Nachdem ich meine ersten Linux-Schritte mit Debian gemacht hatte und zwischenzeitlich mit Fedora, Linux-Mint, Manjaro und Siduction längere, teils aber auch sehr kurze Erfahrungen gesammelt hatte, schließt sich der Kreis fast wieder. Die “Distribution der Wahl” aktuell heißt Debian Sid. Dazu heißt es auf der Debian Webseite:
Der Codename für Debians Entwicklungs-Distribution ist “Sid”, auch “Unstable” genannt. Der Hauptteil der Entwicklungsarbeit in Debian wird in diese Distribution hochgeladen. Diese Distribution wird niemals freigegeben; stattdessen verbreiten sich Pakete davon nach Testing und dann in ein offizielles Release.
(…)
“Sid” unterliegt gravierenden Änderungen und direkten Bibliotheksänderungen. Dies kann ein “instabiles” (unstable) System ergeben, das Pakete beinhaltet, die wegen fehlenden Bibliotheken nicht installiert werden können, Abhängigkeiten nicht auflösen kann usw. Benutzung auf eigene Gefahr!
Solcherarts gewarnt greift man dann ganz gerne nach den Hilfsmitteln, die einem geboten werden:
apt-get install apt-listbugs
In der Paketbeschreibung heißt es:
apt-listbugs ist ein Werkzeug, das Fehlerberichte aus der Debian-Fehlerdatenbank abruft und auflistet. Insbesondere soll es vor jeder Installation/Upgrade von APT aufgerufen werden, um zu prüfen, ob die Installation/Upgrade sicher ist.
Und dann gibt es noch
apt-get install apt-listchanges
mit dem Zweck:
Das Werkzeug apt-listchanges kann eine neue Version eines Pakets mit der aktuell installierten vergleichen und zeigen, was sich geändert hat, indem es die relevanten Einträge aus dem Debian-Changelog und den NEWS-Dateien extrahiert.
So gerüstet geht es an das (tägliche) Update:
# apt update
und dann sollte man sich erstmal anzeigen lassen, was da alles an neuen Paketen vorliegt:
# apt list --upgradable -a
Das Update startet dann nach einem
# apt full-upgrade
(Achtung, im Gegensatz zu einem einfachen upgrade
werden mit full-upgrade
auch Pakete entfernt)
Wenn die nötigen Update-Infos alle beisammen sind, werden im nächsten Schritt die Fehlerberichte geladen und ausgegeben:
(...)
Holen:534 http://ftp.de.debian.org/debian unstable/main amd64 vlc-plugin-visualization amd64 3.0.8-4+b1 [143 kB]
Holen:535 http://ftp.de.debian.org/debian unstable/main amd64 xfburn amd64 0.6.2-1 [542 kB]
Es wurden 953 MB in 10 min 17 s geholt (1.544 kB/s).
Laden der Fehlerberichte … Erledigt
»Found/Fixed«-Informationen werden ausgewertet … Erledigt
critical Fehler von libdns-export1110 (→ 1:9.11.17+dfsg-4) <Ausstehend>
b1 - #954736 - Upgrade to 9.16.1-1 causes dhcpd to die with SIGABRT
serious Fehler von libstdc++6 (10-20200304-1 → 10-20200324-1) <Ausstehend>
b2 - #954954 - libstdc++6: symbols file on armel incomplete
serious Fehler von ghostscript (9.51~dfsg-1 → 9.52~dfsg-1) <Ausstehend>
b3 - #954901 - ghostscript: runtime error: malloc(): invalid size (unsorted)
serious Fehler von git (1:2.25.1-1 → 1:2.26.0-1) <Ausstehend>
b4 - #955152 - git-rebase ignores or squashes GIT_REFLOG_ACTION (Gelöst: git/1:2.11.0-3+deb9u5 git/1:2.25.1-1)
grave Fehler von libglx-mesa0 (19.3.3-1 → 20.0.2-1) <Weitergeleitet>
b5 - #954311 - libglx-mesa0: Drawing artifacts make some programs unusable
serious Fehler von ruby2.7 (→ 2.7.0-4) <Weitergeleitet>
b6 - #954419 - ruby2.7: FTBFS since openssl 1.1.1e
Zusammenfassung:
libstdc++6(1 Fehler), libdns-export1110(1 Fehler), ghostscript(1 Fehler), libglx-mesa0(1 Fehler), git(1 Fehler), ruby2.7(1 Fehler)
Sind Sie sicher, dass Sie die oben genannten Pakete installieren bzw. ein Upgrade von ihnen durchführen wollen? [Y/n/?/...] ?
Neben ‘ja’ und ‘nein’ werden weitere Optionen angeboten, die nach Eingabe des ?
angezeigt werden:
y - setzt die APT-Installation fort, die Fehler werden jedoch nicht
als ignoriert gekennzeichnet.
a - setzt die APT-Installation fort und kennzeichnet alle oben
genannten Fehler als ignoriert.
n - stoppt die APT-Installation.
<num> - fragt die angegebene Fehlernummer ab
(verwendet querybts als Anwender benutzer).
#<num> - identisch mit <num>.
b<id> - identisch mit <num>, fragt aber den durch <id> identifizierten
Fehler ab.
r - zeigt die Fehlerlisten erneut an.
p <Pakete …> - pinnt die Pakete (Neustart der APT-Sitzung zum Aktivieren).
p - pinnt alle oben genannten Pakete (Neustart der APT-Sitzung zum
Aktivieren).
i <num> - kennzeichnet die Fehlernummer <num> als ignoriert.
i b<id> - kennzeichnet den durch <id> identifizierten Fehler als
ignoriert.
? - gibt diese Hilfe aus.
w - zeigt Fehlerlisten in HTML
(verwendet sensible-browser als Anwender benutzer).
Gibt man hier ein p
ein, dann werden die in der Fehlerliste genannten Pakete gepinnt
, d. h. nicht aktualisiert, sondern in ihrer derzeitigen Version quasi “eingefroren”:
Sind Sie sicher, dass Sie die oben genannten Pakete installieren bzw. ein Upgrade von ihnen durchführen wollen? [Y/n/?/...] p
Die folgenden 6 Pakete werden gepinnt oder auf »on hold« gesetzt:
libglx-mesa0, ruby2.7, libdns-export1110, ghostscript, libstdc++6, git
Sind Sie sicher? [Y/n] y
libglx-mesa0 ruby2.7 libdns-export1110 ghostscript libstdc++6 git wurde gepinnt, indem die Pin-Präferenzen in /etc/apt/preferences.d/apt-listbugs gesetzt wurden. Sie müssen zum Aktivieren die APT-Sitzung neu starten
Sind Sie sicher, dass Sie die oben genannten Pakete installieren bzw. ein Upgrade von ihnen durchführen wollen? [N/?/...]
Dabei erscheint in /etc/apt/preferences.d
eine Datei apt-listbugs
mit folgendem Inhalt
Explanation: Pinned by apt-listbugs at 2020-03-30 09:33:43 +0200
Explanation: #954311: libglx-mesa0: Drawing artifacts make some programs unusable
Package: libglx-mesa0
Pin: version 19.3.3-1
Pin-Priority: 30000
Explanation: Pinned by apt-listbugs at 2020-03-30 09:33:43 +0200
Explanation: #954419: ruby2.7: FTBFS since openssl 1.1.1e
Package: ruby2.7
Pin: version *
Pin-Priority: -30000
Explanation: Pinned by apt-listbugs at 2020-03-30 09:33:43 +0200
Explanation: #954736: Upgrade to 9.16.1-1 causes dhcpd to die with SIGABRT
Package: libdns-export1110
Pin: version *
Pin-Priority: -30000
Explanation: Pinned by apt-listbugs at 2020-03-30 09:33:43 +0200
Explanation: #954901: ghostscript: runtime error: malloc(): invalid size (unsorted)
Package: ghostscript
Pin: version 9.51~dfsg-1
Pin-Priority: 30000
Explanation: Pinned by apt-listbugs at 2020-03-30 09:33:43 +0200
Explanation: #954954: libstdc++6: symbols file on armel incomplete
Package: libstdc++6
Pin: version 10-20200304-1
Pin-Priority: 30000
Explanation: Pinned by apt-listbugs at 2020-03-30 09:33:43 +0200
Explanation: #955152: git-rebase ignores or squashes GIT_REFLOG_ACTION
Package: git
Pin: version 1:2.25.1-1
Pin-Priority: 30000
Will man zu einem späteren Zeitpunkt die Pakete (oder einzelne davon) wieder aktualisieren, dann kann man die Datei oder eben Einträge darin entsprechend entfernen.
In der Einleitung zu diesem Beitrag war von Risiken und Nebenwirkungen die Rede. Diese können sein:
- Ein ‘gepinntes’ Paket bildet eine Abhängigkeit zu einem anderen Paket. Sollen nun beide aktualisiert werden, aber eines ist ‘gepinnt’, dann kann wegen fehlender Abhängigkeit das andere Paket entfernt werden, also deinstalliert.
- Verwendet man anstelle
#apt full-upgrade
nur ein#apt upgrade
, so kann man diese Entfernungen von Paketen verhindern, aber dann werden eine ganze Reihe weiterer Pakete vom Update ausgeschlossen. - Je mehr fehlerhafte Pakete man also ausschließt, desto mehr laufen die Versionen auf dem Rechner und in den Quellen auseinander … und v. a. desto unübersichtlicher wird die Gesamtsituation - man ist auf dem Weg in eine “Versionshölle”.
Das wird dann immer mehr zu einem Job für Vollzeit-Admins oder eben auch Nerds …
weitere Artikel
- Die neue Linux-Distribution - ein 'Rolling-Release'?
- Debian (.deb) Pakete bearbeiten: Abhängigkeiten anpassen
- Debian Versionsupdate: Bullseye nach Bookworm
- Debian Versionsupdate: Buster nach Bullseye
- Linux: Der Zufallsgenerator Calamares Installer