Erlang 21.3 安装正确吗?

Erlang 21.3 安装正确吗?

我尝试erlang 21.3从源代码安装。没有明显的错误,但我仍然看到版本 20。

源已下载并安装:

wget -O - "https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey" | sudo apt-key add -
wget http://erlang.org/download/otp_src_21.3.tar.gz
cd otp_src_21.3
sudo ./configure
sudo make
sudo make install

安装中有数百行类似下面的内容

/otp_src_21.3/lib/ftp'
test -d "/usr/local/lib/erlang/releases/21" || mkdir -p "/usr/local/lib/erlang/releases/21" ;           \
if test ! -f "/usr/local/lib/erlang/releases/21/installed_application_versions" ; then              \
 echo "ftp-1.0.2" > "/usr/local/lib/erlang/releases/21/installed_application_versions" || exit 1;   \
else                                \
 if test x = x`grep ftp-1.0.2 "/usr/local/lib/erlang/releases/21/installed_application_versions"` ; then \
  echo ftp-1.0.2 >> "/usr/local/lib/erlang/releases/21/installed_application_versions" || exit 1;   \
 fi ;                               \
fi
make[3]: Leaving directory '/shared/otp_src_21.3/lib/ftp'
=== Leaving application ftp
make[2]: Leaving directory '/shared/otp_src_21.3/lib/ftp'
make[2]: Entering directory '/shared/otp_src_21.3/lib/tftp'
=== Entering application tftp
make[3]: Entering directory '/shared/otp_src_21.3/lib/tftp/src'
make -w RELEASE_PATH="/usr/local/lib/erlang"   release_spec
make[4]: Entering directory '/shared/otp_src_21.3/lib/tftp/src'
/usr/bin/install -c -d "/usr/local/lib/erlang/lib/tftp-1.0.1/src"
/usr/bin/install -c -m 644 tftp.erl tftp_app.erl tftp_binary.erl tftp_engine.erl tftp_file.erl tftp_lib.erl tftp_logger.erl tftp_sup.erl  tftp.hrl "/usr/local/lib/erlang/lib/tftp-1.0.1/src"
/usr/bin/install -c -d "/usr/local/lib/erlang/lib/tftp-1.0.1/ebin"
/usr/bin/install -c -m 644  ../ebin/tftp.beam ../ebin/tftp_app.beam ../ebin/tftp_binary.beam ../ebin/tftp_engine.beam ../ebin/tftp_file.beam ../ebin/tftp_lib.beam ../ebin/tftp_logger.beam ../ebin/tftp_sup.beam ../ebin/tftp.app \
../ebin/tftp.appup "/usr/local/lib/erlang/lib/tftp-1.0.1/ebin"
make[4]: Leaving directory '/shared/otp_src_21.3/lib/tftp/src'
make[3]: Leaving directory '/shared/otp_src_21.3/lib/tftp/src'
make[3]: Entering directory '/shared/otp_src_21.3/lib/tftp/doc/src'
make -w RELEASE_PATH="/usr/local/lib/erlang"   release_spec
make[4]: Entering directory '/shared/otp_src_21.3/lib/tftp/doc/src'
make[4]: Nothing to be done for 'release_spec'.
make[4]: Leaving directory '/shared/otp_src_21.3/lib/tftp/doc/src'
make[3]: Leaving directory '/shared/otp_src_21.3/lib/tftp/doc/src'
make[3]: Entering directory '/shared/otp_src_21.3/lib/tftp'
test -d "/usr/local/lib/erlang/releases/21" || mkdir -p "/usr/local/lib/erlang/releases/21" ;           \
if test ! -f "/usr/local/lib/erlang/releases/21/installed_application_versions" ; then              \
 echo "tftp-1.0.1" > "/usr/local/lib/erlang/releases/21/installed_application_versions" || exit 1;  \
else                                \
 if test x = x`grep tftp-1.0.1 "/usr/local/lib/erlang/releases/21/installed_application_versions"` ; then \
  echo tftp-1.0.1 >> "/usr/local/lib/erlang/releases/21/installed_application_versions" || exit 1;  \
 fi ;                               \
fi
make[3]: Leaving directory '/shared/otp_src_21.3/lib/tftp'
=== Leaving application tftp
make[2]: Leaving directory '/shared/otp_src_21.3/lib/tftp'
make[1]: Leaving directory '/shared/otp_src_21.3/lib'

最后是以下内容:

(cd "/usr/local/lib/erlang" \
 && ./Install  -minimal "/usr/local/lib/erlang")

/usr/bin/install -c -m 644 "/shared/otp_src_21.3/OTP_VERSION" "/usr/local/lib/erlang/releases/21"
cd /usr/local/bin
rm -f erl
rm -f erlc
rm -f epmd
rm -f run_erl
rm -f to_erl
rm -f dialyzer
rm -f typer
rm -f escript
rm -f ct_run
ln -s ../lib/erlang/bin/erl erl
ln -s ../lib/erlang/bin/erlc erlc
ln -s ../lib/erlang/bin/epmd epmd
ln -s ../lib/erlang/bin/run_erl run_erl
ln -s ../lib/erlang/bin/to_erl to_erl
ln -s ../lib/erlang/bin/dialyzer dialyzer
ln -s ../lib/erlang/bin/typer typer
ln -s ../lib/erlang/bin/escript escript
ln -s ../lib/erlang/bin/ct_run ct_run

看起来确实erlang安装成功了:以下是当前确切的日期:

$ ls -lrta $(which erlc)
lrwxrwxrwx 1 root root 22 Dec 27 00:49 /usr/local/bin/erlc -> ../lib/erlang/bin/erlc

但版本erlang仍是系统默认的:

erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().'  -noshell
"20"

那么……它真的安装了吗?如果没有,是不是缺少了某些链接?这是ubuntu 18.0.4……

答案1

erl在另一个位置覆盖bin解决了这个问题。

 sudo rm /usr/bin/erl
 sudo ln -s $(pwd)/erl /usr/bin/erl

现在我们可以看到正确的版本:

$ erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().'  -noshell
"21"

相关内容