我正在尝试从 Erlang Solutions 存储库安装 Erlang(向下滚动到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
但这需要我提前知道依赖包是什么。
在“一般”情况下,我如何以编程方式(即在 bash 中)解决这个问题?至少对于 Erlang/OTP,无论如何?
注意:我知道我可以sudo apt-get install esl-erlang=1:19.3
(除非我使用fkraiem 的答案,否则它会升级)。
你这样做是不正确的,因为即使你手动安装 19.3 版本,下次运行时也会升级到 20* 版本
apt upgrade
。您应该做的是创建一个/etc/apt/preferences.d/erlang
包含以下内容的文件这告诉 Apt,对于名称包含 的所有包,以
erlang
开头的版本19.3
应该优先于所有其他版本,甚至是较新的版本。然后一个简单的apt install erlang
应该安装版本 19.3 及其所有正确的依赖项。1. 删除以前的 Erlang 版本/包:
2. 手动添加存储库条目:
要获得 Ubuntu 代号类型
$ lsb_release -c
. 就我而言,它是xenial。$ sudo nano /etc/apt/sources.list
并在文件末尾添加以下文本:内容如下:
其中21.3是 Erlang/OTP 的版本。
3.安装二郎:
4.检查安装的Erlang版本: