एक उपयोगकर्ता के लिए स्थानीय रूप से एक पैकेज स्थापित करना - सर्वोत्तम प्रथाओं?


18

मैं गेल को आरएचईएल सर्वर पर उपयोगकर्ता के लिए स्थानीय रूप से स्थापित करना चाहता हूं (मुझे रूट एक्सेस नहीं है) स्थानीय उपयोगकर्ता खाते में सॉफ़्टवेयर स्थापित करने का आपका सबसे साफ / सबसे व्यवस्थित तरीका क्या होगा?

  • उस उपयोगकर्ता के घर निर्देशिका में सब कुछ स्थापित करना?
  • निर्देशिका लेआउट कैसा दिखेगा?
  • क्या आप स्रोत या आरपीएम से स्थापित करेंगे?
  • यदि RPM से आप YUM या RPM का उपयोग करेंगे?

जवाबों:


17

उपयोग करने वाले उपयोगकर्ता निर्देशिका में rpms स्थापित करने के तरीके हैं rpm, लेकिन मुझे विश्वास नहीं है कि यह सीधे-आगे है। मैं नहीं मानता कि कोई रास्ता है yum

मेरे localघर में एक निर्देशिका से एक निर्देशिका तक संकलन करने के लिए मेरा मानक अभ्यास बन गया है

$ mkdir ~/local
$ mkdir ~/local/bin
$ mkdir ~/local/lib
$ mkdir ~/local/include

मैं स्रोत डाउनलोड करता हूं /usr/local, जब मैं जड़ होता हूं, जैसे, में ~/local/git

संकलन करते समय मैंने उपसर्ग को localनिर्देशिका में सेट किया

$ configure --prefix=/home/user_name/local
$ make
$ make install

मैं तब ~/local/binअपने $ PATH में जोड़ता हूँ .bash_profile

बेशक, स्रोत से स्थापित करने के साथ दर्द यह है कि आपको स्वचालित निर्भरता संकल्प नहीं मिलता है। यदि आप पाते हैं कि आपको निर्भरताएं स्थापित करने की आवश्यकता है, तो उन्हें ऊपर की तरह संकलित और स्थापित करें। फिर जब आप संकलित करते हैं git, तो आपको संकलित झंडे को अपडेट करने की आवश्यकता होती है, ताकि वे निर्भरता के पुस्तकालयों के लिए सही स्थान देखें और फाइलें शामिल करें:

./configure --prefix=/home/user_name/local LDFLAG='-L/home/user_name/local/lib' CFLAGS='-I/home/user_name/local/include' CPPFLAGS='-I/home/user_name/local/include' CXXFLAGS='-I/home/user_name/local/include'

यह पूरी तरह से काम किया, सलाह के लिए धन्यवाद!
वायर्डिन

13

.Rpm फ़ाइल वास्तव में cpioसंग्रह का एक रूप है , जो कि एक सरल रूप की तरह है tarrpm2cpioउपयोगिता शायद सिस्टम पर स्थापित किया गया है और उपयोग करने के विशेषाधिकारों की आवश्यकता नहीं है; यह मानक से बाहर लिखता है, इसलिए परिवर्तित करने के लिए:

rpm2cpio whatever.rpm > whatever.cpio

वहाँ man cpioआप अपने आप को देख सकते हैं, लेकिन अब आप जो करना चाहते हैं वह है "संग्रह में" मोड में cpio को संग्रह फ़ीड करना:

cat whatever.cpio | cpio -i

बहुत संभावना है कि सामान को एक निर्देशिका पेड़ में व्यवस्थित किया जाता है ताकि फाइलें उपयुक्त स्थानों (बिन, आदि,) में जाएं। यदि वे आपके pwd में मौजूद नहीं हैं, तो आपको एक त्रुटि मिलेगी, लेकिन वह संग्रह में फ़ाइलों को सूचीबद्ध करेगा (आप -t/ --listस्विच के साथ एक ही चीज़ प्राप्त कर सकते हैं )। यदि आप निर्देशिकाओं को स्वचालित रूप से बनाना चाहते हैं, तो उपयोग करें -d। तो एक आरपीएम अनपैक करने का एक त्वरित तरीका:

rpm2cpio whatever.rpm | cpio -i -d

आप इसका उपयोग $ HOME में स्थापित करने के लिए कर सकते हैं। कार्यक्रम में सामान खोजने की उम्मीद है तो केवल समस्या होगी/etc , आदि, क्योंकि कई चीजों को उनके संकलित स्थान को हार्ड-कोडित किया जाता है जो भी उद्देश्य के लिए उन्हें संकलित किया जाता है।

स्रोत से निर्माण शायद एक बेहतर विकल्प है (क्योंकि आप सही स्थान प्रदान कर सकते हैं), लेकिन यदि आप इसे किसी भी मामले में काम करने के लिए प्राप्त कर सकते हैं तो यह त्वरित और सरल है।

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


0

यह एक वैकल्पिक है (यम का उपयोग नहीं कर रहा है) और अनुमति निराधार होगी लेकिन आप chownबाद में उपयोगकर्ता को लक्षित कर सकते हैं : - यह भी एक हिट या मिस है :-(

#-## Download all dependency for the RPM -- 
#sudo yum install yum-utils
#sudo yumdownloader --resolve --destdir ~/download bash

#-## Install all downloaded to an alternate root 
#sudo rpm --initdb --root <user_home_dir>
#sudo rpm --root <user_home_dir> -Uvh --nodeps ~/download/*

फिर अपने पथ के लिए उपयुक्त स्थान जोड़ें।

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