Modifier les dependances d’un paquet Debian

Quand on installe des paquets provenant de sources non officielles, il arrive fréquemment que les dépendances déclarées dans les paquets ne correspondent pas au système sur lequel on installe ces paquets.

C’est le cas par exemple lorsque l’on installe la version courante d’Opera sur Ubuntu 5.10 “BreezyBadger” ou celle de Skype sur Ubunto 5.04 “HoaryHedgehog” :

vdv@vaio:~ $  sudo dpkg -i /opt/downloads/skype_1.2.0.17-1_i386.deb
Password:
(Lecture de la base de données... 169348 fichiers et répertoires déjà installés.)
Préparation du remplacement de skype 1.2.0.17-1 (en utilisant .../skype_1.2.0.17-1_i386.deb) ...
Dépaquetage de la mise à jour de skype ...
dpkg : des problèmes de dépendances empêchent la configuration de skype :
 skype dépend de libqt3c102-mt (>= 3:3.3.3.2) ; cependant :
  La version de libqt3c102-mt sur le système est 3:3.3.3-7ubuntu3.
dpkg : erreur de traitement de skype (--install) :
 problèmes de dépendances - laissé non configuré
Des erreurs ont été rencontrées pendant l'exécution :
 skype

Face à ce type de solution, on peut forcer l’installation avec l’option “–force” :

vdv@vaio:~ $  sudo dpkg --force depends -i /opt/downloads/skype_1.2.0.17-1_i386.deb
Password:
(Lecture de la base de données... 169348 fichiers et répertoires déjà installés.)
Préparation du remplacement de skype 1.2.0.17-1 (en utilisant .../skype_1.2.0.17-1_i386.deb) ...
Dépaquetage de la mise à jour de skype ...
dpkg : skype : problèmes de dépendances, mais configuration comme demandé :
 skype dépend de libqt3c102-mt (>= 3:3.3.3.2) ; cependant :
  La version de libqt3c102-mt sur le système est 3:3.3.3-7ubuntu3.
Paramétrage de skype (1.2.0.17-1) ...

        

Cela permet de tester l’application et de vérifier qu’elle fonctionne sur votre système, mais le paquet est considéré être “cassé” et le système ne se prive pas de vous le rappeler :

vdv@vaio:~ $ sudo apt-get dist-upgrade
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Vous pouvez lancer « apt-get -f install » pour corriger ces problèmes.
Les paquets suivants contiennent des dépendances non satisfaites :
  skype: Dépend: libqt3c102-mt (>= 3:3.3.3.2) mais 3:3.3.3-7ubuntu3 est installé
E: Dépendances manquantes. Essayez d'utiliser l'option -f.
            

Si vous essayez “apt-get -f install”, celui-ci propose de désinstaller le paquet récalcitrant et on est revenu au point de départ:

vdv@vaio:~ $ sudo apt-get -f install
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Correction des dépendances... Fait
Les paquets suivants seront ENLEVÉS :
  skype
0 mis à jour, 0 nouvellement installés, 1 à enlever et 3 non mis à jour.
Il est nécessaire de prendre 0o dans les archives.
Après dépaquetage, 9160ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? n
Annulation.
            

Une solution à ce problème est de corriger les dépendances dans le paquet lui-même, ce qui est beaucoup plus facile qu’on ne pourrait le redouter…

Il faut pour cela extraire les fichiers du paquet :

vdv@vaio:~ $ cd /tmp
vdv@vaio:/tmp $ dpkg-deb -x /opt/downloads/skype_1.2.0.17-1_i386.deb skype_1.2.0.17-1_i386
            

Cette commande n’extrait pas le fichiers de contrôle qu’il faut extraire dans un deuxième temps :

vdv@vaio:/tmp $ mkdir skype_1.2.0.17-1_i386/DEBIAN
vdv@vaio:/tmp $ dpkg-deb -e /opt/downloads/skype_1.2.0.17-1_i386.deb skype_1.2.0.17-1_i386/DEBIAN
            

On peut maintenant éditer le fichier de contrôle :

vdv@vaio:/tmp $ gvim skype_1.2.0.17-1_i386/DEBIAN/control
            

Pour modifier le numéro de version dans la ligne :

Depends: libc6 (>= 2.3.2.ds1-4), libgcc1 (>= 1:3.4.1-3), libqt3c102-mt (>= 3:3.3.3.2), libstdc++5 (>= 1:3.3.4-1), libx11-6 | xlibs (>> 4.1.0), libxext6 | xlibs (>> 4.1.0)
            

Par celui de notre installation :

Depends: libc6 (>= 2.3.2.ds1-4), libgcc1 (>= 1:3.4.1-3), libqt3c102-mt (>= 3:3.3.3-7ubuntu3), libstdc++5 (>= 1:3.3.4-1), libx11-6 | xlibs (>> 4.1.0), libxext6 | xlibs (>> 4.1.0)

Il suffit maintenant de reconstituer le paquet :

vdv@vaio:/tmp $ dpkg-deb -b skype_1.2.0.17-1_i386
dpkg-deb : construction du paquet « skype » dans « skype_1.2.0.17-1_i386.deb ».
            

Et de le réinstaller :

vdv@vaio:/tmp $ sudo dpkg -i skype_1.2.0.17-1_i386.deb
(Lecture de la base de données... 169348 fichiers et répertoires déjà installés.)
Préparation du remplacement de skype 1.2.0.17-1 (en utilisant skype_1.2.0.17-1_i386.deb) ...
Dépaquetage de la mise à jour de skype ...
Paramétrage de skype (1.2.0.17-1) ...

Bien entendu, cela ne fonctionne que si le problème de dépendances était fictif, d’où l’utilité de tester cela avec la commande “dpkg –force depends” avant d’entreprendre l’opération, mais lorsque c’est le cas, cette manipulation assez simple règle le problème de manière définitive… jusqu’à la prochaine version!

Share and Enjoy:
  • Identi.ca
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Twitter
  • Add to favorites

4 thoughts on “Modifier les dependances d’un paquet Debian”

  1. Parfait, c’est exactement ce que j’avais besoin de savoir pour le changement de dependances, et en particulier pour skype sur Debian ET sur kubuntu. Ca pouvait pas tomber mieux.

    Mille mercis.

    Ton1

  2. Thank for your work
    For Ubuntu 5.10 the latest Skype_1.2.0.18-1_i386.deb need also libqt3c102-mt (>= 3:3.3.3.2).
    Change Control file with libqt3-mt (>= 3:3.3.3.2) which is include in Ubuntu 5.10 seem to work as well.

Leave a Reply

Your email address will not be published. Required fields are marked *

Enter your OpenID as your website to log and skip name and email validation and moderation!