La mise à jour de Flatpak échoue après la mise à niveau de Curl vers 8.10 sous Debian 12 | Comment le réparer
Aujourd'hui, j'ai appris une leçon précieuse sur les conséquences potentielles de l'installation de bibliothèques système de base depuis les dépôts backports sous Debian Linux. Bien que les backports puissent être utiles pour obtenir les dernières fonctionnalités et mises à jour, ils peuvent également introduire des problèmes inattendus, surtout lorsqu'il s'agit de bibliothèques système de base. La mise à jour de flatpak a échoué après la mise à niveau de Curl vers la version 8.10 depuis les Backports sur mon système Debian 12. Permettez-moi de partager ce qui s'est passé, pourquoi cela s'est produit, comment le résoudre, et ce que vous pouvez apprendre de mon expérience.
Le problème : Erreur de mise à jour Flatpak
Récemment, j'ai essayé de mettre à jour mes applications Flatpak en utilisant la commande flatpak update. Au lieu d'une mise à jour fluide, j'ai rencontré l'erreur suivante :
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)Après quelques recherches, j'ai découvert que le problème était causé par un paquet appelé libcurl3-gnutls, que j'avais installé depuis le dépôt Debian Backports.
Qu'est-ce qui a mal tourné ?
En termes simples, libcurl3-gnutls est une bibliothèque système de base qui aide votre système à communiquer avec Internet.
Lorsque vous installez un paquet depuis le dépôt backports, vous obtenez essentiellement une version plus récente de ce paquet que celle disponible dans la version stable de Debian. Bien que cela puisse être utile pour obtenir les dernières fonctionnalités, cela peut également provoquer des problèmes de compatibilité, en particulier avec les bibliothèques système de base.
Dans mon cas, la version plus récente de libcurl3-gnutls provenant du dépôt backports provoquait le plantage de la commande flatpak update.
Certains utilisateurs ont déjà signalé ce problème. Le développeur Debian Simon McVittie a décrit ce problème dans ce lien comme suit :
[...]
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.
[...]Jusqu'il y a quelques jours, je ne savais pas que je ne devais pas installer les bibliothèques système principales depuis les backports. J'ai donc rétrogradé le paquet problématique comme le développeur le suggérait.
Comment le réparer
Heureusement, la correction est simple. Il vous suffit de rétrograder le paquet libcurl3-gnutls à la version fournie avec la version stable de Debian. Voyons comment le faire :
Étape 1 : Lister les versions disponibles
Tout d'abord, vous devez voir quelles versions de libcurl3-gnutls sont disponibles sur votre système. Vous pouvez le faire en exécutant :
apt-cache policy libcurl3-gnutlsExemple de sortie de mon système Debian 12 :
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 PackagesComme vous le voyez dans la sortie ci-dessus, la version installée est 8.10.1-1~bpo12+1, qui provient du dépôt backports. « bpo » dans le nom du paquet indique qu’il provient des backports. La version stable est 7.88.1-10+deb12u7.
Étape 2 : Rétrograder le paquet
Pour rétrograder libcurl3-gnutls à la version stable, exécutez :
sudo apt install libcurl3-gnutls=7.88.1-10+deb12u7Vous verrez une invite de confirmation vous demandant si vous voulez continuer. Tapez y et appuyez sur Entrée.
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) ...Maintenant, le paquet est rétrogradé à la version 7.88.1-10+deb12u7.
Étape 3 : Vérifier la rétrogradation
Après que la rétrogradation est terminée, vous pouvez vérifier que le paquet a été rétrogradé en exécutant :
apt-cache policy libcurl3-gnutlsVous devriez voir que la version installée est maintenant la version stable, 7.88.1-10+deb12u7.
Étape 4 : Mettre à jour les applications Flatpak
Enfin, essayez de relancer la commande flatpak update. Cette fois, elle devrait fonctionner sans aucune erreur :
![[Update Flatpak Applications.png]]
Cause principale du problème de mise à jour de Flatpak
Si vous avez récemment mis à jour curl vers la version 8.10.0 depuis les backports ou compilé à partir des sources, vous obtiendrez la même erreur en essayant de mettre à jour vos applications Flatpak.
Je pensais que remplacer la version backports de Curl par la version stable résoudrait ce problème, mais ce n'était pas le cas. J'ai dû rétrograder le paquet libcurl3-gnutls pour le résoudre.
La cause principale de l'échec de flatpak update était une incompatibilité entre une version plus récente de la bibliothèque curl (8.10.0) et la bibliothèque libostree utilisée par flatpak.
- Comme mentionné dans ce rapport de bogue, un utilisateur de Debian a signalé qu'après avoir mis à jour
curlvers la version 8.10.0,flatpak updatea commencé à échouer avec un message d'erreur indiquant que le code dans le fichierostree-fetcher-curl.cne devrait pas être atteint. - Cela a été retracé jusqu'à un commit dans la bibliothèque
libcurlqui a modifié la façon dont les sockets sont gérés. - Le problème était particulièrement prononcé pour les utilisateurs qui avaient installé
libcurl3-gnutlsdepuis le dépôtbookworm-backports, car cela fournissait une version plus récente delibcurlque la version stable de Debian. - La rétrogradation de
libcurl3-gnutlsvers la version stable a été confirmée comme solution de contournement. - Le mainteneur du paquet
ostreedans Debian a appliqué des correctifs du projet en amont pour résoudre l'incompatibilité aveccurl8.10.x. - La version corrigée de
ostreea été initialement publiée dans les branches Debian instable et testing, puis rendue disponible dans la branche stable via le dépôtbookworm-proposed-updates.
Par conséquent, les échecs de flatpak update provenaient d'un changement dans libcurl qui affectait le fonctionnement de libostree. Cela a été résolu en appliquant des correctifs à libostree pour restaurer la compatibilité avec la bibliothèque curl plus récente.
Donc, si la commande de mise à jour flatpak échoue après la mise à niveau vers Curl 8.10.0, il suffit de rétrograder le libcurl3-gnutls à la version du dépôt stable comme décrit ci-dessus.
Conséquences potentielles de l'installation des bibliothèques système principales depuis le dépôt backports
- Régressions : La mise à niveau des bibliothèques système de base comme libcurl à partir des backports comporte un risque de régressions. Les régressions sont des conséquences involontaires des mises à jour logicielles, entraînant la rupture ou la dégradation des fonctionnalités existantes. C'est pourquoi les versions stables existent, afin de minimiser ces risques.
- Problèmes de compatibilité : L'installation d'une version plus récente d'une bibliothèque principale à partir des backports peut entraîner des problèmes de compatibilité avec d'autres logiciels qui dépendent de l'ancienne version. Cela est dû au fait que la bibliothèque mise à jour peut contenir des modifications incompatibles avec les logiciels conçus pour la version précédente.
- Conflits de dépendances : Les bibliothèques rétroportées peuvent avoir des dépendances sur des versions plus récentes d'autres bibliothèques qui ne sont pas disponibles dans la version stable. Cela peut créer des conflits de dépendances et empêcher le bon fonctionnement du système.
Leçons apprises
1. Se tenir à Stable pour les bibliothèques principales
En ce qui concerne les bibliothèques système de base, il est généralement plus sûr de s'en tenir aux versions fournies par la version stable de Debian. Ces versions ont été soigneusement testées et sont moins susceptibles de provoquer des problèmes de compatibilité.
2. Utilisez les Backports avec sagesse
Bien que les rétroportages puissent être utiles pour obtenir les dernières fonctionnalités, ils doivent être utilisés avec prudence. N'installez des paquets issus des rétroportages que si vous comprenez les risques potentiels et êtes prêt à gérer les problèmes qui pourraient survenir.
3. Savoir comment rétrograder
Si vous rencontrez des problèmes après avoir installé un paquet depuis les backports, savoir comment rétrograder vers une version stable peut vous faire gagner beaucoup de temps et éviter bien des frustrations.
Conclusion
L'installation des bibliothèques système de base à partir des backports peut entraîner des problèmes inattendus, comme je l'ai appris à mes dépens. En vous en tenant aux versions stables et en comprenant les risques potentiels, vous pouvez éviter ces problèmes et maintenir votre système en bon état de fonctionnement. N'oubliez pas, parfois le plus récent n'est pas toujours le meilleur, surtout en ce qui concerne les composants système de base.
Je ne dis pas que les Backports ne sont pas recommandés. Évitez simplement d’installer les bibliothèques essentielles du système depuis les backports. Vous pouvez les utiliser pour installer d’autres applications.
Lecture connexe :
- Corriger les erreurs de mise à jour Flatpak : problème d'objet de fichier corrompu