1. ホーム
  2. shell

[解決済み] シェルからErlangのリリースバージョン番号を取得する方法は?

2022-08-22 19:57:35

質問

多くのプログラムは、次のようなコマンドでそのバージョン番号を返します。

$ program --version
program (platform info) v1.2.3

これはプログラムのインストールやメンテナンスをスクリプト化するのに便利で、システム管理者や友人による他の制御された自動化の魔法もあります。

問題点

Erlangのバージョン番号を簡単に取得する方法 (OTP) ?

ネット上では

不満足な解決策を紹介します。 trapexit フォーラム や他のチュートリアル/Erlangのドキュメントから)。

エミュレータ

$ erl
1> erlang:system_info(otp_release).
"R13B03"

スクリプトが難しい 私は erl がシェルプロンプトから単一のコマンドを実行する方法は見つかっていません。

ファイルを解放する

$ 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 バージョンに最小限の要件を持ち、それはこの質問がどのように始まったかです。

どのように解決するのですか?

 erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().'  -noshell