简体   繁体   中英

How do I install a specific version of Erlang/OTP?

I have inherited a project with a puppet/vagrant/Virtual box setup. The vagrant provision is breaking around my erlangs surrounding rabbitmq-server.

the error:

==> 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.

I have gone through the steps listed http://www.scotthelm.com/2013/11/27/rabbit-mq-and-erlang-and-ubuntu-oh-my.html . I installed erlang and erlagn-nox, but when i run erl my version shows as R14B04 when i want the r16 that rabbitmq plays well with. How do I install a specific version of erlang?

Currently I have tried sudo apt-get install erlang=1:16.b.3-dfsg-1ubuntu2 but it can't be found. Have tried several variations but no luck. My other idea is to download the tar itself and build it, but this seems excessive and it seems like I am missing something more obvious.

you cau use Erlang-Solutions repositories:

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

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

1. Remove previous Erlang versions/packages:

$ 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. Add the repository entry manually:

  • To get Ubuntu codename type $ lsb_release -c . In my case it's xenial .

  • $ sudo nano /etc/apt/sources.list and add following text at the end of the file:

# Erlang Solutions
deb https://packages.erlang-solutions.com/ubuntu xenial contrib
  • Create a file /etc/apt/preferences.d/erlang :
$ sudo touch /etc/apt/preferences.d/erlang
$ sudo nano /etc/apt/preferences.d/erlang

with the following contents:

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

where 21.3 is the version of Erlang/OTP.

3. Install Erlang:

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

4. Check installed Erlang version:

$ 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

Related link: https://www.erlang-solutions.com/resources/download.html

First download the required version from 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

All the best

You may also check solution called EVM

here is the detailed information : https://github.com/robisonsantos/evm

Install 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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM