Estou tentando instalar o Erlang do repositório Erlang Solutions (role para baixo até "Instalação usando o repositório" na página de download do Erlang Solutions .
A versão atual é Erlang/OTP-20.0-rc2, mas eu quero Erlang 19.3. Se eu tentar o seguinte:
sudo apt-get install erlang=1:19.3-1
...Recebo o seguinte erro:
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 exige que eu saiba, com antecedência, quais são os pacotes dependentes.
Como resolvo isso programaticamente (ou seja, no bash) no caso "geral"? Pelo menos para Erlang/OTP, afinal?
Nota: eu sei que posso sudo apt-get install esl-erlang=1:19.3
(exceto que ele atualizará, a menos que eu use a resposta de fkraiem ).
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 o
apt upgrade
. O que você deve fazer é criar um arquivo/etc/apt/preferences.d/erlang
com o seguinte conteúdoIsso diz ao Apt que, para todos os pacotes cujo nome contém
erlang
, as versões que começam com19.3
devem ser preferidas a todas as outras versões, mesmo as mais novas. Então um simplesapt install erlang
deve instalar a versão 19.3 com todas as suas dependências corretas.1. Remova as versões/pacotes anteriores do Erlang:
2. Adicione a entrada do repositório manualmente:
Para obter o nome de código do Ubuntu, digite
$ lsb_release -c
. No meu caso é xenial .$ sudo nano /etc/apt/sources.list
e adicione o seguinte texto no final do arquivo:com o seguinte conteúdo:
onde 21.3 é a versão de Erlang/OTP.
3. Instale Erlang:
4. Verifique a versão Erlang instalada: