Picotech

libpicoipp installation error

Publié dans Geekeries | Marqué avec , ,
Share

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *