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


Answers

(मैं इस उत्तर को यहां जोड़ रहा हूँ क्योंकि मैंने पिछले तीन महीनों में इस पर कम से कम 3 बार खोज की है)

संस्करण 17.0 रिलीज़ से शुरू करने के उनके संस्करण संख्या (17.0, 17.1, ...) में एक नया प्रारूप है, लेकिन erlang:system_info(otp_release). केवल प्रमुख संस्करण संख्या देता है

पूर्ण संस्करण संख्या प्राप्त करने के लिए, पहले से उल्लेख किए गए releases फ़ोल्डर के तहत OTP_RELEASE फ़ाइल की सामग्री को जांचना आवश्यक है।

$ which erl
/usr/bin/erl
$ cd /usr/bin
$ ls -l erl
../lib/erlang/bin/erl
$ cd ../lib/erlang/
$ cat releases/17/OTP_RELEASE
17.3

संपादित करें

# Some versions seem to have OTP_VERSION instead of OTP_RELEASE
$ cat releases/17/OTP_VERSION
17.4
Question

कई प्रोग्राम एक ऐसे आदेश के साथ अपने संस्करण संख्या लौटाते हैं जैसे:

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

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

मुसीबत

एरलांग (ओटीपी) के लिए संस्करण संख्या आसानी से कैसे प्राप्त करें ?

जाल पर

यहां कुछ असंतोषजनक समाधान ([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}].

पार्सिंग स्वर्ग (शेल के साथ)

एक विकल्प भी स्थापित पथ की जांच कर सकता है, लेकिन यह पोर्टेबल नहीं है (मेरे इंस्टॉल पथ में एक के लिए संस्करण शामिल नहीं है)।

व्यक्तिगत संदर्भ: मैं कई मशीनों पर प्लगिन के साथ एक ही संस्करण को स्थापित करने के लिए स्क्रिप्ट लिख रहा हूं। कुछ प्लगइन्स को ओटीपी संस्करण पर कम से कम आवश्यकताएं हैं, और इसी तरह यह प्रश्न शुरू हुआ।

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




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

आप निम्न आउटपुट प्राप्त करेंगे:

एर्लिंग आर 16 बी 0 3 (एर्ट्स -5.10.4) [स्रोत] [64-बीट] [एसपीपी: 4: 4] [एएसएसएनसी-थ्रेड्स: 10] [कर्नेल-पोल: फर्स्ट] एशेल वी 5। 10.4 (^ जी के साथ समावेशन)

एर्लंग R16B03 (एआरटी -5.10.4) [स्रोत] [64-बिट] [एसपीपी: 4: 4] [एएसएसएनसी-थ्रेड: 10] [कर्नल-पोल: फॉस्ट] - ये भाषा संस्करण है

Eshell V5.10.4 (^ जी के साथ निरस्त) - यह शैल संस्करण है




init docs , 'man erl' द्वारा जुड़ा हुआ है

-एवल एक्सपीआर

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

% 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 फ़ंक्शन कॉल के साथ मूल्यांकन किया जाता है (यह भी निर्दिष्ट क्रम में) के साथ- and -run के रूप में, एक मूल्यांकन जो समाप्त नहीं करता, सिस्टम प्रारंभिक प्रक्रिया को रोकता है।

इस प्रकार,

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



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

परिणाम: एर्लंग (एसएमपी, एएसवाईएनसी_थ्रैडएस) (बीईएम) एमुलेटर संस्करण 5.8.5




एक सरल आदेश आप उपयोग कर सकते हैं:

erl --version