【发布时间】:2012-03-22 13:56:04
【问题描述】:
许多程序通过以下命令返回其版本号:
$ program --version
program (platform info) v1.2.3
这对于编写程序的安装或维护脚本以及系统管理员和朋友的其他一些受控自动化魔法非常有用。
问题
如何轻松获取 Erlang (OTP) 的版本号?
在网上
这里有一些不满意的解决方案(来自trapexit forum 和其他教程/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}].
解析天堂(带壳)。
另一种方法是检查安装路径,但这不是可移植的(我的安装路径不包括版本)。
个人背景:我正在编写一个脚本来在多台机器上安装带有插件的相同版本的 RabbitMQ。一些插件对 OTP 版本的要求最低,这就是这个问题的开始。
【问题讨论】:
-
RELEASES 有什么不好?它被 Erlang 简单地解析了 :-)
-
哎呀,这没什么不好!我根据上下文编辑了帖子。我的意思是用 shell 工具解析 Erlang 字符串。我的目标是为 Erlang 包编写 SA 任务脚本。
-
我还不懂 Erlang 语法;我只是想检查安装的版本是否支持Riak。以此为主角,并希望有一天 Erlang 能提供一种更简单的方法来向依赖它的工具的管理员报告其版本。
-
erl --version .
标签: shell erlang erlang-otp