InstallOTP

Erlang 之 OTP 安装管理及环境配置

OTP 官网

Ubuntu 下安装 otp

安装依赖

1
apt-get install g++ gcc make libncurses5-dev libssl-dev

因为我们项目并没用Java作为NIF,所以不需要安装Java,有需要的就先安装Java;同时因为服务器只有命令行,不需要wx这个图形库.

编译安装,执行失败可分步执行

1
2
3
4
5
6
cd RunSoft
wget http://erlang.org/download/otp_src_18.3.tar.gz
tar otp_src_18.3.tar.gz
./configure
make -j4
sudo make install

这样 Erlang 就安装好了.可以输入命令 erl 测试是否安装好


注 实际安装不添加 ./configure –prefix=/opt/otp/ ,将 otp 安装到默认系统位置,否则运行 rebar 或安装 Ejabberd 会出现莫名奇妙的错误,以下记录忽略

指定 prefix ,是为了删除方便.同时在 ~/.bashrc 将 /opt/otp/bin 添加到 PATH.

1
export PATH=/opt/otp/bin:$PATH

使用一下命令重载配置

1
source ~/.bashrc

升级

升级重新下载最新版即可 otp_src_xxx.tar.gz 以上步骤重新执行一遍


Window 下安装及环境配置

下载 http://www.erlang.org/download/otp_win64_18.2.1.exe

安装到一个目录 G:\Program Files\erl7.2.1\

添加 G:\Program Files\erl7.2.1\bin 到环境变量 PATH

重新打开终端 输入 erl 测试


###Erlang 开发工具

IntelliJ IDEA

安装插件 intellij-erlang ,Plugins 搜索 erlang


参考列表

http://ju.outofmemory.cn/entry/131329



错误分析

  • 运行 rebar 出现如下错误
1
2
3
4
5
Sun Dec 20 21:15:31 yzhang@coam:~/RunProject/ejabberd$ sudo ./rebar get-deps
/usr/bin/env: escript: No such file or directory

Sun Dec 20 21:22:50 yzhang@coam:~/RunProject$ whereis escript
escript: /opt/otp/bin/escript

原因是我安装 otp 时 使用命令 ./configure –prefix=/opt/otp/ 指定安装 otp 到 /opt/otp/ 下

于是重新安装 otp ,并取消 ~/.bashrc 中配置的 erlang 环境变量

1
2
# Erlang
#export PATH=/opt/otp/bin:$PATH

重启 ubuntu 后敲 erl 命令提示未找到,注释成功,重新使用默认参数安装otp

  • ejabberd 源码编译安装,执行命令 ejabberd ./configure 后出现如下错误
错误分析
1
2
3
4
5
6
7
8
Sun Dec 20 21:21:26 yzhang@coam:~/RunProject/ejabberd$ sudo ./configure
checking whether make sets $(MAKE)... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking for a sed that does not truncate output... /bin/sed
checking for erl... no
checking for erlc... no
checking for erl... no
configure: error: Erlang/OTP interpreter (erl) not found but required

解决方案,重新安装 otp 到系统默认路径

参考

Why cannot escript run?



Erlang OTP18 API更新

1
/data/home/yzhang/CoamRunning/Erlang/ejabberd/deps/emysql/src/emysql_conn.erl:337: Warning: erlang:now/0: Deprecated BIF. See the "Time and Time Correction in Erlang" chapter of the ERTS User's Guide for more information.

使用 erlang:timestamp() 代替 erlang:now()

erlang:now() deprecated in v18, what’s the best transition

文章目录
  1. 1. Erlang 之 OTP 安装管理及环境配置
  2. 2. Ubuntu 下安装 otp
  3. 3. 升级
  4. 4. Window 下安装及环境配置
    1. 4.1. 参考列表
    2. 4.2. 错误分析
  5. 5. Erlang OTP18 API更新