मैंने कई जगहों पर install -dडायरेक्ट्रीज़ बनाने और install -cएक फाइल कॉपी करने के लिए इस्तेमाल किया है । क्यों नहीं उपयोग mkdirऔर cp? क्या उपयोग करने में कोई फायदा है install?
मैंने कई जगहों पर install -dडायरेक्ट्रीज़ बनाने और install -cएक फाइल कॉपी करने के लिए इस्तेमाल किया है । क्यों नहीं उपयोग mkdirऔर cp? क्या उपयोग करने में कोई फायदा है install?
जवाबों:
यह इस बात पर निर्भर करता है कि आप क्या कर रहे हैं।
installआदेश सामान्य रूप से स्थापना स्क्रिप्ट संकुल और अपने सिस्टम के लिए एक द्विआधारी स्थापित करने के लिए स्रोत कोड के साथ आए में प्रयोग किया जाता है। इसका उपयोग किसी अन्य फ़ाइल या निर्देशिका को स्थापित करने के लिए भी किया जा सकता है। के अलावा -dऔर -cविकल्प आपके पास -mफ़ाइल के नए अनुमतियाँ निर्दिष्ट करने के लिए स्थापित किया जाना है, तो आप एक ऐसा करने के लिए नहीं है cpऔर एक chmodही परिणाम प्राप्त करने के लिए। उदाहरण के लिए:
install -m644 "$srcdir/$pkgname-$pkgver-linux64" "$pkgdir/opt/$pkgname"
तुम भी विकल्प हैं -gऔर -oक्रमश: लक्ष्य समूह और मालिक, स्थापित करने के लिए। यह अलग कॉल से बचा जाता है chown। सामान्य तौर पर, installअपनी स्क्रिप्ट का उपयोग करते हुए और कई के बजाय एक ही आदेश में फ़ाइल निर्माण, कॉपी, मोड सेटिंग और संबंधित सामान करके इसे अधिक संक्षिप्त बनाता है।
संदर्भ के लिए, देखें man install। उपयोग के लिए, बस कुछ पैकेज सोर्स कोड के साथ शिप की गई किसी भी इंस्टॉलेशन स्क्रिप्ट को देखें ।
"इंस्टॉल" आम तौर पर निम्नलिखित कार्यों को जोड़ती है:
इसलिए, यह यूनिक्स के दृष्टिकोण का अनुसरण करता है कि एक उपकरण को कुछ निर्माण उपकरण द्वारा बनाई गई फ़ाइल को उसके कार्य स्थान पर स्थापित करने की एक पूरी लेकिन कार्रवाई के लिए बनाया जाएगा।
जैसा कि मैंने वर्णन किया है पूरी अवधारणा बीएसडी सिस्टम (तथाकथित "xinstall" संस्करण में लागू की गई है); मैं इसके लिए "सुरक्षित प्रतिलिपि" मोड (परमाणु नामकरण के साथ नया संस्करण) को महत्वपूर्ण मानता हूं। लिनक्स सिस्टम (कोरुटिल्स से) इस महत्वपूर्ण हिस्से को याद करते हैं और एक बायोडर प्रक्रिया द्वारा हटाने और फिर से खोलने के बीच दौड़ के लिए प्रवण होते हैं; लेकिन यह पैकेज प्रबंधकों द्वारा कवर किया जा सकता था।
इसके अलावा पिछले विवरण यहाँ उपयोग के बारे में से, वहाँ के बीच एक निम्न स्तर का अंतर है cpऔर installकम से कम लिनक्स पर। यदि किसी मौजूदा फ़ाइल पर कॉपी की जाती है, तो फ़ाइल cpके मौजूदा इनकोड को ओवरराइट करता है, जबकि installहमेशा एक ही फ़ाइल नाम के लिए एक नया इनकोड बनाता है।
रनिंग बाइनरी के नए संस्करण को स्थापित करते समय यह एक अंतर बनाता है। सफल होने के cpदौरान एक EBUSY त्रुटि का कारण बनता है install। रनिंग बाइनरी अभी भी पुराने संस्करण का उपयोग करेगा, लेकिन नए संस्करण का उपयोग किया जाता है यदि प्रोग्राम को पुनरारंभ किया जाता है।
यदि प्रश्न में निर्देशिका पहले से मौजूद है:
mkdir -p स्वामित्व और फ़ाइल मोड बिट्स सेट करने का प्रयास करेंगेinstall -d स्वामित्व और फ़ाइल मोड बिट्स सेट करने का प्रयास नहीं करेंगेइस के लिए है mkdirऔर installसे GNU coreutils । वे दोनों एक ही make_dir_parentsफ़ंक्शन का उपयोग करते हैं, लेकिन preserve_existingपैरामीटर के साथ क्रमशः सेट falseया किया जा रहा trueहै।
installया$(INSTALL)मेकफाइल्स के उपयोग में उन चरणों को भी शामिल किया जाता है, जैसा कि इंस्टॉलेशन कॉपी करने वाले स्टेप्स होते हैं, न कि कुछ साधारण कॉपी करने वाले स्टेप्स। यह उपयोगी हो सकता है।