Многие программы возвращают свой номер версии с помощью команды вроде:
$ program --version
program (platform info) v1.2.3
Это полезно для написания сценариев установки или обслуживания программы, а также некоторых других управляемых средств автоматизации от системных администраторов и друзей.
Задача
Как легко получить номер версии для Erlang (OTP) ?
В сети
Вот некоторые неудовлетворительные решения ([1] и другие руководства / документация Erlang):
Emulator
$ 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