गैर-रूट पैकेज प्रबंधक


51

मेरे शोध से, मुझे लगता है कि सभी पैकेज प्रबंधक एक विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में इस्तेमाल किए जाने पर जोर देते हैं और इसे स्थापित किया जाना चाहिए /

आमतौर पर, मैं जो करना पसंद करता हूं वह एक थकाऊ खाता बनाना, कुछ सॉफ़्टवेयर संकलित करना और $HOMEउस खाते के लिए इंस्टॉल करना है । मैं कई प्रकार के सेटअप आज़मा सकता हूं और फिर जब मैं पूरा हो जाऊंगा, तो खाते को नष्ट कर दूंगा।

हालाँकि, संकलन सॉफ़्टवेयर थकाऊ हो जाता है।

मेरा अनुभव वास्तव में सिर्फ सीमित है yum, लेकिन मुझे समझ में नहीं आता है कि मैं रेपो फाइल को क्यों नहीं छोड़ पाऊंगा ~/etc/yum.repos.dऔर अपने घर के खाते में सब कुछ स्थापित कर सकता हूं ।

क्या कोई कारण है कि सॉफ्टवेयर को स्थापित करने के लिए पैकेज प्रबंधकों को एक निजीकृत उपयोगकर्ता के रूप में उपयोग किया जाना चाहिए?

जवाबों:


35

बाइनरी पैकेज को इस धारणा के साथ संकलित किया जाता है कि उन्हें विशिष्ट स्थानों पर स्थापित किया जाएगा /। यह हमेशा आसानी से नहीं बदला जाता है, और यह अतिरिक्त क्यूए प्रयास लेगा (जो पहली जगह में काफी मुश्किल है!) यह निर्धारित करने के लिए कि क्या विशिष्ट बायनेरी हैं या स्थानांतरित नहीं हैं।

एक हद तक, आप एक गैर-रूट उपयोगकर्ता के रूप में एक उपनिर्देशिका में एक संपूर्ण प्रणाली बनाने के लिए नकलीचोट जैसी चीजों का उपयोग कर सकते हैं , लेकिन यह थकाऊ और नाजुक है।

आप स्रोत संकुल के साथ बेहतर भाग्य होगा। Gentoo Prefix और Rootless GoboLinux दोनों ऐसे पैकेज मैनेजर हैं जो गैर- /स्थानों पर इंस्टॉल हो सकते हैं और गैर- rootउपयोगकर्ताओं द्वारा उपयोग योग्य हो सकते हैं ।


3
मुझे लगता है कि वहाँ relocatability के 2 प्रकार हैं। पैकेज यह मान सकता है कि यह हमेशा किसी निश्चित स्थान पर होता है या अन्य चीजें कुछ निश्चित स्थानों (जैसे /bin) में होती हैं या यह मान सकती हैं कि यह --prefix द्वारा निर्दिष्ट स्थान पर स्थापित है। जबकि बाद वाले उन परियोजनाओं के आसपास काम कर सकते हैं जो पूर्व को स्रोत कोड पर पैच की आवश्यकता होती है।
मिकीज पीचोटका

एक अन्य विकल्प ला जेंटू उपसर्ग, रूटलेस और निक्स pkgsrc है । यह NetBSD से आता है, लेकिन विभिन्न प्लेटफार्मों पर काम करता है।
माइकल एकस्ट्रैंड

2
बाइनरी पैकेज को इस धारणा के साथ संकलित किया जाता है कि वे/ इस तरह की ध्वनियों में एक विशिष्ट स्थान पर स्थापित हो जाएंगे, जो एक आवश्यकता है जो शायद 30 साल पहले उचित हो सकती थी लेकिन अब नहीं। उदाहरण के envलिए इस तरह की समस्याओं को हल करने के लिए कार्यक्रम नहीं है? यदि विशिष्ट स्थानों में अन्य बायनेरिज़ देखने के लिए किसी भी बाइनरी को कॉन्फ़िगर करने की योजना के साथ बाहर आना आसान नहीं है।
पायोत्र डोब्रोगोस्ट

1
कुछ को @PiotrDobrogost बढ़ाते हैं, तो कुछ को बढ़ाते हैं। उदाहरण के लिए /etcया (मेरी जानकारी के अनुसार) के लिए कोई पर्यावरण चर नहीं है /usr/lib/<packagename>/या /usr/libexec/<packagename>//usr/shareXDG वैरिएबल द्वारा बदला जा सकता है जो इस सदी में कुछ समय के लिए जारी किया गया है और जरूरी नहीं कि पुराने कार्यक्रमों के लिए अपनाया जाए।
मैकीज पीचोटका

28

एक पैकेज मैनेजर प्रोजेक्ट है- निक्स - एक दिलचस्प फाउंडेशनल आइडिया (एक " फंक्शनल " pkg मैनेजर) के साथ, जो प्रति उपयोगकर्ता ऑपरेशन का भी समर्थन करता है:

बहु-उपयोगकर्ता समर्थन

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

एक नोट मैं ADD Nix करना चाहता हूँ: अपनी पसंद की एक यूनिक्स जैसी प्रणाली में प्रयोग करने योग्य होना चाहिए (जैसे, एक लिनक्स डिस्टर्ब)।

संकुल का एक बड़ा संग्रह भी है जो निक्स पैकेज प्रबंधक के साथ स्थापित किया जा सकता है- निक्सपग्स - कई प्लेटफार्मों के लिए निर्मित :

  • 32-बिट और 64-बिट x86 (i686-linux और x86_64-linux) पर GNU / Linux
  • मैक ओएस एक्स (i686-darwin और x86_64-darwin)
  • FreeBSD (i686-freebsd और x86_64-freebsd)
  • OpenBSD (i686-openbsd)
  • Windows / Cygwin (i686-cygwin),

और एक संबंधित dist ---- निक्स :

निक्स एनआईसीएस पर आधारित एक लिनक्स वितरण है। यह न केवल पैकेज प्रबंधन के लिए, बल्कि सिस्टम कॉन्फ़िगरेशन (जैसे, / आदि में कॉन्फ़िगरेशन फ़ाइल बनाने के लिए) का प्रबंधन करने के लिए निक्स का उपयोग करता है। इसका मतलब है, अन्य बातों के अलावा, यह आसानी से सिस्टम के पूरे कॉन्फ़िगरेशन को पहले की स्थिति में वापस करना संभव है। इसके अलावा, उपयोगकर्ता रूट विशेषाधिकारों के बिना सॉफ़्टवेयर स्थापित कर सकते हैं। अधिक पढ़ें…

और एक संबद्ध "निरंतर" बिल्ड सिस्टम-- हाइड्रा


4
अच्छा सारांश। हाल ही में जीएनयू गुइक्स की घोषणा की गई थी। GNU पैकेज मैनेजर निक्स पर आधारित है। savannah.gnu.org/forum/forum.php?forum_id=7436
Davorak

2
@Davorak nixऔर के बीच अंतर क्या हैं guix। जैसा कि अब मैं वास्तव में nixअपने काम के लिए उपयोग कर रहा हूं , मैं जानना चाहता हूं कि क्या मुझे guixउस उपकरण के दूसरे कार्यान्वयन के रूप में विचार कर सकता है जिसकी मुझे आवश्यकता है। क्या मैं कहीं अंतर का सारांश पढ़ सकता हूं? शायद, आप यहां इस तरह के सारांश के साथ एक और वैकल्पिक समाधान की घोषणा करते हुए उत्तर भी लिख सकते हैं?
इम्ज़ - इवान ज़खरीशेव

6

सबसे पहले यह निर्भरता के कारण है। कुछ पैकेज उपयोगकर्ता द्वारा स्थापित नहीं किए जा सकते हैं - जैसे पॉलिसीकिट। इसलिए इसके लिए पैकर पर अतिरिक्त बोझ की आवश्यकता होती है जो अपना खाली समय दान करते हैं और आमतौर पर प्रोग्राम स्थापित करना टाइपिंग sudo(एकल-उपयोगकर्ता स्टेशन) या नैगिंग व्यवस्थापक के रूप में आसान होता है ।

$ HOME में स्थापित करने के लिए विकल्प हैं

  • भाषा आदिम 'पैकेज मैनेजर' आमतौर पर इसे आउट ऑफ बॉक्स (जैसे कि रूबी या हास्कल के लिए कबाल) या छोटे ट्वीकिंग के साथ समर्थन करता है (मैं अजगर के लिए नाम भूल गया)
  • अच्छा पुराना ./configure --prefix=$HOME/sandbox --enable-cool-feature && make all install(या झूले की तरह विचरण)।
  • वहाँ था कुछ साल पहले $ HOME में स्थापित करने के लिए कार्यक्रम। हालाँकि मुझे यह नहीं मिल रहा है - मुझे लगता है कि लगभग किसी ने भी इसका इस्तेमाल नहीं किया है क्योंकि वे या तो उन्हें स्वयं या नाग प्रशासकों को स्थापित करते हैं।

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

1
@elmt: संभवतः स्टोव , जो आपको वैसे भी रुचि दे सकता है (लेकिन यह एक उपकरण है, पैकेज स्रोत नहीं)।
गिलेस एसओ- बुराई को रोकना '

@ गिल्स: नहीं - इसमें जीयूआई था और इसका मतलब 'सरल' होना था। मेरा अनुमान है कि वर्तमान दिशा सिनैप्टिक / पैकेजकिट से अधिक है।
मकीज पीचोटका

6

मैं JuJu का उपयोग करता हूं जो मूल रूप से आपके $ HOME / .jpg निर्देशिका के अंदर वास्तव में एक छोटे से वितरण (केवल पैकेज प्रबंधक वाले) को वितरित करने की अनुमति देता है।

यह आपके कस्टम सिस्टम को प्रॉपोट के माध्यम से होम डायरेक्टरी के अंदर पहुंचाने की अनुमति देता है और इसलिए, आप रूट विशेषाधिकारों के बिना किसी भी पैकेज को स्थापित कर सकते हैं। यह सभी प्रमुख लिनक्स वितरणों के लिए ठीक से चलेगा, एकमात्र सीमा यह है कि JuJu न्यूनतम reccomended संस्करण 2.6.32 के साथ लिनक्स कर्नेल पर चल सकता है।


4

एक और एक अलग मॉडल के साथ एक 0 स्थापना है । यह इस विचार पर आधारित है कि आप वास्तव में पैकेज स्थापित नहीं करते हैं, लेकिन उन्हें केवल एक वैश्विक नामस्थान से डाउनलोड करते हैं, जो यदि आवश्यक हो तो डाउनलोड, संकलन करता है और उस सॉफ़्टवेयर को कैश करता है जिसका आप उपयोग करना चाहते हैं।


4

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


3

मेरा अनुभव वास्तव में केवल यम तक सीमित है, लेकिन मुझे समझ नहीं आता कि मैं रेपो फाइल को ~ / etc / yum.repos.d में क्यों नहीं छोड़ पाऊंगा और yum ने घर के खाते में सब कुछ स्थापित कर दिया है।

मुख्य धारा के लिनक्स पैकेज प्रबंधक दुनिया को एक sysadmin के रूप में देखते हैं ... जहां मशीन एक एकल इकाई है। यह आपको "एक्स सिस्टम एक्स के लिए क्या बकाया इरेटा लागू होता है" और "सिस्टम एक्स और सिस्टम वाई अलग कैसे होते हैं" जैसे सवालों के जवाब पाने की अनुमति देता है। यह भी yum को "एक इतिहास" रखने की अनुमति देता है जो कि प्रयोग करने योग्य है, rpmdb संस्करण हैं और "yum --security अपडेट" आदि जैसी चीजें करते हैं।

शून्य-संस्थापित जैसे कुछ पैकेज प्रबंधक हैं, जो दुनिया को एक उपयोगकर्ता के रूप में देखने की कोशिश करते हैं ... अर्थात। मेरे पास कौन से एप्लिकेशन हैं

आप सोच सकते हैं कि बाद में एक बेहतर मॉडल है, लेकिन IMNSHO एक ऐसा कारण है जिसे आपने शून्य-इंस्टॉल के बारे में नहीं सुना है लेकिन यम के बारे में सुना है।


2

ब्लॉक पर एक नया बच्चा है: " JuNest (जेल्ड यूजर नेस्ट) - आर्क लिनक्स आधारित डिस्ट्रो जो रूट एक्सेस के बिना किसी भी लिनक्स डिस्ट्रो पर चलता है।" @ https://github.com/fsquillace/junest एडवांटेज यह है कि यह एक नए प्रकार के पैकेज फॉर्मेट को पेश नहीं करता है, इसलिए बहुत आसान इंस्टॉल (न्यूनतम: ca 320M) के बाद, पूरा आर्क लिनक्स रिपॉजिटरी (13000 से अधिक) पैकेज एटीएम) आपकी उंगलियों पर है।


1

विशेष रूप से installpkg, स्लैकवेयर द्वारा उपयोग किए जाने वाले उपकरण । मैन पेज से:

--root /otherroot
       Install using a location other than / (the default) as the root of the 
       filesystem to install on. In the example given, use /otherroot instead.
       Setting the ROOT environment variable does the same thing.

हालाँकि, मुझे ऐसा कोई भी बेहतर फ्रंट नहीं मालूम है जो ऐसा करने में सक्षम हो (जैसे slapt-get, जहाँ तक मुझे पता है, यह नहीं कर सकता)। सैद्धांतिक रूप से, आपको उर्फ ​​के installpkgलिए सक्षम होना चाहिए installpkg --root ~/Apps- हालांकि, मुझे लगता है कि अधिकांश फ्रंटेंड को चलाने के लिए रूट की आवश्यकता होती है, जो बिंदु को हरा देता है।


1

मैं सुझाव दूंगा http://linuxbrew.sh/

यह मूल रूप से macOS के लिए काढ़ा का एक कांटा है और उपयोग के लिए बायनेरिज़ को पहले से रखा है ...

विशेष रूप से पुराने जीसीसी संस्करणों को संभालने के लिए बहुत अच्छा है।

यदि आप वास्तव में हाथ से स्थापित करना चाहते हैं, तो एक उपयोगी मार्गदर्शिका है http://www.linuxfromscratch.org/


0

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

आप अपने चयन की एक निर्देशिका के अंदर rpm फाइल (rpm2cpio package.rpm | cpio -idmv) को डिकम्पोज करने का प्रयास कर सकते हैं।

लेकिन जब आप अपने कार्यक्रम को निष्पादित करेंगे तो आपको निर्भर पुस्तकालयों को लोड करने के लिए LD_LIBRARY_PATH को संशोधित करने के लिए ध्यान रखना होगा। इसके अलावा यह किसी भी निर्भरता का ध्यान नहीं रखेगा।

उदाहरण:

# mkdir new_root
# cd new_root
# wget ftp://mirror.switch.ch/pool/4/mirror/centos/6.7/os/x86_64/Packages/vim-enhanced-7.4.629-5.el6.x86_64.rpm
# rpm2cpio vim-enhanced-7.4.629-5.el6.x86_64.rpm | cpio -idmv
# ./usr/bin/vim -version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jul 24 2015 02:23:23)

ऊपर किसी भी निर्भर पुस्तकालय नहीं है, अन्यथा आप कुछ का उपयोग करना होगा:

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