Багато програм повертають номер своєї версії за допомогою команди типу:
$ program --version
program (platform info) v1.2.3
Це корисно для створення сценаріїв встановлення або обслуговування програми та деяких інших керованих магій автоматизації від System Admins & friends.
Проблема
Як легко отримати номер версії для 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, і саме з цього питання почалося.