Может ли несколько версий одного и того же пакета сосуществовать в одной системе?

Чтобы установить tmux 2.1, мне нужно было установить libtinfo5 версию 6, я сделал это, загрузив архив .deb, содержащий libtinfo5, и установив непосредственно с помощью команды:

sudo dpkg -i libtinfo5_6.0+20160213-1ubuntu1_amd64.deb

удовлетворенная зависимость tmux 2.1 и tmux установлены нормально. Теперь я попытался установить vnstat, используя ошибку

sudo apt-get install vnstat 

apt-get, выходящую со следующим

$ sudo apt-get install vnstat
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
 libncurses5 : Depends: libtinfo5 (= 5.9+20150516-2ubuntu1) but 6.0+20160213-1ubuntu1 is to be installed
 libncursesw5 : Depends: libtinfo5 (= 5.9+20150516-2ubuntu1) but 6.0+20160213-1ubuntu1 is to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

. Я всегда понимал, что система управления пакетами Ubuntu способна устанавливать и управляя несколькими версиями одного и того же пакета, для ситуаций, подобных этому. Другими словами, apt / dpkg распознает

tmux требуется libtinfo5 - version 6 для работы vnstat требуется libtinfo5 - version 5 для работы

Тогда apt / dpkg говорит, Я установлю обе версии. Я вижу, как определенные программы, такие как системный двоичный файл, например bash или ls можно установить только один раз, так как большинство вызовов просто говорят bash -c "<command>", а не bashv.3.2 -c "<command>". Поэтому мой вопрос заключается в том, может ли менеджер пакетов устанавливать и управлять несколькими зависимостями ?, или это просто невозможно, потому что, как и в приведенном выше примере bash, большинство программ совершают вызов зависимостей по имени зависимостей без указания версии. В этом случае проблема выходит за рамки управления диспетчером пакетов (т. Е. В большей степени связана с компиляцией / конфигурацией / организацией программирования), и диспетчер пакетов отказывается в этой точке?

1
задан 18 April 2016 в 02:34

1 ответ

Нет, вы не можете одновременно устанавливать разные версии одного и того же пакета. Обычно зависимости выражаются как по меньшей мере в версии X. Однако для пакетов, которые все построены из одного источника, зависимость часто бывает точной. Это то, с чем вы столкнулись. libncurses5 и libtinfo5 создаются из исходного пакета ncurses. Если вы хотите обновить один из пакетов, созданных из этого источника, вы должны обновить их все, поэтому вам просто нужно получить и установить ту же версию других пакетов, созданных из этого источника, так что все они находятся на одной и той же версии.

1
ответ дан 23 May 2018 в 12:07
  • 1
    спасибо, да, запуск tmux 2.1 для меня не был критическим, поэтому я смог исправить эту проблему, просто удалив tmux 2.1 с помощью dpkg --force-all, затем используйте apt, чтобы вернуться к версии 5.xx libtinfo5 и установить дистрибутив при условии tmux. Но эта проблема была тривиальной, о чем мне действительно было интересно узнать, это тот факт, что два пакета не могут сосуществовать в экосистеме, управляемой пакетами Ubuntu. Это, очевидно, имеет серьезные последствия, но также объясняет так много вопросов и комментариев и т. Д., Которые ранее не имели смысла! – the_velour_fog 18 April 2016 в 05:20
  • 2
    @the_velour_fog, обратите внимание, что некоторые пакеты (в основном библиотеки, ошибка gcc, как правило, приложение, которое это делает) получают новое имя и хранят их файлы в другом месте, так что вы можете установить две версии одновременно. Это делается в большинстве случаев, когда библиотека делает изменения, которые не поддерживают обратную совместимость. В этом случае вы можете увидеть «libfoo4». версия которого равна 4.5.6, и "libfoo5" пакет, версия которого 5.1.2, и вы можете установить оба так, чтобы пакеты, которым нужна более старая, несовместимая версия библиотеки, могут ее получить. – psusi 19 April 2016 в 01:26

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

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