Sur mon Debian bulleyes (encore « testing » pour l’instant, mais plus pour longtemps), je me suis récemment retrouvé avec une erreur étrange lors de la mise à jour de mon système :
$ sudo apt upgrade
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Vous pouvez lancer « apt --fix-broken install » pour corriger ces problèmes.
Les paquets suivants contiennent des dépendances non satisfaites :
libps2000a : Dépend: libpicoipp (>= 1.3.0-4r78) mais 1.3.0-4r29 est installé
libps3000a : Dépend: libpicoipp (>= 1.3.0-4r78) mais 1.3.0-4r29 est installé
libps4000 : Dépend: libpicoipp (>= 1.3.0-4r78) mais 1.3.0-4r29 est installé
libps4000a : Dépend: libpicoipp (>= 1.3.0-4r78) mais 1.3.0-4r29 est installé
libps5000a : Dépend: libpicoipp (>= 1.3.0-4r78) mais 1.3.0-4r29 est installé
libps6000 : Dépend: libpicoipp (>= 1.3.0-4r78) mais 1.3.0-4r29 est installé
libps6000a : Dépend: libpicoipp (>= 1.3.0-4r78) mais 1.3.0-4r29 est installé
picoscope : Dépend: libpicoipp (= 1.3.0-4r78) mais 1.3.0-4r29 est installé
E: Dépendances non satisfaites. Essayez « apt --fix-broken install » sans paquet
(ou indiquez une solution).
Et en faisant un apt --fix-broken install
je n’obtenais pas beaucoup mieux, mais au moins j’ai trouvé de l’info :
$ sudo apt --fix-broken install
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Correction des dépendances... Fait
Les paquets supplémentaires suivants seront installés :
libpicoipp
Les paquets suivants seront mis à jour :
libpicoipp
1 mis à jour, 0 nouvellement installés, 0 à enlever et 998 non mis à jour.
1150 partiellement installés ou enlevés.
Il est nécessaire de prendre 0 o/4 260 ko dans les archives.
Après cette opération, 43,0 ko d'espace disque seront libérés.
Souhaitez-vous continuer ? [O/n] O
Lecture des fichiers de modifications (« changelog »)... Terminé
(Lecture de la base de données... 490198 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../libpicoipp_1.3.0-4r78_amd64.deb ...
dpkg: erreur de traitement de l'archive /var/cache/apt/archives/libpicoipp_1.3.0-4r78_amd64.deb (--unpack) :
conffile name 'etc/ld.so.conf.d/picoscope.conf' is not an absolute pathname
Des erreurs ont été rencontrées pendant l'exécution :
/var/cache/apt/archives/libpicoipp_1.3.0-4r78_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Où se situe le problème ?
Très visiblement, le problème vient du paquet libpicoipp. Un paquet permettant de faire fonctionner les picoscopes de chez Picotech. Ma machine va chercher ce paquet car j’ai ajouté deb https://labs.picotech.com/debian/ picoscope main
aux dépôts.
Il semblerait qu’au moins depuis la version 1.1, et encore dans la version 1.3, ce paquet soit mal formé. Le fichier DEBIAN/conffiles
du paquet pointe vers etc/ld.so.conf.d/picoscope.conf
au lieu de /etc/ld.so.conf.d/picoscope.conf
. Too bad.
Comment corriger cacher le problème ?
J’ai d’abord cherché à supprimer le paquet. Une chose que j’ai appris, et qui semble pourtant logique, c’est que pour supprimer le paquet, il faut supprimer aussi tous les paquets qui en dépendent.
En regardant le résultat de sudo apt upgrade
, j’ai donc pu lancer sudo apt remove libps2000a libps3000a libps4000 libps4000a libps5000a libps6000 libps6000a picoscope
. Suppression réussie. Une manière comme une autre de résoudre un problème non ?
Ce qui a permis de mettre à jour mon système avec sudo apt upgrade
!
Comment vraiment corriger ?
Pour pouvoir continuer à utiliser les picoscopes, ce topic du forum Picotech explique le problème et la solution possible : corriger manuellement le paquet Debian.
Voilà un bon exercice !
Plutôt que de bêtement faire un tar xf
du paquet (un paquet Debian est en réalité une archive au contenu bien précis et ayant l’extension .deb), on va utiliser dpkg-deb -R
pour l’ouvrir et dpkg-deb -b
pour le recréer. Entre temps, on modifiera le fichier incorrect.
Je n’ai pas encore testé cette dernière étape, mais cela doit donner quelque chose comme ça :
# Unpack
mkdir ~/tmp && dpkg-deb -R /var/cache/apt/archives/libpicoipp_1.3.0-4r78_amd64.deb ~/tmp
# Fix package
vim ~/tmp/DEBIAN/conffiles
# Remove first line containing "etc/ld.so.conf.d/picoscope.conf"
# Recreate the package
dpkg-deb -b ~/temp ~/libpicoipp_1.3.0-4r78_amd64.deb
# Install it
sudo apt install ~/libpicoipp_1.3.0-4r78_amd64.deb
# Let's reinstall the required Pico drivers
sudo apt install libps2000a libps3000a libps4000 libps4000a libps5000a libps6000 libps6000a picoscope
One Response to libpicoipp installation error