2010-05-27 8 views
8

मैं है निम्नलिखित escript:escript में एक Erlang गुलाम नोड शुरू में विफल रहता है जब उबंटू में कस्टम Erlang का उपयोग कर 10.4

$ ./start_slave 
Node started successfully! 
$ 

मैं चाहता हूँ:

#!/usr/bin/env escript 
%%! -name [email protected] 

main(_) -> 
    NodeName = test, 
    Host = '127.0.0.1', 
    Args = "", 

    {ok, _Node} = slave:start_link(Host, NodeName, Args), 
    io:format("Node started successfully!"). 

जब यह उबंटू 10.04 पर चल रहा है मैं इस मिल उबंटू पर एरलांग के स्टॉक इंस्टॉलेशन के कुछ कारणों की कमी के बाद से अपना खुद का एरलांग स्थापित करें (नवीनतम संस्करण, डायलॉगर फाइलों के लिए डिबग संकलित फाइलें)। मैंने अपनी एरलांग बाइनरी ~/Applications/bin के अंदर रखी। Erlang सामान्य रूप से काम करता है, और एक Erlang खोल के अंदर दास नोड्स शुरू भी करता है।

हालांकि, अब मेरी escript काम नहीं करता। के बारे में 60 सेकंड के बाद यह एक त्रुटि देता है:

$ ./start_slave         
escript: exception error: no match of right hand side value {error,timeout} 

यहां तक ​​कि अगर मैं escript मेरी erlang संस्करण का उपयोग करने के लिए पहली पंक्ति बदलने के लिए, यह अभी भी काम नहीं करता:

#!/home/user/Applications/bin/escript 

गुलाम नोड शुरू कर दिया है erlang:open_port/2 के लिए एक कॉल जो sh का उपयोग करने की है जो बदले में मेरी .bashrc फ़ाइल है कि मेरे कस्टम PATH वातावरण चर सेट नहीं पढ़ता लगता है के साथ। समय-समय पर ऐसा लगता है जब slave:start_link/3 दास नोड को जवाब देने की प्रतीक्षा करता है, जो यह कभी नहीं करता है।

मैं कैसे Erlang की मेरी अपनी स्थापना रोल और Ubuntu 10.4 पर escripts अंदर दास नोड्स शुरू कर सकते हैं?

अद्यतन: मैं (जहां वास्तविक PATH उबंटू में सेट किया गया है) /etc/environment अंदर अपने कस्टम Erlang के लिए पथ जोड़ने की कोशिश की है, लेकिन यह कुछ भी नहीं बदलता है ...

अद्यतन 2: दिए गए एकमात्र उत्तर को स्वीकार करना (भले ही यह समस्या का समाधान नहीं हुआ)। उबंटू और एरलांग संस्करण अब थोड़े पुराने हैं और यह अब कोई मुद्दा नहीं हो सकता है।

+0

क्या आप वाकई 'start' के बजाय' start_link' का उपयोग करना चाहते हैं? इस तरह, जब आपकी स्क्रिप्ट समाप्त हो जाती है (जो मुख्य रूप से बुलाया जाता है) तो आपके दास स्वचालित रूप से निकलते हैं। इसके लिए 'start_link' के लिए दस्तावेज़ देखें। – ZeissS

+0

बिंदु यह है कि नोड 'start_link/3 रिटर्न' से पहले भी शुरू हो रहा है। –

+0

इसके अलावा, बिंदु परीक्षण चलाने के लिए है, इसलिए स्क्रिप्ट मरने पर नोड मरने के साथ ठीक है। :-) –

उत्तर

1

क्या यह संभव है कि गुलाम नोड स्थापित अन्य Erlang के साथ चलाया जा रहा है? the documentation on slave nodes में टाइमआउट त्रुटि के कारणों के तहत सूचीबद्ध मैंने देखा "एरलांग नोड्स में अलग-अलग कुकीज़ हैं" जो मुझे विश्वास है, उस मामले में हो सकता है।

यदि ऐसा है, जबकि यह समय समाप्ति के लिए इंतजार कर रहा है आप अलग अलग रास्तों के साथ संसाधित करता है दिखाना चाहिए ps -FC erlang चल रहे थे।

+0

यह वास्तव में शुरू नहीं होता है, या शुरू होने पर तुरंत दुर्घटनाग्रस्त हो जाता है। मैं दास नोड के लिए एक प्रक्रिया नहीं देख सकता। –

+0

किसी भी मामले में, यह एक ही कुकी का उपयोग के बाद से मैं इसे इस जवाब को स्वीकार करना '~/.erlang.cookie' –

+0

में सेट के बाद से कोई अन्य जवाब दिया गया है होना चाहिए। हालांकि समस्या को हल करने के बारे में कभी नहीं पता चला। :-( –