सुडो विशेषाधिकार के बिना स्थानीय रूप से प्रोग्राम कैसे स्थापित करें?


73

मान लें कि मेरे पास उपयोगकर्ता के रूप में कुछ उबंटू सर्वर तक पहुंच है और मुझे सुविधा के लिए (mc, rtorrent, mcedit) स्थापित करने के लिए कुछ सिस्टम टूल की आवश्यकता नहीं है। मैं इन छोटे कार्यक्रमों के लिए प्रशंसा को परेशान नहीं करना चाहता।

क्या किसी तरह का उपयोग किए बिना उन्हें स्थापित करने (उन्हें चलाने) बनाने का एक तरीका है sudo apt-get install?



यह भी देखें कि एक स्थानीय निष्पादन योग्य कहां रखा जाना चाहिए? प्रासंगिक चर्चा के लिए।
जॉर्ज एम।



जवाबों:


33
  1. संकलित करें और इसमें शामिल ~/binकरें (और इसे शामिल करने के .bashrcलिए सेट करने के PATHलिए अपने संपादन करें )। पुस्तकालयों को इसी तरह संकलित और स्थापित किया जा सकता है ~/lib( LD_LIBRARY_PATHइसे इंगित करने के लिए सेट ), और विकास शीर्षकों को उदा में स्थापित किया जा सकता है ~/includes

  2. उन प्रोग्रामों के विशिष्ट विवरणों के आधार पर, जिन्हें आप इंस्टॉल करना चाहते हैं और जिन पुस्तकालयों पर वे निर्भर हैं, आप dpkg-deb -xउन्हें अपने घर निर्देशिका के नीचे निकालने के लिए .deb फ़ाइलों को डाउनलोड कर सकते हैं और ' ' का उपयोग कर सकते हैं। तो आप "मज़ा" सेटिंग एक बहुत होगा PATH, LD_LIBRARY_PATHऔर अन्य variables। आप जितने अधिक मज़ेदार प्रोग्राम या ऐप इंस्टॉल कर रहे हैं, उतने मज़ेदार होंगे :)

    आप निश्चित रूप से setuidइस तरह से बायनेरिज़ को स्थापित करने में सक्षम नहीं होंगे - वे स्थापित करेंगे लेकिन (क्योंकि आपके पास उन्हें रूट करने या setuidउन पर बिट सेट करने की अनुमति नहीं है ) वे आपके द्वारा स्वामित्व वाले सामान्य बायनेरी होंगे ।

    इसी तरह, डेमॉन और सिस्टम सेवाओं कि एक निश्चित रूप में चल रहा होने की उम्मीद UIDया यूआईडी बदलने के लिए, या फ़ाइलों में होने की उम्मीद करने की क्षमता है /etcबल्कि ~/etcऔर इतने पर अगर सब पर अच्छी तरह से काम करने की संभावना नहीं हैं।

  3. अधिकांश sysadmins विचार करेंगे mcऔर mcedit"ज्यादातर हानिरहित", सहज कार्यक्रम।

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


मैंने सुना है कि सेटिंग LD_LIBRARY_PATHएक बुराई हैक है । क्या यह यहां भी लागू होता है, या मुझे गलत समझा गया है?
विल वुडेन

1
LD_LIBRARY_PATH को सेट करने के साथ सभी समस्याएँ लागू होती हैं। हाँ, यह है, या हो सकता है, एक बुराई हैक। विशेष लक्ष्यों को प्राप्त करने के लिए कभी-कभी बुराई हैक्स आवश्यक होते हैं ... "नियम" तोड़ते समय महत्वपूर्ण बात यह है कि उन्हें यह जानने के लिए पर्याप्त रूप से जानना है कि वे आपको बचाने के लिए क्या डिज़ाइन किए गए हैं, और वास्तव में आपको उन्हें इस विशेष मामले में तोड़ने की आवश्यकता क्यों है , और जोखिम क्या हैं या हो सकते हैं।
कैस

मुझे बस एक स्वतंत्र कार्यक्रम (ज़ूम) स्थापित करना था, इसलिए पहले मैंने दूसरा विकल्प ( dpkg-deb -xएक स्थानीय डायर के लिए) आज़माया । एक जादू की तरह काम किया। मुझे कोई LD_LIBRARY_PATHहैक करने की जरूरत नहीं थी । यहां तक ​​कि अगर मुझे करना है, तो मैं इसे एक ही कमांड लाइन में करूंगा ताकि वैश्विक सेटिंग्स (उदाहरण के लिए $ LD_LIBRARY_PATH=/home/usr1/zoom/opt/zoom:/home/usr1/zoom/opt/zoom/zoom ZoomLauncher) को प्रभावित न करें ।
एंटनी

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

50

आपको इन्हें स्रोत से संकलित करने की आवश्यकता है। यह सिर्फ एक मामला होना चाहिए

apt-get source PACKAGE
./configure --prefix=$HOME/myapps
make
make install

बाइनरी तो में स्थित होगा ~/myapps/bin। तो, जोड़ने export PATH="$HOME/myapps/bin:$PATH"अपने को .bashrcफ़ाइल और फिर से लोड .bashrcके साथ फ़ाइल source ~/.bashrc। बेशक, यह मानता है कि सिस्टम पर gcc स्थापित है।


6
निर्भरता के बारे में क्या? क्या उनमें से प्रत्येक के लिए समान कोड के बिना उन्हें स्वचालित रूप से संभालने का कोई तरीका है?
युरा

1
@ यूरा नहीं आपको इसे खुद करना होगा।
उलरिच डांगेल

यदि आपके पास ऐसा करने के लिए विशेषाधिकार नहीं हैं तो क्या होगा? क्या बिना sudo / root एक्सेस के सॉफ़्टवेयर संकलित करने की अनुमति होना सामान्य है?
फ्रीडो

5

आप JuNest का उपयोग कर सकते हैं , जो उपयोगकर्ता की निर्देशिका में एक छोटा लिनक्स कंटेनर बनाता है, जहां आप किसी भी पैकेज को स्थापित कर सकते हैं।


0

मैंने उसी मुद्दे का सामना किया, यहां बताया गया है कि मैंने इसे कैसे ठीक किया, यह मानते हुए कि आपके पास उसी ओएस और आर्किटेक्चर का एक लिनक्स सर्वर है।

  1. आपके द्वारा नियंत्रित प्रणाली पर सॉफ़्टवेयर स्थापित करें

  2. निष्पादन योग्य उदाहरण ढूंढें which pythonऔर इसे कॉपी करें~/

  3. पुस्तकालयों की प्रतिलिपि बनाएँ:

    ldd "$(which python)"  | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' ~/
    

निष्पादन योग्य और पुस्तकालयों को दूसरी प्रणाली में स्थानांतरित करें जहां आपके पास केवल स्थानीय विशेषाधिकार हैं, फिर निम्नलिखित को चलाएँ:

mkdir ~/lib
export PATH="$PATH:~/lib"
export LD_LIBRARY_PATH=~/lib:/lib:/usr/lib

यह ~/libपुस्तकालयों को संग्रहीत करने के लिए एक फ़ोल्डर बनाएगा , इसे अपने पथ में जोड़ेगा, और LD को वहां के पुस्तकालयों को देखने के लिए कहेगा, इसलिए बस अपने निष्पादनयोग्य और पुस्तकालयों को वहां जोड़ दें, अब आप इसे अन्यत्र चला सकते हैं।

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


-1

मुझे आप जैसी ही समस्या हो रही है। मैंने अभी तक इसकी कोशिश नहीं की है लेकिन ऐसा लगता है कि इस मुद्दे पर Linuxbrew काम कर सकता है।

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