रूट एक्सेस के बिना सिस्टम पर निर्माण के लिए स्थानीय रूप से विकास फाइलें स्थापित करें?


11

एक सर्वर है जो मैं काम करता हूं, लिनक्स का एक पुराना संस्करण चला रहा हूं। मेरे पास सिस्टम तक रूट एक्सेस नहीं है, इसलिए मैं एक उपकरण के अधिक हाल के संस्करण का निर्माण करना चाहता था, जिसका मैं बहुत उपयोग करता हूं (विम 7.3)। मुझे लगा कि मैं इसका निर्माण करूंगा और इसे ~ / बिन में स्थापित करूंगा। हालाँकि, इसके लिए ncurses विकास फ़ाइलों की आवश्यकता होती है जो सिस्टम-वाइड स्थापित नहीं हैं। मुझे ncurses-devel rpm मिला, और 'lib' और 'extract' फ़ोल्डर निकाले, मैं उन्हें कहां रखूंगा और उन्हें खोजने के लिए ./configure स्क्रिप्ट कैसे बताऊंगा ताकि मैं स्थानीय रूप से पैकेज को ठीक से कॉन्फ़िगर और निर्माण कर सकूं?

संपादित करें: मैंने वर्चुअलबॉक्स में समान OS स्थापित करके और पैकेज का निर्माण करके और बायनेरिज़ की नकल करके इसके चारों ओर काम करना समाप्त कर दिया।


serverfault.com/questions/23734 मदद के लिए समान हो सकता है। अधिकांश उत्तरों में यह स्थापित करना शामिल है कि आपके गृहकार्य के भीतर पूरी तरह से एक प्रभावी प्रणाली क्या है, लेकिन यह Gentoo Prefix और Rootless Oobo में काम किया जा सकता है।
अपरिपक्व

जवाबों:


14

मैंने अपनी पिछली नौकरी में अक्सर ऐसा किया था - सबसे अच्छा काम करने वाला समाधान ~ / usr निर्देशिका बनाने के लिए था, और सही दिशा में ./configure लिपियों को इंगित करने के लिए --prefix तर्क का उपयोग करें। यहाँ कदम है:

  • ~ ~ Usr निर्देशिका बनाएं, और इसके नीचे लिब और बिन डाइरेक्टरी शामिल करें।
  • अपनी .profile, .bashrc, या अन्य शेल इनिट स्क्रिप्ट में, अपने शेल की बोली में निम्नलिखित (या समकक्ष) जोड़ें:
    export PATH=$PATH:~/usr/bin
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/usr/lib
    export C_INCLUDE_PATH=$C_INCLUDE_PATH:~/usr/include
    export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:~/usr/include
  • पैकेज बनाते समय, उपयोग करें ./configure --prefix=/home/<username>/usr

इस व्यवस्था ने मेरे लिए अधिकांश स्थितियों में काम किया, जहाँ मुझे यूजर्स की चीजों को बनाने की जरूरत थी। सबसे कठिन हिस्सा आम तौर पर आपके लिए आवश्यक सभी निर्भरताओं को ढूंढना और बनाना है, लेकिन यह सिर्फ आपके पैकेज प्रबंधक की 'स्रोत प्राप्त करें' कार्यक्षमता का कुछ गुगली या विवेकपूर्ण उपयोग करता है।


मेरे लिए काफी काम नहीं किया। कॉन्फ़िगर स्क्रिप्ट में कुछ भी नहीं लगता है ~ / usr
postfuturist

मुझे @postfuturist की भी यही समस्या थी। मैंने अपनी सभी निर्यात कॉल के ${HOME}बजाय इसका उपयोग करके इसे ठीक करना समाप्त कर दिया ~, और फिर pkg-config खुश था और अपने उपयोगकर्ता को स्थापित लाइब्रेरी और पैकेज खोजने में सक्षम था।
phyatt

3

आम तौर पर आपको अपने होम डायरेक्टरी या अन्य सभी कार्यक्रमों और कार्यक्रमों के लिए नए स्थान को परिभाषित करने के लिए कोड को फिर से कॉन्फ़िगर और बदलने में सक्षम होना चाहिए ...

लेकिन, IMHO, सबसे आसान तरीका (यदि आपके पास बहुत जगह है) सबट्यून में चुरोट का उपयोग किया जाता है, जिसमें सभी लिनक्स डिस्ट्रो होते हैं। आप उपयोग नहीं कर सकते सामान्य उपयोगकर्ता के रूप cuorse की chroot :, लेकिन आप इन महान उपकरणों का उपयोग कर सकते हैं fakechroot और fakeroot

चेरोट फाइलसिस्टम बनाने के लिए, मैं डेबूटस्ट्रैप उपयोगिता का उपयोग करके डेबियन (या किसी डेबियन व्युत्पन्न उबंटु की तरह व्युत्पन्न) के साथ एक निर्देशिका को तैनात करना पसंद करता हूं

इसलिए प्रक्रिया आसान है (मैं तकनीकी विवरण में प्रवेश नहीं करूंगा, कमांड मैनुअल पढ़ें):

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

यदि आपको अधिक विवरणों की आवश्यकता है, तो मुझे लगता है कि यह सब करने के लिए मेरे पास एक स्क्रिप्ट थी।


2

इस समस्या का एक अन्य समाधान Gentoo उपसर्ग का उपयोग कर रहा है, MacOSX उपयोगकर्ताओं और अन्य प्लेटफ़ॉर्म (सोलारिस, AIX) के रूप में:

http://www.gentoo.org/proj/en/gentoo-alt/prefix/

यह $ PREFIX स्थान में जेंटू स्टैक (पोर्टेज के साथ) को संकलित करेगा। यह जेंटू पैकेज का उपयोग करता है, अधिकांश पैकेज इन सेटिंग्स के उपयोग का समर्थन करते हैं।

पोर्टेज सभी निर्भरताओं का ट्रैक रखेगा, आपके पास सॉफ़्टवेयर का अंतिम संस्करण होगा, इसे समुदाय द्वारा परीक्षण किया गया है ...


1

यदि prefix=/home/foo/usrकाम नहीं करता है, तो कोशिश करें:

CFLAGS=-I/home/foo/usr/include LDFLAGS=-L/home/foo/usr/lib ./configure
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.