Как решить конфликты пакета?

Я хотел бы установить оба пакета libsigc++-2.0-0c2a и libsigc++-2.0-0v5 одновременно, для выполнения определенного программного обеспечения.

По-видимому, однако, пакеты конфликтуют и

sudo apt-get install libsigc++-2.0-0v5 libsigc++-2.0-0c2a

результаты в

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.

Существует ли общая стратегия приблизиться к таким ситуациям? Не был должен "Версия, нумерующая" решение, применяется здесь?

2
задан 26 February 2016 в 20:33

3 ответа

Проблема

я соглашаюсь с MichaelW, что это содержит тот же библиотечный файл с той же версией. Однако ошибка, которую Вы получили, не связана, что, но это - конфликт версий пакетов, объявленный в одном из пакетов:

$ dpkg --info Downloads/libsigc++-2.0-0v5_2.4.1-2_amd64.deb
...
 Conflicts: libsigc++-2.0-0c2a
 Replaces: libsigc++-2.0-0c2a
...

, Если те строки удалены, мы добрались, ошибка связала ту же перезапись файлов, подобную этому:

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)

Ошибочный Источник: dpkg ошибка: " попытка перезаписать файл, который находится также в..."

, Поскольку они компилируются в ту же версию, не возможно поместить их вместе, никакое меняющее имя вручную не поможет. Инструменты на репозитории уже скомпилировали для использования libsigc-2.0.so.0.

Решением

Здесь является легкое решение с тестовым сценарием.

Тест:

я искал пакет зависеть от того же использования библиотеки:

$ apt-cache rdepends libsigc++-2.0-0v5
...
  libatkmm-1.6-1v5
  inkscape
  gparted
  gnome-system-monitor
  aptitude

Проверяют, что содержавший двоичный файл действительно зависит от него, с помощью:

$ 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)

Инструкции:

  1. Создают папку для содержания внешнего общего lib (другая версия, которую Вы не можете установить), пример:

    mkdir ~/Desktop/sand_box/local_so_lib_test
    
  2. Извлечение библиотека fro пакет

    $ 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
    
  3. Запускают специальные зависимые инструменты, Проверкой установки LD_LIBRARY_PATH

    $ LD_LIBRARY_PATH=~/Desktop/sand_box/local_so_lib_test gnome-system-monitor
    

:

$ 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
2
ответ дан 2 December 2019 в 01:57

Оба пакета содержат те же файлы:

  • /usr/lib/x86_64-linux-gnu/libsigc-2.0.so.0
  • /usr/lib/x86_64-linux-gnu/libsigc-2.0.so.0.0.0

можно найти это в деталях пакета, ищущих в пакетах Ubuntu: http://packages.ubuntu.com/

, например, http://packages.ubuntu.com/wily/amd64/libsigc++-2.0-0v5/filelist http://packages.ubuntu.com/precise/amd64/libsigc++-2.0-0c2a/filelist

, Таким образом, конфликт вызывается теми же файлами в пакетах. Что система должна сделать теперь? Так как это не может решить это, это отображает конфликт.

2
ответ дан 2 December 2019 в 01:57

попробуйте sudo apt-get build-dep libsigc++-2.0-0v5 libsigc++-2.0-0c2a

1
ответ дан 2 December 2019 в 01:57

Другие вопросы по тегам:

Похожие вопросы: