Instale uma versão particular de um pacote e pacotes relacionados

0

Estou tentando instalar o Erlang no repositório Erlang Solutions (vá até "Instalação usando o repositório" nas Soluções Erlang página de download .

A versão atual é Erlang / OTP-20.0-rc2, mas eu quero o Erlang 19.3. Se eu tentar o seguinte:

sudo apt-get install erlang=1:19.3-1

... recebo um erro da seguinte forma:

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.

Eu sei que posso resolver isso usando o seguinte:

sudo apt-get install erlang=1:19.3-1 erlang-diameter=1:19.3-1 erlang-eldap=1:19.3-1

Mas isso requer que eu saiba, com antecedência, quais são os pacotes dependentes.

Como faço para programaticamente (ou seja, no bash) resolver isso no caso "geral"? Pelo menos para o Erlang / OTP, afinal?

Nota: Eu sei que posso sudo apt-get install esl-erlang=1:19.3 (exceto que ele irá atualizar a menos que eu use resposta de fkraiem ) .

    
por Roger Lipscombe 16.06.2017 / 11:39

1 resposta

0

O que você está fazendo não está correto, porque mesmo que você instale a versão 19.3 manualmente, ela será atualizada para a versão 20 * na próxima vez que você executar apt upgrade . O que você deve fazer é criar um arquivo /etc/apt/preferences.d/erlang com o seguinte conteúdo

Package: erlang* esl-erlang
Pin: version 1:19.3*
Pin-Priority: 501

Isso diz ao Apt que, para todos os pacotes cujo nome contém erlang , as versões iniciadas com 19.3 devem ser preferidas em relação a todas as outras versões, mesmo as mais recentes. Em seguida, um simples apt install erlang deve instalar a versão 19.3 com todas as suas dependências corretas.

    
por fkraiem 16.06.2017 / 11:54