2015-12-23 4 views
5

मैं एक ही आर्किटेक्चर के एकाधिक ओपनएसयूएसई मशीनों (विभिन्न संस्करणों) पर निक्स-पैकेज मैनेजर का उपयोग करके लगातार सॉफ़्टवेयर इंस्टॉल करना चाहता हूं। मैं किसी भी सिस्टम पर रूट नहीं हूं, लेकिन नेटवर्क माउंट का उपयोग कर सभी मशीनों पर बहु-उपयोगकर्ता मोड में nix इंस्टॉल करने के लिए हमारे sysadmin को मनाने के लिए विनियमित करना चाहता हूं।एकाधिक मशीनों पर समान/निक्स निर्देशिका को बढ़ाना

  • यह सभी मशीनों पर एक ही /nix निर्देशिका माउंट और उन सभी मशीनों पर बहु ​​उपयोगकर्ता मोड में nix चलाना संभव होगा?

  • क्या nix-env -i अन्य मशीनों में हस्तक्षेप करेगा?

  • nix-env -i xxx सभी मशीनों के उपयोगकर्ता प्रोफाइल में या केवल मशीन पर xxx स्थापित करें, जहां आदेश निष्पादित किया गया था? root द्वारा स्थापित किए गए लोगों के बारे में कैसे?

  • क्या एक मशीन पर कचरा-संग्रह अन्य मशीनों पर स्थापित सॉफ़्टवेयर को ध्यान में रखता है?

उत्तर

5
  1. यह समान आर्किटेक्चर के साथ कई मेजबानों के बीच बाइनरी साझा करने के लिए कई मशीनों पर एक निक्स दुकान माउंट करने के लिए संभव है। यदि /nix उन सभी मशीनों पर उपलब्ध है, तो उनमें से प्रत्येक स्थापित संकुल का उपयोग उसी तरह से कर सकते हैं जैसे वे स्थानीय रूप से स्थापित किए जाएंगे।

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

  2. nix-env -i — और अन्य सभी nix-xxx आदेश /nix/store और /nix/var में सभी संसाधनों के लिए सामान्य — सिंक्रनाइज़ पहुँच है, तो चलने की अनेक परिचालन (यह सोचते हैं कि फाइल सिस्टम विश्वसनीय तुल्यकालन प्रदान करता है) एक दूसरे के साथ हस्तक्षेप नहीं करते है। एक एकल उपयोगकर्ता एक ही समय में दो मशीनों पर nix-env -i चलाता है, तो वह एक रेस स्थिति में चलाने होगा, जाहिर है, क्योंकि दो आदेशों में से एक दूसरे के प्रभाव को रद्द करने जा रहा है। यही कारण है कि घटना है जब आप दो nix-env -i आदेशों एक साथ एक मशीन पर भी चलाते हैं, हालांकि उसी तरह होता है, तो यह एक समस्या यह है कि एक साझा की दुकान के लिए विशिष्ट है नहीं है।

  3. nix-env -i उपयोगकर्ता वातावरण को पर सभी होस्ट्स को एक साथ संशोधित करता है। तो एक मशीन पर किए गए कि प्रोफ़ाइल में परिवर्तन सभी अन्य मशीनों पर दिखाई दे, बहुत हो जाएगा उपयोगकर्ता प्रोफ़ाइल ~foo/.nix-profile, /nix/var/nix/profiles/per-user/foo/profile पर साझा की दुकान में सिर्फ एक सिमलिंक है। root इस संबंध में किसी भी अन्य उपयोगकर्ता की तरह है।

  4. हाँ, nix-collect-garbage मशीनों है कि साझा की दुकान में से किसी पर ठीक से काम करेगा। के बाद से उपयोगकर्ता प्रोफाइल साझा कर रहे हैं, भी, पूरा उपयोग/निर्भरता ग्राफ उपकरण और कोई दुकान पथ कभी कचरा एकत्र किया जाएगा कि अभी भी एक उपयोगकर्ता प्रोफ़ाइल द्वारा संदर्भित है के लिए दिख रहा है।

    हालांकि, एक अलग मामला nix-shell या nix-build के लिए बनाए गए अस्थायी वातावरण हैं। निक्स स्थानीय वातावरण पर उपयुक्त पथ पर /nix/var/nix/gcroots से सिम्लिंकिंग द्वारा इन परिवेशों के अस्तित्व को रिकॉर्ड करता है, यानी वह स्थान जहां अस्थायी वातावरण रहता है। इस तरह के वातावरण को मृत माना जाता है यदि वह सिम्लिंक बासी हो जाता है, यानी यदि निक्स पर्यावरण का "वास्तविक मार्ग" गायब हो जाता है। अब, यदि कोई उपयोगकर्ता nix-shell मशीन पर पर्यावरण में प्रवेश करता है, तो /nix/var/nix/gcroots में बनाया गया एक सिम्लिंक होगा जो /run/user/1000/nix-shell-environment-1 कहता है। मशीन बी पर चल रहे एक कचरा कलेक्टर, हालांकि, उस पथ को नहीं मिलेगा और पर्यावरण को मृत मानेंगे, इसलिए /nix/var/nix/gcroots से सिम्लिंक को हटाकर /nix/store से अंतर्निहित स्टोर पथ हटाएं। यदि ऐसा होता है, तो सक्रिय nix-shell पर चल रहा वातावरण अचानक काम करना बंद कर देगा।

+1

उस महान गहन उत्तर के लिए आपको बहुत बहुत धन्यवाद! मैं आपके प्रयास की बहुत सराहना करता हूं! – knedlsepp

संबंधित मुद्दे