Flatpak-Update schlägt fehl, nachdem Curl in Debian 12 auf 8.10 aktualisiert wurde | Wie man es behebt
Heute habe ich eine wertvolle Lektion über die potenziellen Folgen des Installierens von Kernsystembibliotheken aus Backports-Repositories in Debian Linux gelernt. Während Backports nützlich sein können, um die neuesten Funktionen und Updates zu erhalten, können sie auch unerwartete Probleme verursachen, insbesondere bei Kernsystembibliotheken. Das Flatpak-Update schlug fehl, nachdem ich Curl auf 8.10 aus den Backports auf meinem Debian-12-System aktualisiert hatte. Lassen Sie mich erklären, was passiert ist, warum es passiert ist, wie man es löst und was Sie aus meiner Erfahrung lernen können.
Das Problem: Flatpak-Aktualisierungsfehler
Kürzlich habe ich versucht, meine Flatpak-Anwendungen mit dem Befehl flatpak update zu aktualisieren. Statt einer reibungslosen Aktualisierung trat der folgende Fehler auf:
Updating 1/23… 0% 0 bytes/s**
OSTree:ERROR:src/libostree/ostree-fetcher-curl.c:526:sock_cb: code should not be reached
Bail out! OSTree:ERROR:src/libostree/ostree-fetcher-curl.c:526:sock_cb: code should not be reached
Aborted (core dumped)Nach einigem Nachforschen entdeckte ich, dass das Problem durch ein Paket namens libcurl3-gnutls verursacht wurde, das ich aus dem Debian Backports Repository installiert hatte.
Was ist schiefgelaufen?
In einfachen Worten ist libcurl3-gnutls eine Kernsystembibliothek, die Ihrem System hilft, mit dem Internet zu kommunizieren.
Wenn Sie ein Paket aus dem Backports-Repository installieren, erhalten Sie im Grunde genommen eine neuere Version dieses Pakets als die in der stabilen Debian-Version verfügbare. Dies kann zwar nützlich sein, um die neuesten Funktionen zu bekommen, kann aber auch zu Kompatibilitätsproblemen führen, insbesondere mit Kernsystembibliotheken.
In meinem Fall verursachte die neuere Version von libcurl3-gnutls aus dem Backports-Repository, dass der Befehl flatpak update abstürzte.
Einige Benutzer haben dieses Problem bereits gemeldet. Der Debian-Entwickler Simon McVittie beschrieb dieses Problem in diesem Link wie folgt:
[...]
You did already install a core system library (libcurl3-gnutls) from
a repository other than stable (bookworm-backports), and that's what
triggered this. If you can downgrade libcurl3-gnutls back to the version
from stable, that should avoid this issue.
Updating core system libraries like libcurl has a risk of regressions
associated with it - that's why we have stable releases! - and that
risk doesn't go away just because the package has been made available
in bookworm-backports.
[...]Bis vor ein paar Tagen wusste ich nicht, dass ich die Kernsystembibliotheken nicht aus den Backports installieren sollte. Also habe ich das problematische Paket wie vom Entwickler vorgeschlagen herabgestuft.
Wie man es repariert
Glücklicherweise ist die Lösung unkompliziert. Sie müssen lediglich das Paket libcurl3-gnutls auf die Version downgraden, die mit der stabilen Debian-Version geliefert wird. Sehen wir uns an, wie es geht:
Schritt 1: Verfügbare Versionen auflisten
Zuerst müssen Sie sehen, welche Versionen von libcurl3-gnutls auf Ihrem System verfügbar sind. Sie können dies tun, indem Sie Folgendes ausführen:
apt-cache policy libcurl3-gnutlsBeispielausgabe von meinem Debian-12-System:
libcurl3-gnutls:
Installed: 8.10.1-1~bpo12+1
Candidate: 8.10.1-1~bpo12+1
Version table:
*** 8.10.1-1~bpo12+1 100
100 /var/lib/dpkg/status
7.88.1-10+deb12u7 500
500 http://deb.debian.org/debian bookworm/main amd64 Packages
7.88.1-10+deb12u5 500
500 http://deb.debian.org/debian-security bookworm-security/main amd64 PackagesWie Sie in der obigen Ausgabe sehen, ist die installierte Version 8.10.1-1~bpo12+1, die aus dem Backports-Repository stammt. „bpo“ im Paketnamen zeigt an, dass sie aus Backports stammt. Die stabile Version ist 7.88.1-10+deb12u7.
Schritt 2: Das Paket herabstufen
Um libcurl3-gnutls auf die stabile Version herabzustufen, führen Sie aus:
sudo apt install libcurl3-gnutls=7.88.1-10+deb12u7Sie werden eine Bestätigungsaufforderung sehen, die fragt, ob Sie fortfahren möchten. Geben Sie y ein und drücken Sie die Eingabetaste.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
libnghttp3-9 libngtcp2-16 libngtcp2-crypto-gnutls8
Use 'sudo apt autoremove' to remove them.
The following packages will be DOWNGRADED:
libcurl3-gnutls
0 upgraded, 0 newly installed, 1 downgraded, 0 to remove and 0 not upgraded.
Need to get 385 kB of archives.
After this operation, 100 kB disk space will be freed.
Do you want to continue? [Y/n] y
Get:1 http://deb.debian.org/debian bookworm/main amd64 libcurl3-gnutls amd64 7.88.1-10+deb12u7 [385 kB]
Fetched 385 kB in 1s (727 kB/s)
dpkg: warning: downgrading libcurl3-gnutls:amd64 from 8.10.1-1~bpo12+1 to 7.88.1-10+deb12u7
(Reading database ... 187778 files and directories currently installed.)
Preparing to unpack .../libcurl3-gnutls_7.88.1-10+deb12u7_amd64.deb ...
Unpacking libcurl3-gnutls:amd64 (7.88.1-10+deb12u7) over (8.10.1-1~bpo12+1) ...
Setting up libcurl3-gnutls:amd64 (7.88.1-10+deb12u7) ...
Processing triggers for libc-bin (2.36-9+deb12u8) ...Jetzt wurde das Paket auf die Version 7.88.1-10+deb12u7 herabgestuft.
Schritt 3: Überprüfen Sie das Herabstufen
Nachdem das Downgrade abgeschlossen ist, können Sie überprüfen, ob das Paket heruntergestuft wurde, indem Sie Folgendes ausführen:
apt-cache policy libcurl3-gnutlsSie sollten sehen, dass die installierte Version jetzt die stabile Version ist, 7.88.1-10+deb12u7.
Schritt 4: Flatpak-Anwendungen aktualisieren
Versuchen Sie schließlich erneut, den Befehl flatpak update auszuführen. Diesmal sollte er ohne Fehler funktionieren:
![[Update Flatpak Applications.png]]
Ursache des Flatpak-Update-Problems
Wenn Sie kürzlich curl auf Version 8.10.0 aus den Backports aktualisiert oder aus dem Quellcode kompiliert haben, erhalten Sie denselben Fehler, wenn Sie versuchen, Ihre Flatpak-Anwendungen zu aktualisieren.
Ich dachte, dass das Ersetzen der Backports-Version von Curl durch die stabile Version dieses Problem beheben würde, aber das tat es nicht. Ich musste das Paket libcurl3-gnutls downgraden, um es zu beheben.
Die eigentliche Ursache des flatpak update-Fehlers war eine Inkompatibilität zwischen libostree-Bibliothek, die von flatpak verwendet wird.
- Wie in diesem Fehlerbericht erwähnt, meldete ein Debian-Benutzer, dass nach dem Upgrade von
curlauf Version 8.10.0flatpak updatemit einer Fehlermeldung fehlschlug, die darauf hinweist, dass Code in der Dateiostree-fetcher-curl.cnicht erreicht werden sollte. - Dies ließ sich auf einen Commit in der
libcurl-Bibliothek zurückverfolgen, der änderte, wie Sockets behandelt werden. - Das Problem war besonders ausgeprägt bei Nutzern, die
libcurl3-gnutlsaus dembookworm-backports-Repository installiert hatten, da dies eine neuere Version vonlibcurlbereitstellte als die stabile Debian-Version. - Das Herabstufen von
libcurl3-gnutlsauf die stabile Version wurde als Workaround bestätigt. - Der Maintainer des
ostree-Pakets in Debian hat Patches aus dem Upstream-Projekt angewendet, um die Inkompatibilität mitcurl8.10.x zu beheben. - Die korrigierte Version von
ostreewurde zunächst in den instabilen und testenden Debian-Zweigen veröffentlicht und später über dasbookworm-proposed-updates-Repository im stabilen Zweig verfügbar gemacht.
Daher entstanden die flatpak update-Fehler durch eine Änderung in libcurl, die die Funktionalität von libostree beeinträchtigte. Dies wurde durch das Anwenden von Patches auf libostree gelöst, um die Kompatibilität mit der neueren curl-Bibliothek wiederherzustellen.
Wenn also der Flatpak-Update-Befehl nach der Aktualisierung auf Curl 8.10.0 fehlschlägt, downgraden Sie einfach das libcurl3-gnutls auf die Version aus dem stabilen Repository wie oben beschrieben.
Mögliche Konsequenzen der Installation von Core-Systembibliotheken aus dem Backports-Repository
- Regressionen: Das Aktualisieren von Kernsystembibliotheken wie libcurl aus Backports birgt das Risiko von Regressionen. Regressionen sind unbeabsichtigte Folgen von Software-Updates, die dazu führen können, dass bestehende Funktionen fehlerhaft werden oder schlechter funktionieren. Deshalb gibt es stabile Releases, um solche Risiken zu minimieren.
- Kompatibilitätsprobleme: Die Installation einer neueren Version einer Kernbibliothek aus Backports kann zu Kompatibilitätsproblemen mit anderer Software führen, die auf der älteren Version basiert. Dies liegt daran, dass die aktualisierte Bibliothek Änderungen enthalten könnte, die mit der für die vorherige Version entwickelten Software nicht kompatibel sind.
- Abhängigkeitskonflikte: Zurückportierte Bibliotheken können Abhängigkeiten von neueren Versionen anderer Bibliotheken haben, die in der stabilen Version nicht verfügbar sind. Dies kann Abhängigkeitskonflikte erzeugen und die ordnungsgemäße Funktion des Systems verhindern.
Gelehrte Lektionen
1. Halten Sie sich bei Kernbibliotheken an Stable
Wenn es um grundlegende Systembibliotheken geht, ist es im Allgemeinen sicherer, bei den Versionen zu bleiben, die von der stabilen Debian-Version bereitgestellt werden. Diese Versionen wurden gründlich getestet und verursachen eher keine Kompatibilitätsprobleme.
2. Verwenden Sie Backports mit Bedacht
Während Backports nützlich sein können, um die neuesten Funktionen zu erhalten, sollten sie mit Vorsicht verwendet werden. Installieren Sie Pakete aus Backports nur, wenn Sie die potenziellen Risiken verstehen und darauf vorbereitet sind, eventuelle Probleme zu bewältigen.
3. Wissen, wie man ein Downgrade durchführt
Wenn Sie nach der Installation eines Pakets aus Backports auf Probleme stoßen, kann es Ihnen viel Zeit und Frustration ersparen, zu wissen, wie man auf eine stabile Version zurückgeht.
Fazit
Die Installation von Kernsystembibliotheken aus Backports kann unerwartete Probleme verursachen, wie ich auf die harte Tour gelernt habe. Wenn man bei stabilen Versionen bleibt und die potenziellen Risiken versteht, kann man diese Probleme vermeiden und das System reibungslos am Laufen halten. Denken Sie daran, dass das Neueste nicht immer das Beste ist, besonders wenn es um Kernsystemkomponenten geht.
Ich sage nicht, dass Backports nicht empfohlen wird. Vermeiden Sie einfach die Installation von Systemkernbibliotheken aus Backports. Sie können es verwenden, um andere Apps zu installieren.
Verwandte Lektüre:
- Beheben von Flatpak-Update-Fehlern: Problem mit beschädigtem Dateiobjekt