Чтобы установить 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 выше, большинство программ вызывают вызов зависимости по имени зависимости без указания версии. В каком случае проблема находится вне контроля диспетчера пакетов (т.е. это скорее проблема компиляции / конфигурации / организации программирования), и диспетчер пакетов в этот момент отказывается?
Нет, невозможно иметь две версии одного и того же пакета , потому что будут конфликтующие файлы. Другое дело, если библиотека может быть установлена в двух разных версиях одновременно. Если вы смелы, вы можете получить исходный код для одной версии и посмотреть, сможете ли вы установить его в другой каталог. Это вполне может серьезно испортить вашу систему. Это также могло просто не работать. Dpkg этого не устроит, поэтому вам придется получить исходный код одной из программ и скомпилировать его.Но имейте в виду, что как только вы начнете компилировать программы самостоятельно, вы можете вызвать у себя самые разные проблемы.
Нет, у вас не может быть установленных разных версий одного и того же пакета. в то же время. Обычно зависимости выражаются как по крайней мере версия X. Однако для пакетов, которые все построены из одного источника, зависимость часто бывает точной. Это то, с чем вы столкнулись. libncurses5 и libtinfo5 созданы из исходного пакета ncurses. Если вы хотите обновить один из пакетов, созданных из этого источника, вы должны обновить их все, поэтому вам просто нужно получить и установить одну и ту же версию других пакетов, созданных из этого источника, чтобы все они были в одной версии.