如何从shell中获取Erlang的发布版本号?

133
许多程序使用类似以下命令返回其版本号:

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 版本有最低要求,这就是这个问题的起点。


RELEASES有什么不好的呢?它可以轻松地被Erlang解析 :-) - Julian Fondren
哦,那没关系!我编辑了帖子以便更好理解。我的意思是用 shell 工具解析 Erlang 字符串。我的目标是为一个 Erlang 包编写 SA 任务脚本。 - Eric Platon
我还不理解 Erlang 语法,我只想检查安装的版本是否支持 Riak。我收藏了这个问题,并希望有一天 Erlang 可以提供一种更简单的方式向依赖它的工具的管理员报告其版本。 - Iain Samuel McLean Elder
erl --version。 - Michael Dimmitt
12个回答

-5

我运行了系统和工作的更新

sudo apt-get update
sudo apt-get upgrade

-9
一个简单的命令可以使用:
erl --version

4
此命令将进入Shell界面。问题是如何只获取版本信息以供脚本使用。 - Eric Platon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接