"मेक इनस्टॉल" और "सुडो मेक इनस्टॉल" के बीच अंतर


15

कभी-कभी मैं समस्याओं का सामना make installकरता हूं जिसके उपयोग से मुझे permission deniedकुछ फ़ोल्डरों को लिखते समय एक त्रुटि मिलती है । इसलिए सहज रूप से मैं उपयोग करता हूं sudo make install। क्या इससे अतिरिक्त समस्याएं सामने आएंगी?

मैं डेबियन एच का उपयोग कर रहा हूं।

जवाबों:


16

सिस्टम निर्देशिकाओं में स्थानीय इंस्टॉल करने से बचें। सिस्टम निर्देशिका जैसे /usr, पैकेज प्रबंधन प्रणाली का उपयोग करने के लिए आरक्षित हैं। परिभाषा के अनुसार, यदि आप ऐसा कर रहे हैं make installतो इसका मतलब है कि आप एक स्थानीय इंस्टॉल कर रहे हैं, और यदि आपको ऐसा करने की आवश्यकता है, तो sudo make installइसका मतलब है कि आपके पास जहां भी आप लिख रहे हैं, उसके लिए आपके पास अनुमति नहीं है।

इसलिए, यदि आपको अनुमति संबंधी त्रुटियां मिल रही हैं, तो make installजांचें और देखें कि क्या आप सिस्टम निर्देशिका में स्थापित करने की कोशिश कर रहे हैं, और /usr/localइसके बजाय या इसी तरह स्थापित करें । /usr/localस्थानीय प्रतिष्ठानों के लिए आरक्षित है। आपको अपने आप को लिखने की अनुमति देने की आवश्यकता हो सकती है /usr/local, लेकिन यह आमतौर पर आसानी से किया जाता है। डेबियन पर यह staffसमूह में खुद को जोड़कर किया जा सकता है । बेहतर अभी भी, एक बाइनरी पैकेज ढूंढें या बनाएं, और इसके बजाय इसे स्थापित करें। इस तरह आप आसानी से स्थापित संकुल का ट्रैक रख सकते हैं और पैकेज प्रबंधन के अन्य लाभ प्राप्त कर सकते हैं।

ध्यान दें कि पैकेज प्रबंधन प्रणाली /usr/localसामान्यतः FHS के अनुसार स्थापित नहीं होती है । डेबियन पॉलिसी मैनुअल की धारा 9.1 देखें- फाइल सिस्टम पदानुक्रम अवलोकन के लिए।


3

यहाँ आदेशों का एक बुनियादी ठहरनेवाला प्रश्न है:

  • sudo- कमांड को रूट के रूप में चलाएं
  • बनाने के लिए एक स्क्रिप्ट चलाने के स्रोत से

चूंकि sudo कमांड आपको कमांड को रूट के रूप में चलाती है, इसका मतलब है कि मेक कमांड के पास सुपर-उपयोगकर्ता विशेषाधिकार हैं। इसका मतलब यह है कि अगर मेकफाइल दुर्भावनापूर्ण है, या कोई भी स्क्रिप्ट जिसे वह कॉल कर सकता है दुर्भावनापूर्ण है, तो यह आपके सिस्टम से समझौता कर सकता है।

संक्षेप में, यदि आप सॉफ़्टवेयर पर भरोसा नहीं करते हैं, तो इसे स्थापित न करें। यदि आप सॉफ़्टवेयर पर भरोसा करते हैं, तो रूट के रूप में चलने से कुछ भी नहीं होना चाहिए।

ध्यान दें:

sudo make installsu; make installज्यादातर मामलों में ऐसा ही है ।


3
आप "अधिकांश मामलों में" समाप्त करने के लिए सही थे। यहाँ एक कोने का मामला है।
ederag

3

जैसा कि ऊपर उत्तर दिया गया है, sudo make installआपको उन निर्देशिकाओं में फ़ाइलें स्थापित करने देता है जो अन्यथा केवल एक उपयोगकर्ता के रूप में आपके लिए पढ़ी जाती हैं।

समस्या मैं समझ सकता हूं कि बाद की तारीख में आप प्रोग्राम को अनइंस्टॉल या अपग्रेड करना चाह सकते हैं। यदि आपके पास अभी भी सोर्स कोड डायरेक्टरी ट्री है, तो make uninstallआपके लिए प्रोग्राम को अनइंस्टॉल कर देगा, लेकिन अगर, कई अन्य विशिष्ट उपयोगकर्ताओं के रूप में, आपने सोर्स कोड डायरेक्टरी ट्री को डिलीट कर दिया है, तो आप किस्मत से बाहर हैं। और जब से आपने पैकेज मैनेजमेंट सिस्टम का उपयोग करके प्रोग्राम इंस्टॉल नहीं किया है, तो आप उस तरह से प्रोग्राम को अनइंस्टॉल करने में भी असमर्थ हो सकते हैं।

ऐसे कार्यक्रमों को स्थापित करने का सबसे अच्छा तरीका उन्हें अपने घर निर्देशिका में स्थापित करना हो सकता है। --prefix=/home/<user>/<some>/<directory>करने का विकल्प पास करें ./configure। यह आपको make installइसके बजाय उपयोग करने की अनुमति देगा sudo make installक्योंकि /home/<user>/<some>/<directory>यह आपके द्वारा लिखने योग्य है। इसके अलावा स्थापना रद्द एक तस्वीर है -rm -rf /home/<user>/<some>/<directory>

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