Я пытаюсь установить Erlang из репозитория Erlang Solutions (прокрутите вниз до «Установка с использованием репозитория» на странице загрузки Erlang Solutions.
Текущая версия - Erlang / OTP-20.0-rc2, но я хочу, чтобы Erlang 19.3. Если я попробую следующее:
sudo apt-get install erlang=1:19.3-1
... Я получаю ошибку следующим образом:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
erlang : Depends: erlang-diameter but it is not going to be installed
Depends: erlang-eldap but it is not going to be installed
Recommends: erlang-ic-java but it is not going to be installed
Recommends: erlang-src but it is not going to be installed
Recommends: erlang-examples but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Я знаю, что могу разрешить это используя следующий код:
sudo apt-get install erlang=1:19.3-1 erlang-diameter=1:19.3-1 erlang-eldap=1:19.3-1
Но это требует, чтобы я заранее знал, что такое зависимые пакеты.
Как я «Установка с использованием репозитория» [ ! d1] (т. е. в bash) решить это в «общем» случае? По крайней мере, для Erlang / OTP, во всяком случае? Примечание: я знаю, что могу sudo apt-get install esl-erlang=1:19.3 (за исключением того, что он обновит если я не использую страницу загрузки ).
То, что вы делаете, неверно, потому что даже если вы установите версию 19.3 вручную, она будет обновлена до версии 20 * при следующем запуске apt upgrade. Что вам нужно сделать, так это создать файл /etc/apt/preferences.d/erlang со следующим содержимым
Package: erlang* esl-erlang
Pin: version 1:19.3*
Pin-Priority: 501
Это говорит Apt, что для всех пакетов, чье имя содержит erlang, версии, начиная с 19.3, должны быть предпочтительнее все другие версии, даже более новые. Тогда простой apt install erlang должен установить версию 19.3 со всеми ее правильными зависимостями.
То, что вы делаете, неверно, потому что даже если вы установите версию 19.3 вручную, она будет обновлена до версии 20 * при следующем запуске apt upgrade. Что вам нужно сделать, так это создать файл /etc/apt/preferences.d/erlang со следующим содержимым
Package: erlang* esl-erlang
Pin: version 1:19.3*
Pin-Priority: 501
Это говорит Apt, что для всех пакетов, чье имя содержит erlang, версии, начиная с 19.3, должны быть предпочтительнее все другие версии, даже более новые. Тогда простой apt install erlang должен установить версию 19.3 со всеми ее правильными зависимостями.
То, что вы делаете, неверно, потому что даже если вы установите версию 19.3 вручную, она будет обновлена до версии 20 * при следующем запуске apt upgrade. Что вам нужно сделать, так это создать файл /etc/apt/preferences.d/erlang со следующим содержимым
Package: erlang* esl-erlang
Pin: version 1:19.3*
Pin-Priority: 501
Это говорит Apt, что для всех пакетов, чье имя содержит erlang, версии, начиная с 19.3, должны быть предпочтительнее все другие версии, даже более новые. Тогда простой apt install erlang должен установить версию 19.3 со всеми ее правильными зависимостями.