क्या फ़ाइलों को कॉन्फ़िगर करने के लिए प्रतीकात्मक लिंक संभाल सकता है?


30

मैं संस्करण नियंत्रण के तहत मेरे सभी अपस्टार्ट कॉन्फिग फाइलों की है। अपस्टार्ट का उपयोग करने का मेरा आदर्श तरीका मेरे संस्करण नियंत्रण रिपॉजिटरी (मर्क्यूरियल - न कि यह मायने रखता है) से / etc / init में सॉफ्ट लिंक बनाना है, लेकिन अपस्टार्ट नौकरियों को देखने में विफल रहता है। अगर मैं रिपॉजिटरी डायरेक्टरी से / etc / init में फाइल कॉपी करता हूँ तो सब कुछ ठीक है।

किसी को पता है कि अपस्टार्ट प्रतीकात्मक या कठिन लिंक को संभालने में विफल क्यों है?

धन्यवाद

क्रिस


1
शायद नरम लिंक को अनदेखा करने के लिए अपस्टार्ट डेवलपर्स की ओर से यह एक डिजाइन निर्णय था? वैसे भी, यदि आपकी रिपॉजिटरी एक ही पार्टीशन पर है, तो /etc/initहार्ड लिंक का उपयोग करके देखें।
स्टीवन मंडे

कड़ी मेहनत की कोशिश की और वह भी काम नहीं किया :(
क्रिस मैककौली

लंगड़ा। वास्तव में कॉन्फ्लिंक को एक मैनुअल कॉल के बिना कॉन्फिगर करने के लिए अनदेखा कर दिया जाता है। आह। मुझे सहजीवन पसंद है। मेरे उपयोग-मामले में क्लीनर। ओह अच्छा। मैं सिर्फ फाइलों को कॉपी करूँगा, जैसे झटका।
जेम्स टी स्नेल

जवाबों:


9

अपस्टार्ट सहानुभूति का समर्थन नहीं करता है क्योंकि वे विभाजन पर एक फ़ाइल को इंगित कर सकते हैं जो बूट समय पर लोड नहीं होती है

मैं अपने स्वयं के प्रोजेक्ट में इस के आसपास मिल गया है / conf / init / myscripts और फिर फाइल को मेरी रिपॉजिटरी में एक डायरेक्टरी में बाँधकर। mount --bind /etc/init/myscripts ~/code/repo/initscripts

इसे / etc / fstab में जोड़ें और बंधन लगातार रहेगा:

/etc/init/myscripts  /home/me/code/repo/initscripts      none    bind

यह प्रभावी रूप से आपको हार्ड-लिंक्ड डायरेक्ट्री देता है। अपस्टार्ट किसी भी अन्य के रूप में गोपनीय फ़ाइलों का इलाज करेगा, क्योंकि वे स्थानीय / / / init के लिए हैं। आपका DVCS उन्हें रेपो में स्थानीय फ़ाइलों के रूप में भी देखेगा, इसलिए यह उनके साथ भी व्यवहार करेगा क्योंकि यह किसी भी अन्य फ़ाइलों को वहाँ संग्रहीत करेगा। दोनों ओर से लाभदायक।


49

अपस्टार्ट अपनी कॉन्फ़िगरेशन निर्देशिकाओं को इनोटिफ़ाइट के साथ देखता है और किसी भी फाइल के बदलने या नई फ़ाइल के जुड़ने पर कॉन्फ़िगरेशन को फिर से लोड करता है। जाहिरा तौर पर यह सिमिलिंक के लिए काम नहीं करता है।

कॉन्फ़िगरेशन उपयोग को मैन्युअल रूप से अपडेट करने के लिए

$ initctl reload-configuration

यह मेरे लिए मज़बूती से काम करता था। हाल ही में अपस्टार्ट 1.3 पर यह केवल उन नौकरियों पर काम करता है जो रोकी जाती हैं।
jcomeau_ictx

2
मेरे लिए / etc / init / काम में सहानुभूति है, लेकिन अगर मैं फ़ाइल को सिमलिंक के पीछे बदल देता हूँ तो फ़ाइल को upstart टूल द्वारा दोबारा नहीं पढ़ा जाता है। मुझे यह पता करने में घंटों लग गए कि सिमिलिंक इसका कारण है। यह एक कैश की तरह काम करता है जिसे कोई नहीं करना चाहता।
peschü

1

जैसा पहले बताया गया है:

initctl reload-configuration

हालाँकि अगर आपको निम्नलिखित की तरह एक त्रुटि मिलती है:

initctl: Rejected send message, 1 matched rules; type="method_call", sender=":1.155" (uid=1000 pid=6177 comm="initctl reload-configuration ") interface="com.ubuntu.Upstart0_6" member="ReloadConfiguration" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")

आपको सूडो का आह्वान करना चाहिए:

sudo initctl reload-configuration
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.