कॉन्फ़िगर को सही ढंग से कैसे स्थानांतरित करें --prefix = XX प्रोग्राम को अन्य निर्देशिका में स्थापित करें?


1

दो सामान्य उपयोगकर्ता पर विचार करें: A & B, दोनों में sudo का निजीकरण नहीं है।

/home/A  A  A  rwx------
/home/B  B  B  rwx------

स्रोत कोड से git बनाना चाहते थे:

cd /home/A/third-src
wget & extract git.source
./configure --prefix=/home/A/third/git
make install  # install without root
export PATH & LD_LIBRARY_PATH
# Here A can use git correctly

अब B A के git का पुन: उपयोग करना चाहता था, इसलिए B ने रूट से पूछा

cp -r /home/A/third/git /home/B/third/git
chown -R B:B /home/B/third/git

B ने Git के लिए PATH & LD_LIBRARY_PATH को निर्यात किया और सही तरीके से git का उपयोग करने की अपेक्षा की, लेकिन यह काम नहीं करता है !! git को फ़ाइल को / home / A / third / git में पढ़ने की अनुमति नहीं है:

git init
fatal: unable to access '/home/A/third/git/etc/gitconfig': Permission denied

ऐसा लगता है - उपसर्ग ने निष्पादन योग्य फ़ाइलों में पूर्ण पथ डाल दिया।

strings bin/git  # it really lists /home/A/third/git

इसे कैसे जोड़ेंगे? क्या रूट का उपयोग किए बिना स्थानीय रूप से इंस्टॉल किए गए प्रोग्राम को दूसरों के साथ साझा करने के लिए एक विहित तरीका है?

पहले ही, आपका बहुत धन्यवाद।

जवाबों:


1

आपकी अनुमति के साथ समस्या है जिसमें उपयोगकर्ता, समूह आदि शामिल हैं। यहाँ कुछ व्यवहार के कारण हैं:

  1. Git कई तरह के रास्तों से कॉन्फिग सेटिंग्स पढ़ता है और <USER>उनमें से कुछ तक पहुंच नहीं है।
  2. Git कॉन्फिगरेशन सेटिंग के बजाय रूट कॉन्फिगरेशन को पढ़ने की कोशिश करता है, क्योंकि स्टार्टिंग स्क्रिप्ट के कारण su कमांड का उपयोग करते हुए एनवायरनमेंट वेरिएबल ऑप्शन को रीसेट नहीं करते हैं (-m:

    /bin/su -m $USER -c "cd $BASE/logs && $BASE/bin/startup.sh &> /dev/null"

आप ठीक करने के लिए कुछ काम कर सकते हैं:

  1. अनुमति तय करें:

    chown <USER>.<GROUP> -R /home/<USER>/.config

    chown <USER>.<GROUP> -R /home/<USER>/.gitconfig

  2. डिफ़ॉल्ट विकल्पों का उपयोग करके पुन: संयमित करें:

आपके उत्तर का दूसरा भाग यह है कि दो उपयोगकर्ता स्थानीय रूप से इंस्टॉल किए गए प्रोग्राम को कैसे साझा कर सकते हैं?

अभी मैं सोच सकता हूँ कि कुछ तरीके हैं:

  1. सेटफ़ेकल कमांड का उपयोग करके उपयोगकर्ता बी को उपयोगकर्ता एक्सेस कंट्रोल लिस्ट (एसीएल) सूची में जोड़ें
  2. उचित अनुमति सेटिंग आदि के साथ एक अलग समूह बनाएं और उस समूह में A और B दोनों जोड़ें।
  3. प्रोग्राम को उस सामान्य स्थान पर स्थापित करें जिसका उपयोग दोनों कर सकते हैं। गैर-मानक पथ की तरह जिसमें एक निर्देशिका शामिल हो सकती है जिसमें दोनों की पहुंच हो या एक अलग विभाजन हो, जिसमें आपकी आवश्यकताओं के अनुसार हर एक की पहुंच हो।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.