Many programs return their version number with a command like:
$ program --version
program (platform info) v1.2.3
这对于脚本安装或程序维护以及系统管理员和朋友们进行其他受控自动化操作非常有用。
问题
如何轻松获取Erlang(OTP)的版本号?
网络上的方法
以下是一些不令人满意的解决方案(来自trapexit论坛和其他教程/Erlang文档):
模拟器
$ erl
1> erlang:system_info(otp_release).
"R13B03"
难以编写脚本。我还没有找到一种方法可以让erl
从shell提示符中执行单个命令。
版本文件
$ cat /usr/lib/erlang/releases/RELEASES
[{release,"OTP APN 181 01","R13B03","5.7.4",
[{kernel,"2.13.4","/usr/lib/erlang/lib/kernel-2.13.4"},
{stdlib,"1.16.4","/usr/lib/erlang/lib/stdlib-1.16.4"},
{sasl,"2.1.8","/usr/lib/erlang/lib/sasl-2.1.8"}],
permanent}].
使用 shell 解析天堂。
另一个选择是检查安装路径,但这不是可移植的(我的安装路径中并未包含版本号)。
个人背景:我正在编写一个脚本,在几台机器上安装带插件的相同版本的 RabbitMQ。一些插件对 OTP 版本有最低要求,这就是这个问题的起点。