[shell] एक खोल से Erlang रिलीज संस्करण संख्या कैसे प्राप्त करें?


4 Answers

अन्य उत्तरों केवल ओटीपी 17 के रूप में प्रमुख संस्करण प्रदर्शित करते हैं ( erlang: system_info के लिए दस्तावेज़ों से)। यह मेरी विकास मशीन पर प्रमुख और मामूली संस्करण प्रदर्शित करने के लिए काम करता है:

erl -eval '{ok, Version} = file:read_file(filename:join([code:root_dir(), "releases", erlang:system_info(otp_release), "OTP_VERSION"])), io:fwrite(Version), halt().' -noshell

यह दस्तावेज़ों में वर्णित उचित फ़ाइल से पढ़ता है।

Question

कई कार्यक्रम अपने संस्करण संख्या को कमांड के साथ वापस करते हैं जैसे:

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

यह प्रोग्राम के इंस्टॉलेशन या रखरखाव को स्क्रिप्ट करने और सिस्टम एडमिन्स और दोस्तों से कुछ अन्य नियंत्रित ऑटोमेशन जादू को स्क्रिप्ट करने के लिए उपयोगी है।

मुसीबत

Erlang (OTP) के लिए संस्करण संख्या को आसानी से कैसे प्राप्त करें ?

जाल पर

यहां कुछ असंतोषजनक समाधान हैं ([1] और अन्य ट्यूटोरियल / एरलांग दस्तावेज़):

एमुलेटर

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

स्क्रिप्ट करने के लिए मुश्किल है। मुझे शेल प्रॉम्प्ट से एक कमांड निष्पादित करने का कोई तरीका नहीं मिला है।

रिलीज फ़ाइल

$ 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 के समान संस्करण को स्थापित करने के लिए एक स्क्रिप्ट लिख रहा हूं। कुछ प्लगइन्स में ओटीपी संस्करण पर न्यूनतम आवश्यकताएं होती हैं, और इस तरह यह प्रश्न शुरू हुआ।

[1] http://forum.trapexit.org/viewtopic.php?p=42946




टर्मिनल खोलें और कमांड एआरएल दर्ज करें

आपको निम्न आउटपुट मिलेगा:

Erlang R16B03 (erts-5.10.4) [स्रोत] [64-बिट] [smp: 4: 4] [async-threads: 10] [कर्नेल-पोल: झूठा] Eshell V5.10.4 (^ जी के साथ निरस्त)

Erlang R16B03 (erts-5.10.4) [स्रोत] [64-बिट] [smp: 4: 4] [async-threads: 10] [कर्नेल-पोल: झूठा] - यह भाषा संस्करण है

एशेल वी 5.10.4 (^ जी के साथ निरस्त) - यह खोल संस्करण है




एक साधारण कमांड जिसका आप उपयोग कर सकते हैं:

erl --version



erl + V या आप erl -version का उपयोग कर सकते हैं

नतीजा: एरलांग (एसएमपी, ASYNC_THREADS) (बीईएएम) एमुलेटर संस्करण 5.8.5




इनिट डॉक्स , 'मैन एर' से जुड़ा हुआ है।

-वल एक्सप्र

सिस्टम प्रारंभिकरण के दौरान स्कैन, पार्स और एक मनमाने ढंग से अभिव्यक्ति का मूल्यांकन करें। यदि इनमें से कोई भी चरण विफल रहता है (वाक्यविन्यास त्रुटि, विश्लेषण के दौरान पार्स त्रुटि या अपवाद), एरलांग एक त्रुटि संदेश के साथ बंद हो जाता है। यहां एक उदाहरण दिया गया है कि यादृच्छिक संख्या जेनरेटर बीज:

% erl -eval '{X,Y,Z} = now(), random:seed(X,Y,Z).'

यह उदाहरण एरलांग को हेक्साडेसिमल कैलक्यूलेटर के रूप में उपयोग करता है:

% erl -noshell -eval 'R = 16#1F+16#A0, io:format("~.16B~n", [R])'  -s erlang halt
BF

यदि एकाधिक -वल अभिव्यक्ति निर्दिष्ट हैं, तो निर्दिष्ट क्रम में उनका अनुक्रमिक मूल्यांकन किया जाता है। -अवल अभिव्यक्तियों का मूल्यांकन अनुक्रमिक रूप से -s और -run फ़ंक्शन कॉल के साथ किया जाता है (यह निर्दिष्ट क्रम में भी)। जैसा कि और -run के साथ, एक मूल्यांकन जो समाप्त नहीं होता है, सिस्टम प्रारंभिक प्रक्रिया को अवरुद्ध करता है।

इस प्रकार,

$ erl -noshell -eval 'io:fwrite("~s\n", [erlang:system_info(otp_release)]).' -s erlang halt



Related



Tags

shell   erlang