多くのプログラムは次のようなコマンドでバージョン番号を返します。
$ program --version
program (platform info) v1.2.3
これは、プログラムのインストールやメンテナンス、およびシステム管理者や友人によるその他の制御された自動化マジックをスクリプト化する場合に役立ちます。
問題
Erlang のバージョン番号を簡単に取得する方法 (OTP)?
ネット上
以下に、満足のいく解決策ではないものをいくつか挙げます(トラップエグジットフォーラムおよびその他のチュートリアル/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 バージョンに対する最小限の要件があり、それがこの質問の始まりでした。
ベストアンサー1
erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().' -noshell