vlambda博客
学习文章列表

E1.获取Elixir/Erlang版本信息

E1.获取Elixir/Erlang版本信息

查看Elixir版本

直接在shel中打开iex (interactive shell),就可以查到具体的版本信息:

使用符合GUN选项标准--version-v,比如写Shell脚本时可以用来判断版本。

E1.获取Elixir/Erlang版本信息

在代码中获取版本信息:System.version/0[1]

E1.获取Elixir/Erlang版本信息

查看Erlang版本

Erlang无法使用erl --version,可通过选项eval与noshell[2]参数求值来实现。

E1.获取Elixir/Erlang版本信息

eval :对Erlang表达式求值。 noshell: 不启动shell,就像上面的elixir --version一样。halt()退出当前运行时

由于:erlang.system_info(:opt_release)只能拿到一个大版本号:比如‘22’:

E1.获取Elixir/Erlang版本信息

如果想要更详细的版本信息可以使用:

上面的代码来源于Erlang官方文档[3]

多个表达式写成一行使用逗号隔开,显得不那么容易理解,还可以把多个表达式分开写:

或用-s参数:

PS:上面的OTP_VERSION文件是从R17后才有的。

从R17开始,OTP的大版本代表的是一组特定版本的应用(Applications),这一组合通过了爱立信官方OTP团队的测试,但是个人也可以不升级大版本,只升级其中的某个特定应用的版本,这样的组合的兼容性没有经过官方验证/测试,需要自己充分测试,所以没有经过充分的测试,别只单独升级个别应用,最佳实践是保持和官方大版本一致的应用版本。

It is therefore always preferred to use OTP applications from one single OTP version.

想要得到那些应用在本版本做了变更,可以查看查看otp_versions.table[4],它罗列了每个版本具体的改动情况,每一行代表一个版本,比如:

OTP-22.1.1 : compiler-7.4.6 erts-10.5.1 snmp-5.4.1 # asn1-5.0.9 common_test-1.18 crypto-4.6 debugger-4.2.7...

OTP-22.1.1: OTP版本compiler-7.4.6 erts-10.5.1 snmp-5.4.1:发生了变更的应用。#后面是未发生变更的应用。

引用链接

[1] system.version/0: https://hexdocs.pm/elixir/System.html#version/0
[2] eval与noshell: http://erlang.org/doc/man/erl.html
[3] Erlang官方文档: http://erlang.org/doc/system_principles/versions.html
[4] otp_versions.table: https://github.com/erlang/otp/blob/master/otp_versions.table