Установка конкретной версии пакета и связанных с ним пакетов

Я пытаюсь установить 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 (за исключением того, что он обновит если я не использую страницу загрузки ).

0
задан 16 June 2017 в 13:58

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 со всеми ее правильными зависимостями.

0
ответ дан 22 May 2018 в 21:29
  • 1
    Это не работает: (1) ESL deb добавляет аналогичную инструкцию в /etc/apt/preferences; (2) даже с удаленным, и это добавлено, apt-get install erlang все еще жалуется (та же ошибка, что и в вопросе). – Roger Lipscombe 16 June 2017 в 13:56
  • 2
    Для номера версии понадобилось 1:19.3*. Я отредактировал ответ. – Roger Lipscombe 16 June 2017 в 14:12
  • 3
    @RogerLipscombe Хорошо, я не был полностью уверен в 1: ... Вы внесли другие изменения; они также необходимы? – fkraiem 16 June 2017 в 14:59
  • 4
    Не уверен, но это то, с чем я закончил, и он работает. Я не хотел тратить слишком много времени, возвращая каждый бит. Мой пакет glob немного более ограничительный, чем ваше регулярное выражение, а manpages.debian.org/jessie/apt/apt_preferences.5.en.html предлагает (для меня, я мог бы неправильно его понять), что приоритет & gt; = 990 была правильной. – Roger Lipscombe 16 June 2017 в 15:01
  • 5
    Действительно, ваша версия только ловит пакеты, чье имя запускает с erlang; в частности, он не улавливает esl-erlang, поэтому Apt может захотеть его обновить, что может вызвать проблемы. – fkraiem 16 June 2017 в 15:13

То, что вы делаете, неверно, потому что даже если вы установите версию 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 со всеми ее правильными зависимостями.

0
ответ дан 18 July 2018 в 11:33

То, что вы делаете, неверно, потому что даже если вы установите версию 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 со всеми ее правильными зависимостями.

0
ответ дан 24 July 2018 в 19:49

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

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