क्यों apt-get sudo की आवश्यकता है?


12

यह शायद एक बेवकूफी भरा सवाल है, लेकिन मुझे हाल ही में एहसास हुआ कि मुझे इस बात का कोई अंदाजा नहीं है कि apt-get के साथ सिंगल-यूजर फंक्शनलिटी क्यों नहीं है।

उत्तर मैं नहीं ढूंढ रहा हूं:

  • "ऐसा इसलिए है क्योंकि उपयुक्त सिस्टम-स्तरीय निर्देशिकाओं को लिखते हैं"। यह सतह-स्तर क्यों है, लेकिन मैं गहरे स्तर की तलाश कर रहा हूं। क्या एकल-उपयोगकर्ता वातावरण (एक ला पाइप + वर्चुअनव) को मौलिक रूप से अवरुद्ध कर रहा है?
  • "आप सिर्फ स्रोत से निर्माण कर सकते हैं"। यह एक वर्कअराउंड है, लेकिन मेरे प्रश्न को संबोधित नहीं करता है। मैं एक छोटी अवधि की समस्या को ठीक नहीं करना चाहता, और मेरी सभी मशीनों पर वैसे भी जड़ें हैं।

मुझे आशा है कि आप जानते हैं कि आप अपने घर निर्देशिका में स्रोत से किसी भी पैकेज का निर्माण कर सकते हैं।
जॉबिन

ठीक है, लेकिन मैं इस बात की तलाश कर रहा हूं कि आखिर क्यों मर्यादा कायम हो। स्रोत से भवन का उत्तर नहीं है।
पैटीमुस्पर्म

1
मुझे लगता है कि आप जो सवाल पूछ रहे हैं, वह यह है कि "अधिकांश लिनक्स सॉफ्टवेयर स्थानांतरित क्यों नहीं है?"। यह पूरी तरह से उपयोगकर्ता-स्थानीय निर्देशिकाओं में सॉफ़्टवेयर स्थापित करने की अनुमति देने के लिए पूरी तरह से संभव होगा, लेकिन चूंकि अधिकांश सॉफ़्टवेयर इसका समर्थन नहीं करते हैं इसलिए ऐसा करने में बहुत कम बिंदु होगा।

जवाबों:


10

क्यों apt-get sudo की आवश्यकता है?

हर बार नहीं। आप पूरी तरह से apt-getबिना उपयोग कर सकते हैं sudo। ऐसे उदाहरण हैं जहां आपको बिल्कुल भी ज़रूरत नहीं है sudo, जैसे कि अपनी वर्तमान निर्देशिका के लिएapt-get download कौन सा पैकेज डाउनलोड करता है , जो आपके वर्तमान निर्देशिका केapt-get source लिए डेबियन स्रोत फ़ाइलों को changelogडाउनलोड करता है , जो किसी दिए गए पैकेज के चैंज को डाउनलोड करता है और प्रिंट करता है, और कोई भी कमांड जिसमें है --simulate/ --dry-run/ --no-act(के मामले में installआप भी जरूरत है --no-download)।

ऐसा इसलिए है क्योंकि इन कार्यों / आदेशों को सिस्टम निर्देशिका लिखने की आवश्यकता नहीं है।

अब, क्यों apt-getजरूरत है sudo? वास्तव में यह नहीं है। आप apt-get को ditch कर सकते हैं, एक पैकेज को डाउनलोड कर सकते wgetहैं dpkg --extractऔर जिस भी डायरेक्टरी में चाहें, उस पैकेज का उपयोग और उपयोग कर सकते हैं। वहाँ भी है --instdirजो बाइनरी केवल पैकेज के लिए काम करना चाहिए।

अब, यह डिफ़ॉल्ट क्यों नहीं है? क्योंकि यह एक पीड़ा है। जो आप चाहते हैं, उसे करने के लिए, हमें प्रत्येक पैकेज को दो बार, एक सही तरीके से, और दूसरा वह करने की आवश्यकता होगी जो आप चाहते हैं। निर्माण के दौरान, बायनेरिज़ को आमतौर पर यह जानने की ज़रूरत होती है कि वे फ़ाइलें और लाइब्रेरी कहाँ हैं जिनकी उन्हें ज़रूरत है (कुछ मामलों में, यह संकलन में हार्डकोड है)।

अब, आप इसके बजाय क्या कर सकते हैं? बस कुछ वातावरण को एक ला वर्चुअन चेरोट करें, जहां आप बिना रूट के पैकेज स्थापित कर सकते हैं।

सारांश, यह तरीका नहीं है कि apt-get का उपयोग किया जाना था, और मैं apt-get के समान एक और पैकेज मैनेजर को नहीं जानता हूं जो आपको ऐसा करने की अनुमति देता है। दिन के अंत में, apt-getdpkg के लिए एक फ्रंट-एंड है जो इसमें से कुछ कर सकता है।


3

पैकेज में जानकारी स्वयं निर्धारित करती है कि फाइलें कहां स्थापित की जाएंगी, इसलिए आपको पैकेज डेटाबेस को बदलने और बदलने के sudoलिए लिखने की आवश्यकता /है।

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

यदि आप एक सिस्टम पर हैं, तो काम पर कहें, जहां आपकी sudoपहुंच नहीं है , आप स्रोत से संकलन कर सकते हैं और अपने घर में इंस्टॉलेशन डायरेक्टरी सेट कर सकते हैं। फिर, इसकी कोई आवश्यकता नहीं है sudo। जब आप स्रोत से स्थापित कर रहे हैं, तो आप आमतौर पर पैकेज डेटाबेस को नहीं बदल रहे हैं।


जवाब के लिए धन्यवाद! मैं वर्कअराउंड्स को जानता हूं और उसका उपयोग करता हूं, लेकिन मैं यह जानने की कोशिश कर रहा हूं कि मैं उनका उपयोग क्यों कर रहा हूं। मेरा मानना ​​है कि आप कह रहे हैं कि मुद्दा यह है कि स्थापित पथ हार्डकोर को पैकेज मेंटेनर्स द्वारा हार्डकोड किया गया है - इसे क्यों नहीं बदला जा सकता है?
पैटीमुसप्रेम

2

यह कोई बेवकूफी भरा सवाल नहीं है।

एक ऑपरेटिंग सिस्टम में विशेषाधिकार स्तर

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

ऑपरेटिंग सिस्टम में किसी भी संशोधन को करने के लिए, जो सिस्टम पर एक पूरे के रूप में प्रभाव डाल सकता है, केवल उपयोगकर्ता की फ़ाइलों के बजाय, एक उच्च विशेषाधिकार स्तर की आवश्यकता होती है, जिसे लिनक्स में "सुपरयुसर" विशेषाधिकारों (या आमतौर पर) के रूप में संदर्भित किया जाता है। जिसे "रूट" कहा जाता है)। इस विशेषाधिकार स्तर ने पूरे ऑपरेटिंग सिस्टम तक पहुंच को बढ़ा दिया है जिससे यह सभी उपयोगकर्ताओं के लिए सभी फ़ाइलों को संशोधित या नष्ट कर सकता है।

उपयुक्त की भूमिका

जब आप apt-get के माध्यम से सॉफ़्टवेयर स्थापित कर रहे हैं, तो आप ऐसे सॉफ़्टवेयर इंस्टॉल कर रहे हैं जो सिस्टम-वाइड उपलब्ध होंगे । यही है, सॉफ़्टवेयर को केवल उस उपयोगकर्ता द्वारा चलाने के लिए किसी उपयोगकर्ता के होम डायरेक्टरी में नहीं रखा जाएगा, लेकिन इसे सिस्टम-वाइड एप्लिकेशन डायरेक्टरी (जैसे / usr, / etc, / var) आदि में इंस्टॉल किया जाएगा ) सभी उपयोगकर्ताओं द्वारा चलाने के लिए। इन निर्देशिकाओं को संशोधित करने के लिए आपको सुपरसुसर विशेषाधिकारों की आवश्यकता होती है। कोई भी अप्रकाशित उपयोगकर्ता इन निर्देशिकाओं को संशोधित नहीं कर सकता है, क्योंकि अन्यथा अनपेक्षित सॉफ़्टवेयर सिस्टम के साथ गड़बड़ कर सकता है।

यदि आप apt-get का उपयोग करके कुछ स्थापित करने की कोशिश करते हैं, तो सुपर-सुपरुसर विशेषाधिकारों को दिए बिना, पहली बाधा जो इसे दूर करने में विफल होगी, वह है अपने स्वयं के सॉफ़्टवेयर कैटलॉग में लिखने के लिए लॉक प्राप्त करना। सिस्टम-वाइड यूटिलिटी होने के कारण, apt-get स्थापित सॉफ़्टवेयर की एक सूची को बनाए रखता है, जिसे स्वाभाविक रूप से संपादित करने के लिए सुपरयुसर विशेषाधिकारों की आवश्यकता होती है ताकि अनपेक्षित सॉफ़्टवेयर इसके साथ गड़बड़ न कर सके। लेकिन यहां तक ​​कि अगर आप किसी तरह इस बाधा को दूर कर सकते हैं (उदाहरण के लिए, फ़ाइल अनुमतियों को बदलकर), सॉफ़्टवेयर स्थापित करने के तरीके के साथ कई और कदम अभी भी विफल होंगे, क्योंकि स्थापना दिनचर्या कई सिस्टम निर्देशिकाओं पर लिखने पर निर्भर करेगी।

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


उत्तर देने के लिए धन्यवाद, और संपूर्णता के लिए धन्यवाद। मैं apt-get के पूरे सिस्टम में प्रकृति को समझने, लेकिन क्या मैं समझने की कोशिश कर रहा हूँ है क्यों इसे उस तरह से हो गया है।
पैटीम्यूप्राइम

1
यह इस तरह से नहीं था। यह सिर्फ उबंटू (और डेबियन) को डिज़ाइन करने के तरीके से होता है। एक ऑपरेटिंग सिस्टम को डिजाइन करने वाले किसी व्यक्ति को रोकना कुछ भी नहीं होगा जहां सॉफ्टवेयर स्थापित करने का सामान्य तरीका प्रति उपयोगकर्ता था।
थोमसट्रेटर

1

क्यों डिफ़ॉल्ट रूप से / (या समान) निर्देशिकाओं के लिए स्थापित हो जाते हैं?

इसका सरल कारण यह है कि apt-getसॉफ्टवेयर कहां स्थापित करना है, यह तय नहीं करता है। यह डेवलपर्स द्वारा तय किया जाता है और एप्लिकेशन के अंदर ही कोडित किया जाता है।

क्या मैं अन्य निर्देशिकाओं में स्थापित कर सकता हूं?

हां, आप अन्य निर्देशिकाओं में स्थापित कर सकते हैं। खुले स्रोत सॉफ़्टवेयर के लिए, स्रोत प्राप्त करें, स्थापना निर्देशिका को बदलें, संकलन करें, निर्माण करें और इसे स्थापित करें। आमतौर पर शामिल configureस्क्रिप्ट का एक विकल्प होता है जो आपको निर्दिष्ट करता है कि कहां स्थापित करना है। यह आमतौर पर है --prefix

लेकिन मैं उपयुक्त उपयोग करने पर जोर देता हूं। अब क्या करे?

ठीक। अभी भी ऐसा करने का एक तरीका है apt-get, हालांकि यह एक अंतिम उपयोगकर्ता के लिए बहुत अधिक होगा। उनके नक़्शे - कदम पर चलिए।

  1. स्रोत प्राप्त करें
  2. स्थापना निर्देशिका को कुछ इस तरह बदलें $HOME
  3. संकलित करें और निर्माण करें।
  4. इसे .deb फ़ाइल में पैकेज करें
  5. एक लॉन्चपैड खाता बनाएँ।
  6. Ubuntu आचार संहिता पर हस्ताक्षर करें (यदि यह आवश्यक है तो मुझे यकीन नहीं है)।
  7. खुद के लिए एक ppa बनाएँ
  8. डेबिट पैकेज को ppa पर अपलोड करें।
  9. अपने स्रोतों में ppa जोड़ें।
  10. भागो sudo apt-get update
  11. भागो apt-get install package

यह बहुत आसान / कठिन था। क्या स्थापना के दौरान निर्देशिका का चयन करना संभव है?

हां और ना।

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

नहीं क्योंकि यह विधि उपयोग नहीं करती है apt-get

क्या मैं यह किसी दिन, आसानी से कर सकता था apt-get?

मुझे नहीं लगता कि apt-getसॉफ्टवेयर्स के डेवलपर्स और / या डेवलपर्स ऐसा करने में रुचि रखते हैं, लेकिन कुछ सॉफ़्टवेयर विकसित किए जा सकते हैं जो स्रोत, परिवर्तन, संकलन, निर्माण, स्थापना निर्देशिका के लिए केवल पूछकर चरणों को स्वचालित रूप से स्थापित करेंगे

मेरी 6 वीं इंद्रिय मुझे बताती है कि आज्ञा होगी

apt-dont-get install pkg1 pkg2 ...

उत्तर के लिए धन्यवाद - यह पूरी तरह से है और मेरे प्रश्न को संबोधित करता है। मुझे समझ में नहीं आता कि एकल-उपयोगकर्ता कार्यक्षमता को उपयुक्त रूप में विकसित करने में कोई दिलचस्पी क्यों नहीं होगी। ऐसा लगता है कि कुछ उपयोग मामलों में कार्यक्षमता अत्यधिक उपयोगी होगी।
पैटीमुसप्रेम

अच्छी जानकारी, लेकिन प्रश्नोत्तर के भीतर एक प्रश्नोत्तर प्रारूप ...? :) Idk, शायद आपको एक मानक प्रारूप में संपादित करना चाहिए? सिर्फ एक विचार।
chaskes

@PattimusPrime ऐसे मामले ज्यादातर दुर्लभ होते हैं, क्योंकि ज्यादातर मामलों में प्रवेश सभी आवश्यक सॉफ़्टवेयर स्थापित करते हैं और अन्य को सॉफ़्टवेयर स्थापित करने की आवश्यकता नहीं होती है। इसके अलावा, स्रोत से निर्माण करने वाले तथ्य बहुत आसान हैं और इस तरह की कार्यक्षमता को लागू करना तब तक बेकार होगा जब तक कि सॉफ्टवेयर डेवलपर्स इसे लागू नहीं करते हैं जब तक कि स्वयं का सॉफ़्टवेयर apt-getडेवलपर्स को ऐसा करने से रोक देगा । इसके अलावा, कई मौजूदा कार्यक्रम अन्य कार्यक्रमों पर निर्भर करते हैं और वे उन्हें / usr निर्देशिका में खोजते हैं। इस तरह की कार्यक्षमता को लागू करने के लिए सभी मौजूदा सॉफ्टवेयर्स में परिवर्तन की आवश्यकता होगी जिसमें निर्भरता होती है (यह संख्या हजारों में नहीं होती है)।
पंजीकृत उपयोगकर्ता

$ घर में फ़ाइलों को स्थापित करने के लिए एक डेबियन नीति का उल्लंघन है। आपको ऐसा कभी नहीं करना चाहिए। यदि कुछ भी हो, तो /opt/packageइसके बजाय डायरेक्टरी का उपयोग करें और उसे काट दें।
बृहम

@ ब्रायम: मैंने लोगों को पैकेज स्थापित करने की सलाह देते हुए देखा है $HOME/opt/कि क्या उन्हें पैकेज स्थापित करने के लिए विशेषाधिकार की आवश्यकता नहीं है /opt/..
आदित्य

-1

क्योंकि यह उन फ़ाइलों को संपादित करने में सक्षम है, जो आप उन्हें उपयोग नहीं कर सकते। आप उन्हें चकमा देने में सक्षम हो सकते हैं, इसलिए आप मुझे ऐसा करने के लिए आश्वस्त नहीं कर सकते


जवाब के लिए धन्यवाद। मैं देख रहा हूँ क्यों यह केवल chmodded फ़ाइलों को संपादित करता है। यह मुझे लगता है कि एक एकल-उपयोगकर्ता कार्यक्षमता को लागू करना आसान होगा और कुछ क्षेत्रों (जैसे सुपरकंप्यूटिंग क्लस्टर्स) में बेहद उपयोगी होगा
पैटीम्यूसप्रेम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.