स्थानीय निर्देशिका में संकुल स्थापित करना?


38

मैं सॉफ्टवेयर पैकेज स्थापित करना चाहता हूं, apt-get install <foo>लेकिन इसके समान :

  1. बिना sudo, और
  2. एक स्थानीय निर्देशिका में

इस अभ्यास का उद्देश्य मेरे निरंतर एकीकरण सर्वर में स्वतंत्र बिल्ड को अलग करना है।

मुझे लगता है कि स्रोत से संकलन करने में कोई आपत्ति नहीं है, अगर ऐसा होता है, लेकिन जाहिर है मैं सबसे सरल दृष्टिकोण को पसंद करूंगा। मैं कोशिश apt-get source --compile <foo>के रूप में उल्लेख यहाँ लेकिन मैं इसे autoconf तरह संकुल के लिए काम नहीं कर सकते। मुझे निम्नलिखित त्रुटि मिलती है:

dpkg-checkbuilddeps: Unmet build dependencies: help2man

मुझे स्थानीय निर्देशिका में संकलित हेल्प 2 मैन मिला है, लेकिन मैं यह नहीं जानता कि इसके बारे में कैसे सूचित किया जाए। कोई विचार?

अद्यतन : मुझे एक उत्तर मिला कि लगभग https://askubuntu.com/a/350/23678 पर काम करता है । इसके साथ समस्या chrootयह है कि इसमें सुडो की आवश्यकता होती है। इसके साथ समस्या apt-get sourceयह है कि मैं निर्भरता को हल करने का तरीका नहीं जानता। मुझे कहना होगा, बहुत आकर्षक chrootलग रहा है । वहाँ एक बराबर आदेश है कि sudo की आवश्यकता नहीं है?


मेरा सुझाव है कि इस प्रश्न का एक डुप्लिकेट है: [ askubuntu.com/questions/147654/… [1]: askubuntu.com/questions/147654/…

7
@kamil, यह नहीं है। मैं नेटवर्क एक्सेस के बिना इंस्टॉल करने की कोशिश नहीं कर रहा हूं। मैं sudoएक गैर-सिस्टम निर्देशिका में बिना और इंस्टॉल करने की कोशिश कर रहा हूं ।
गिली

4
दोस्तों, समझा बिना मेरे सवाल downvote नहीं करते कृपया क्यों । धन्यवाद।
जिली

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

@ जेनन, मैं एक स्वचालित निर्माण प्रणाली के अंदर एक सॉफ्टवेयर परियोजना को संकलित करने की कोशिश कर रहा हूं। जहाँ तक मुझे पता है, इसके किसी भी निर्भरता (संकलन के लिए) की आवश्यकता नहीं है।
गिली

जवाबों:


20

यह, सामान्य रूप से, उल्लेखनीय नहीं है, क्योंकि आप उपयुक्त निर्भरता प्रणाली के साथ गड़बड़ करेंगे।

दो समाधान हैं:

  1. स्रोत पैकेज स्थापित करें, स्रोत निर्देशिका में बदलें, अपनी पसंद की निर्देशिका में मैन्युअल रूप से पैकेजिंग सिस्टम के पैकेज को कॉन्फ़िगर करें और स्थापित करें।

    apt-get source <package>
    

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

    कौन सी स्थापना निर्देशिका के लिए कॉन्फ़िगर करना कार्यक्रमों पर निर्भर करता है, हालांकि, विशेष कार्यक्रम पर निर्भर करता है। कई प्रोग्राम ./configure --prefix localdirस्थानीयकरण के लिए स्थापना को लक्षित करने के लिए उपयोग करते हैं ; लेकिन यह हमेशा मामला नहीं है।

  2. एक चेरोट वातावरण बनाएँ जिसमें आप पैकेजों को स्थापित करेंगे:

    debootstrap precise myfancyinstall
    

    अब आपने myfancyinstall / directory में एक डमी इंस्टॉलेशन बनाया है

    chroot myfancyinstall
    

    आप जो भी चाहें स्थापित करने के लिए चेरोट पिंजरे के भीतर apt-get install का उपयोग कर सकते हैं।


यह आशाजनक लग रहा है। apt-get sourceबिना उपयोग --compileनिर्भरता के बारे में चेतावनी को दबाने के लिए लगता है (मुझे उन्हें खुद को हल करने की अनुमति)
गिल्ली

क्या पैकेज प्राप्त करने का एक तरीका है जो इस तरह से कोई स्रोत नहीं है?
16

समाधान (2) परवाह किए बिना काम करेगा। अन्यथा, आप अपने दम पर हैं: शायद पैकेज स्थापित करने का एक और तरीका है। या डिब पैकेज फ़ाइल डाउनलोड करें और इसे ar के साथ अनपैक करें ar vx mypackage.deb:। फिर पैकेज की सामग्री का विश्लेषण करें और पता करें कि इसे मैन्युअल रूप से कैसे स्थापित किया जाए।
जनवरी

14

बैश शेल का उपयोग करते हुए, और "package.deb" फ़ाइल को प्राप्त करना (मान पैक नाम "पैकेज" है) आप जो चाहते हैं उसे पूरा करने के लिए निम्न कमांड चला सकते हैं - पैकेज को स्थापित करना ताकि आपके घर की निर्देशिका को उसी तरह से व्यवहार किया जाए "/ "एक सामान्य स्थापित में इलाज किया जाएगा।

यह आज्ञा है:

apt-get download package; dpkg -i --force-not-root --root=$HOME package.deb

आपको कुछ त्रुटियों का सामना करना पड़ सकता है, जैसे $ HOME / var / lib / dpkg / lock गायब है इसलिए बस उन सभी गुम फाइलों को बनाएं जो आपको त्रुटियों से मिलेंगी और फिर इंस्टॉल बिना sudo के काम करना चाहिए।

ध्यान दें कि अगर "apt-get download" काम नहीं करता है, तो आप "apt download" या "apitutde package" डाउनलोड कर सकते हैं।

अगर न तो तरीके काम करते हैं, तो आप बस पैकेज को मैन्युअल रूप से http://packages.ubuntu.com/ से डाउनलोड कर सकते हैं

एक और तरीका यह होगा कि चेरोट कमांड को पैरामीटर $ HOME के ​​साथ चलाया जाए और उसके बाद उसी तरह से स्थापित किया जाए जैसे बिना --root = $ HOME के। वह कमांड आपको एक शेल में लाएगा जहां "/" आपका वर्तमान $ HOME है। सामान्य मोड पर लौटने के लिए "बाहर निकलें" मत भूलना

सौभाग्य।


लापता फाइलों को बनाने के बाद dpkg ने इसके बारे में शिकायत की, यह सिर्फ segfaulting शुरू हुआ।
मैट चैम्बर्स

0

यदि आप एक साझा वेब-होस्टर पर sshपहुँच के साथ हैं, लेकिन apt-getकोई रूट आदि नहीं है या इसी तरह की प्रतिबंधित प्रणाली आपके लिए काम कर सकती है। इसने मेरे लिए एक ऐसी प्रणाली पर काम किया जहां uname -aकुछ लौट आयाSMP Debian 4.9.65-3+deb9u2~bpo8+1 (2017-01-05) x86_64 GNU/Linux

# examples tried on a shared hoster with ssh access but no apt-get no root etc.
# http://mirrors.kernel.org/ubuntu/pool/main/g/gawk/gawk_4.1.3+dfsg-0.1_amd64.deb
# https://github.com/dvorka/hstr/releases/download/1.25/hstr_1.25-1_amd64.deb

debURL="http://mirrors.kernel.org/ubuntu/pool/main/g/gawk/gawk_4.1.3+dfsg-0.1_amd64.deb"
# get the filename only, remove all till last slash "/"
# see http://wiki.bash-hackers.org/syntax/pe#substring_removal
debFile=${debURL##*/}
# change to your desired directory for installation/unpacking; here: $HOME
cd $HOME
# get the .deb file (no dependencies checked or resolved here)
curl -OL $debURL 
# unpack only the data part from the .deb file
# see https://en.wikipedia.org/wiki/Deb_%28file_format%29
ar p $debFile data.tar.xz | tar xJv --strip-components=2 -f - 
rm -v $debFile # clean up
echo "Done unpacking $debFile into $(pwd)"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.