CentOS7
安装erlang环境:
一般选择otp22版本
安装前先安装wxWidgets作为erlang/otp的依赖,以及在网上查询所有erlang所需的依赖(22版本没有此依赖会导致crypto插件无法安装,后期安装rebar3时会报错,24版本没有此问题)
像什么gcc-c++,openssl,odbc什么的,都需要安装,或者在下面的configure完之后可以看到缺少的依赖项,安装完这些依赖之后再编译安装
之后用wget获取otp22安装包,解压至 /usr/local 下,进入安装包,./configure(好像是检查配置)
需注意configure完成后是否报错,缺少的依赖会在末尾的一堆星号中提示application disabled或者application information什么的,一定要安装完这些依赖之后再编译安装otp(不然后面各种谜之报错有你受的!),这些依赖项一般都查得到安装方法,就往里面怼就完事了,依赖越多越好,不用担心依赖重复的问题,yum很智能,会识别安装好的文件,不会重复安装
但configure完成后直接可以编译和安装,不管之前是否报错,所以之后的make失败什么的都很难发现,configure报的错一定要重视!
make && make install,编译和安装
安装完成之后需要在 /etc 目录下的profile文件中配置环境变量
在最后一行(真的最后,最最后一行,后面没有任何内容的最后一行)
写上 export PATH=$PATH: 后面跟需要用到的环境,以 “ : ” 作为分隔,所有安装的环境变量都放在这个文件里
像git,rebar3一类的自己安装的需要到特定目录下运行的命令,只要将特定目录加到环境变量中,就可以在任何目录下运行
然后随便找个路径(一般用 cd ~)终端输入erl,如果出现:
Erlang/OTP 22 [erts-10.7] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
Eshell V10.7 (abort with ^G)
1>
说明otp安装完成,crtl+z退出
------------------------------------------------------------------------------------------
这里可以进行otp环境自检:在 1> 后输入以下内容
1> system_information:sanity_check(). 回车
如果返回ok,说明没有发现问题
如果有MissingRuntimeDependencies =
{missing_runtime_dependencies, 应用程序文件名和版本号,
[对应启动需要的应用程序文件名和版本号]}(我就是在这报错的,crypto插件出问题了,后来发现是make的时候crypto的源文件没安装成功,缺少wxWidgets环境)
或者InvalidApplicationVersion =
{invalid_application_version, 应用程序文件名和版本号}
InvalidAppFile = {invalid_app_file, 应用程序文件名}(应用无效)
又或者Failure =
MissingRuntimeDependencies | 应用程序文件名和版本号 |
应用程序文件名(应用启动失败,缺少依赖)
Failures = [Failure]
都属于erlang/otp安装不完全,需要安装正确的依赖项后重新安装(或者如果真的熟悉erlang/otp源文件的话可以自己打补丁,不过我估计相当有难度)
请注意,此检查使用已加载或将在使用时加载的应用程序版本。您可能在系统中安装了满足所有依赖项的应用程序版本,但如果未加载这些依赖项,则此检查依旧会失败。当您在系统中安装了同一应用程序的多个分支版本时,也可能会发生这种情况 ,因为您没有使用 -引导脚本- 来识别正确的应用程序版本。(来自:https://www.erlang.org/doc/)
--------------------------------------------------------------------------------------------
如果确实出现erlang安装有问题,需要卸载重新安装,直接删除 erlang 目录(一般是 /usr/local/lib/erlang,如果你 ./configure的时候用了 “ --prefix=目录 ” 这个指令,那就在你指定的那个目录下)和你解压到 local 中的 otp_src_版本号 文件夹就行,别的不用碰。
然后重新解压,重新configure,重新make和install
安装rebar3:
网上有安装方法,用git克隆rebar3源文件到你要安装的目录,然后进入源文件目录,用 ./bootstrap 自检(大概类似于安装otp时的 ./configure)自检完成后安装
如果bootstrap出问题了,只能说明你otp安装不完全,倒回去重来一遍吧孩子,不听话,白费了一个小时(别问我怎么知道的,我在bootstrap上卡了一天)
安装完成后会出现这三行:
===> Extracting rebar3 libs to /home/pengyong/.cache/rebar3/vsns/3.16.0+build.5031.refe44c884/lib...
===> Writing rebar3 run script /home/pengyong/.cache/rebar3/bin/rebar3...
===> Add to $PATH for use: export PATH=/home/pengyong/.cache/rebar3/bin:$PATH
看最后一句,use:后面那句可以直接加到profile文件最后一行,用来配置环境变量
然后随便找个目录 rebar3 --version 一下,能显示版本号,说明安装成功
rebar3在编译emqx源码的时候会用到