Je voudrais installer les deux paquets libsigc++-2.0-0c2a
et libsigc++-2.0-0v5
en même temps, afin d'exécuter certains logiciels.
Apparemment, cependant, les paquets sont en conflit et
Sudo apt-get install libsigc++-2.0-0v5 libsigc++-2.0-0c2a
résulte en
The following packages have unmet dependencies.
libsigc++-2.0-0v5 : Conflicts: libsigc++-2.0-0c2a but 2.2.10-0.2ubuntu2 is to be installed
E: Unable to correct problems, you have held broken packages.
Existe-t-il une stratégie commune pour aborder de telles situations? La solution " Numérotation des versions " ne devrait-elle pas s'appliquer ici?
Je suis d'accord avec MichaelW qu'il contient le même fichier lib avec la même version. Cependant, l’erreur que vous avez n’est pas liée à cela, mais c’est un conflit de version de paquet déclaré dans l’un des paquets:
$ dpkg --info Downloads/libsigc++-2.0-0v5_2.4.1-2_AMD64.deb
...
Conflicts: libsigc++-2.0-0c2a
Replaces: libsigc++-2.0-0c2a
...
Si ces lignes sont supprimées, nous obtenons le même remplacement de fichier lié à l'erreur, semblable à celui-ci:
Unpacking libjline-Java (from .../libjline-Java_1.0-1_all.deb) ...
dpkg: error processing /var/cache/apt/archives/libjline-Java_1.0-1_all.deb (--unpack):
trying to overwrite '/usr/share/Java/jline.jar', which is also in package scala 2.9.2-400
Errors were encountered while processing:
/var/cache/apt/archives/libjline-Java_1.0-1_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Source de l'erreur: erreur dpkg: "en essayant d'écraser le fichier, qui est également dans ..."
Comme ils sont compilés dans la même version, il n’est pas possible de les assembler, changer le nom manuellement n’aidera pas. Les outils du référentiel avaient déjà été compilés pour utiliser libsigc-2.0.so.0
.
Voici une solution facile avec cas de test.
Cas de test:
J'ai cherché le paquet qui dépend de la même bibliothèque en utilisant:
$ apt-cache rdepends libsigc++-2.0-0v5
...
libatkmm-1.6-1v5
inkscape
gparted
gnome-system-monitor
aptitude
Vérifiez que le binaire contenu en dépend vraiment, en utilisant:
$ dpkg -L gnome-system-monitor | grep /bin/
/usr/bin/gnome-system-monitor
$ ldd `which gnome-system-monitor` | grep libsigc
libsigc-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libsigc-2.0.so.0 (0x00007f9491bec000)
Instructions:
Créez un dossier contenant la bibliothèque externe partagée (l'autre version que vous ne pouvez pas installer), exemple:
mkdir ~/Desktop/sand_box/local_so_lib_test
Extraire la bibliothèque du paquet
$ dpkg-deb --extract ~/Downloads/libsigc++-2.0-0c2a_2.2.10-0ubuntu2_AMD64.deb /tmp/libsigc
$ cp -a /tmp/libsigc/usr/lib/x86_64-linux-gnu/* ~/Desktop/sand_box/local_so_lib_test
$ ls -l
total 20
lrwxrwxrwx 1 sneetsher sneetsher 20 Dec 12 2011 libsigc-2.0.so.0 -> libsigc-2.0.so.0.0.0
-rw-r--r-- 1 sneetsher sneetsher 18488 Dec 12 2011 libsigc-2.0.so.0.0.0
Lancez les outils spéciaux dépendants en définissant LD_LIBRARY_PATH
$ LD_LIBRARY_PATH=~/Desktop/sand_box/local_so_lib_test gnome-system-monitor
Vérification:
$ LD_LIBRARY_PATH=~/Desktop/sand_box/local_so_lib_test ldd /usr/bin/gnome-system-monitor | grep libsigc
libsigc-2.0.so.0 => /home/sneetsher/Desktop/sand_box/local_so_lib_test/libsigc-2.0.so.0 (0x00007fabbe960000)
$ LD_LIBRARY_PATH=~/Desktop/sand_box/local_so_lib_test gnome-system-monitor &
$ lsof -c "gnome-system-mo" | grep libsigc
gnome-sys 28655 sneetsher mem REG 8,5 18488 2752572 /home/sneetsher/Desktop/sand_box/local_so_lib_test/libsigc-2.0.so.0.0.0
Les deux paquets contiennent les mêmes fichiers:
Vous pouvez le trouver dans les détails des paquets dans les paquets Ubuntu: http://packages.ubuntu.com/
par exemple. http://packages.ubuntu.com/wily/AMD64/libsigc++-2.0-0v5/filelisthttp://packages.ubuntu.com/precise/AMD64/libsigc++-2-2-) 0c2a/liste de fichiers
Donc, la configuration est causée par les mêmes fichiers dans les packages. Que devrait faire le système maintenant? Puisqu'il ne peut pas décider, il affiche le conflit.
essayez Sudo apt-get build-dep libsigc++-2.0-0v5 libsigc++-2.0-0c2a