Как получить номер версии релиза Erlang из оболочки?

Многие программы возвращают номер своей версии с помощью команды вроде:

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

Это полезно для написания сценария установки или техническое обслуживание программы и некоторые другие магии управляемой автоматизации от системных администраторов и друзей.

Проблема

Как легко получить номер версии Erlang (OTP)?

В сети

Вот несколько неудовлетворительных решений ([1] и другие руководства/документация по 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] http://forum.trapexit.org/viewtopic.php?p=42946

104
задан Eric Platon 5 March 2012 в 04:11
поделиться