我该如何安装特定版本的Erlang/OTP?

8
我可以为您翻译此段内容。这段文字涉及到IT技术,描述了一个使用puppet/vagrant/Virtual box进行配置的项目,并且在erlang和rabbitmq-server周围出现了vagrant provision故障。
具体错误如下:
==> default: err: /Stage[main]/Rabbitmq::Install/Package[rabbitmq-server]/ensure: change from purged to present failed: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install rabbitmq-server' returned 100: Reading package lists...
==> default: Building dependency tree...
==> default: Reading state information...
==> default: Some packages could not be installed. This may mean that you have
==> default: requested an impossible situation or if you are using the unstable
==> default: distribution that some required packages have not yet been created
==> default: or been moved out of Incoming.
==> default: The following information may help to resolve the situation:
==> default:
==> default: The following packages have unmet dependencies:
==> default:  rabbitmq-server : Depends: erlang-nox (>= 1:16.b.3) but it is not going to be installed or
==> default:                             esl-erlang but it is not installable
==> default:                    Depends: init-system-helpers (>= 1.13~) but it is not installable
==> default: E: Unable to correct problems, you have held broken packages.

我已经按照http://www.scotthelm.com/2013/11/27/rabbit-mq-and-erlang-and-ubuntu-oh-my.html中列出的步骤进行了操作。我安装了erlang和erlagn-nox,但是当我运行erl时,我的版本显示为R14B04,而我想要与rabbitmq兼容的r16版本。我该如何安装特定版本的erlang?
目前,我尝试了sudo apt-get install erlang=1:16.b.3-dfsg-1ubuntu2,但找不到该版本。我尝试了几种变化,但没有成功。我的另一个想法是下载tar文件本身并构建它,但这似乎过于繁琐,而且我觉得我可能错过了更明显的东西。

你尝试过官方指南了吗? - Alex Buyny
你正在使用的Ubuntu版本是什么? - tux
1
感谢您的帮助。我摧毁了这台机器,然后只使用sudo apt-get install erlang重新安装了它,现在它可以正常工作了。但是,在执行此操作之前,我按照官方指南@AlexBuyny建议的方式安装了erlang-esl,也成功了。不知道为什么在那台特定的机器上没有任何命令可以正确更新erlang。 - Brian Edelman
6个回答

33

你可以使用Erlang-Solutions的软件仓库:

wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
sudo dpkg -i erlang-solutions_1.0_all.deb
sudo apt-get update
sudo apt-get install esl-erlang=1:19.3.6

在执行以下命令后,为什么会出现这个错误信息: sudo apt-get install esl-erlang=1:19.3.6“未找到 'esl-erlang' 的版本 '1:19.3.6'。” - Shree Prakash
3
如果有人遇到与上述相同的问题,即“…找不到esl-erlang”,请使用以下命令检查可用包apt-cache policy esl-erlang。目前只有1:19.3.6.8或1:19.3.6.12-1可以使用。简而言之,请使用命令sudo apt-get install esl-erlang=1:19.3.6.8。 - Matzy schneider

5

1. 删除之前的Erlang版本/包:

$ sudo apt-get purge erlang esl-erlang erlang-base erlang-crypto erlang-eldap erlang-inets erlang-mnesia erlang-os-mon
$ sudo apt-get autoremove
$ sudo apt-get install -f

$ sudo rm -rf /usr/lib/erlang
$ cd /usr/local/bin
$ sudo rm -f erl
$ sudo rm -f erlc
$ sudo rm -f epmd
$ sudo rm -f run_erl
$ sudo rm -f to_erl
$ sudo rm -f dialyzer
$ sudo rm -f typer
$ sudo rm -f escript
$ sudo rm -f ct_run

2. 手动添加存储库条目:

  • 输入$ lsb_release -c获取Ubuntu版本名称。在我的情况下,它是xenial

  • $ sudo nano /etc/apt/sources.list并在文件末尾添加以下文本:

# Erlang Solutions
deb https://packages.erlang-solutions.com/ubuntu xenial contrib
  • 创建文件/etc/apt/preferences.d/erlang
$ sudo touch /etc/apt/preferences.d/erlang
$ sudo nano /etc/apt/preferences.d/erlang

好的,请提供需要翻译的内容。
Package: erlang* esl-erlang
Pin: version 1:21.3*
Pin-Priority: 501

其中21.3是Erlang/OTP的版本号。

3. 安装Erlang:

$ sudo apt-get update
$ sudo apt-get install esl-erlang
$ sudo ln -s /usr/lib/erlang/bin/erl /usr/local/bin/erl

4. 检查安装的Erlang版本:

$ erl -eval '{ok, Version} = file:read_file(filename:join([code:root_dir(), "releases", erlang:system_info(otp_release), "OTP_VERSION"])), io:fwrite(Version), halt().' -noshell

相关链接: https://www.erlang-solutions.com/resources/download.html

该链接是关于Erlang技术的下载资源页面。

4

您可以使用kerl在同一台计算机上安装不同版本的Erlang/OTP。


1

1

首先从http://erlang.org/download下载所需版本。

wget http://www.erlang.org/download/otp_src_R16B01.tar.gz
tar -xvzf otp_src_R16B01.tar.gz
sudo chmod -R 777 otp_src_R16B01
cd otp_src_R16B01
sudo ./configure
sudo make
sudo make install

祝一切顺利


我在执行./configure命令时遇到了以下错误... configure: error: 找不到curses库函数 configure: error: /bin/bash '/home/username/otp_src_R16B01/erts/configure' 对于erts的配置失败 - akash777.sharma
请执行以下命令安装所需的库文件:sudo apt-get install libncurses5-dev libncursesw5-dev - Skyrocker

0
安装Erlang
cd /tmp/

wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb

sudo dpkg -i erlang-solutions_1.0_all.deb

sudo apt-get update -y

sudo apt-get install erlang -y


Install RabbitMQ from source

cd /tmp/

echo 'echo "deb http://www.rabbitmq.com/debian/ testing main" >> 
/etc/apt/sources.list' | sudo -s

wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc

sudo apt-key add rabbitmq-signing-key-public.asc

sudo apt-get update -y

sudo apt-get install rabbitmq-server -y

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接