3 votes

Apt et la correction des dépendances incorrectes

Je compile généralement tout ce dont j'ai besoin mais j'essaie de standardiser ma plateforme de développement. Je lance un schroot de développement sur ubuntu (base 11.10 : développement 12.whatever).

J'ai installé boost 1.48 et maintenant j'essaie d'installer mongodb-dev. Il semble dépendre indirectement de libboost1.46-dev via libboost-dev. Quelle est la solution la plus propre et la plus durable pour moi pour résoudre ce problème ?

État de mon système :

(precise_amd64)hassan@hassan-ubuntu:~/dev/twit/scripts/bin$ sudo apt-get install mongodb-dev
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Certains paquets ne peuvent pas être installés. Cela peut signifier que vous avez
demandé l'impossible ou que vous utilisez la distribution unstable
et que certains paquets nécessaires n'ont pas encore été créés
ou ne sont pas sortis d'Incoming.
Les informations suivantes peuvent aider à résoudre la situation :

Les paquets suivants contiennent des dépendances non satisfaites :
 mongodb-dev : Dépend: libboost-dev mais il ne sera pas installé
E: Impossible de corriger les problèmes, des paquets défectueux sont en mode « garder en l'état ».

(precise_amd64)hassan@hassan-ubuntu:~/dev/twit/scripts/bin$ sudo apt-get install libboost-dev
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Certains paquets ne peuvent pas être installés. Cela peut signifier que vous avez
demandé l'impossible ou que vous utilisez la distribution unstable
et que certains paquets nécessaires n'ont pas encore été créés
ou ne sont pas sortis d'Incoming.
Les informations suivantes peuvent aider à résoudre la situation :

Les paquets suivants contiennent des dépendances non satisfaites :
 libboost-dev : Dépend: libboost1.46-dev mais il ne sera pas installé
E: Impossible de corriger les problèmes, des paquets défectueux sont en mode « garder en l'état ».

(precise_amd64)hassan@hassan-ubuntu:~/dev/twit/scripts/bin$ sudo apt-get install libboost1.48-dev
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
libboost1.48-dev est déjà la version la plus récente.
0 mis à jour, 0 nouvellement installés, 0 à enlever et 3 non mis à jour.

3voto

jofel Points 281

Comme vous l'avez remarqué, le paquet (vide) libboost-dev dépend de libbost1.46-dev au lieu de libbost1.48-dev (en raison de quelques problèmes avec les paquets existants).

Pour résoudre ce problème, reconstruisez-le avec

apt-get source  libboost-dev # obtenir les fichiers source
cd boost-defaults*
sed -i -e "s/1.46/1.48/g" debian/control # remplacer 1.46 par 1.48
debuild -uc -us # reconstruire le paquet
dpkg -i ../libboost*.deb # l'installer.

Pour cela, vous devez avoir le paquet devscripts installé.

La manière la plus correcte serait d'ajouter une nouvelle entrée de journal des modifications à debian/changelog pour éviter la mise à jour du paquet.

En alternative, vous pourriez créer vous-même un paquet factice avec equivs.

0 votes

Il y a un ] qui traîne sur le lien

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X