如何安装特定版本的 Erlang/OTP?
Posted
技术标签:
【中文标题】如何安装特定版本的 Erlang/OTP?【英文标题】:How do I install a specific version of Erlang/OTP? 【发布时间】:2017-11-24 22:20:54 【问题描述】:我继承了一个带有 puppet/vagrant/Virtual box 设置的项目。流浪者的规定正在打破我围绕 rabbitmq-server 的 erlangs。
错误:
==> 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 本身并构建它,但这似乎太过分了,而且我似乎遗漏了更明显的东西。
【问题讨论】:
你试过official guide吗? 你用的是什么ubuntu版本? 感谢您的帮助。我摧毁了这台机器,然后只用sudo apt-get install erlang
又做了一次,它成功了。然而,在这样做之前,官方指南@AlexBuyny 建议,我安装了指南建议的 erlang-esl,它也能正常工作。不知道为什么没有命令会在该特定机器上正确更新 erlang。
【参考方案1】:
您可以使用 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 "E: 没有找到 'esl-erlang' 的版本 '1:19.3.6' " 对于遇到与上述相同问题的任何人“... esl-erlang was not found”。请使用以下命令检查可用的软件包 apt-cache policy esl-erlang。现在只有 1:19.3.6.8 或 1:19.3.6.12-1 是你应该使用的。 TL;DR: sudo apt-get install esl-erlang=1:19.3.6.8【参考方案2】:你可以使用kerl在同一台机器上安装不同的Erlang/OTP。
【讨论】:
【参考方案3】: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 自动删除 $ 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 透析器 $ sudo rm -f 打字机 $ sudo rm -f escript $ sudo rm -f ct_run
2。手动添加存储库条目:
要获取 Ubuntu 代号,请输入 $ lsb_release -c
。就我而言,它是 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 更新 $ 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
【讨论】:
【参考方案4】:先从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 命令中出现以下错误... erts 失败sudo apt-get install libncurses5-dev libncursesw5-dev
github.com/kerl/kerl/issues/17#issuecomment-353278420【参考方案5】:
您也可以查看名为 EVM 的解决方案
这里是详细信息:https://github.com/robisonsantos/evm
【讨论】:
【参考方案6】:安装二郎
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
【讨论】:
以上是关于如何安装特定版本的 Erlang/OTP?的主要内容,如果未能解决你的问题,请参考以下文章
Erlang/OTP 升级丢失现有的 RabbitMQ 消息