मैंने कई जगहों पर 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)
मेकफाइल्स के उपयोग में उन चरणों को भी शामिल किया जाता है, जैसा कि इंस्टॉलेशन कॉपी करने वाले स्टेप्स होते हैं, न कि कुछ साधारण कॉपी करने वाले स्टेप्स। यह उपयोगी हो सकता है।