2012-06-20 21 views
17

मैं आठ-पांच बार के बारे में इस सवाल का जवाब पढ़ा है, लेकिन वहाँ कुछ मैं सही ढंग से समझ नहीं हूँ:Git से अपलोड पैक: आदेश नहीं मिला

git-upload-pack: command not found, how to fix this correctly

जब मैं एक रिपोजिटरी क्लोन करने की कोशिश मेरे सर्वर पर, मैं निम्नलिखित मिल:

bash: git-upload-pack: command not found 

लेकिन जब मैं क्लोन देने -u /usr/local/bin/git-upload-pack विकल्प द्वारा क्लोन, सब कुछ ठीक काम करता है।

मुझे लगता है कि यह समझ में आता है, क्योंकि यह मेरे सर्वर पर गिट-अपलोड-पैक की स्थिति है।

शीर्ष उत्तर से पता चलता है कि सर्वर पर मेरी .bashrc फ़ाइल को प्रतिबिंबित करने के लिए अद्यतन करने की आवश्यकता है, क्योंकि ssh [email protected] echo \$PATH/usr/local/bin वापस नहीं आता है। (यह /usr/bin:/bin:/usr/sbin:/sbin देता है)।

लेकिन जब मैं अपने .bashrc फाइल को देखो, यह शामिल हैं:

export PATH=/usr/local/bin:$PATH 

तो अब मैं उलझन में हूँ।

हर बार -u /usr/local/bin/git-upload-pack विकल्प का उपयोग करने से बचने के लिए मुझे क्या करने की ज़रूरत है? ssh [email protected] echo \$PATH क्यों /usr/local/bin वापस नहीं करता है? क्या यह लॉगिन और गैर-लॉगिन गोले के साथ कुछ करना है?

कृपया मदद करें! अग्रिम में धन्यवाद।

+0

देखें ['बैश' मैनुअल का यह हिस्सा] (http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files) – kostix

उत्तर

23

यह इस मुद्दे से जुड़ा है:

https://serverfault.com/questions/130834/svnssh-getting-bash-to-load-my-path-over-ssh

Ssh डिफ़ॉल्ट रूप से अपने परिवेश लोड हो रहा है नहीं है जब इंटरैक्टिव मोड के लिए जा रहा बिना एक आदेश भेज दिया।

में

/आदि/ssh/sshd_config जोड़ें::

अच्छा समाधान .ssh/पर्यावरण फ़ाइल के साथ एक है

PermitUserEnvironment yes 

तो बस .ssh/निर्देशिका बनाने के लिए envronment डंप।ssh/पर्यावरण:

cd ~/ 
mkdir .ssh 
env > .ssh/environment 

पुनः प्रारंभ SSH

/etc/init.d/sshd restart 

अब जब आप अपने स्थानीय मशीन से ऐसा करते हैं:

ssh [email protected] "which git-upload-pack" 

आप

/usr/local/bin/git-upload-pack 

मिल s'd और गिट क्लोन काम किया है।

+1

मैं एसएसएच का उपयोग कर अपने मैक पर एक गिट रेपो तक पहुंचने का प्रयास कर रहा था। मुझे/etc/ssh/sshd_config को संपादित करना था और "PermitUserEnvironment yes" जोड़ना था और फिर सिस्टम वरीयताओं के माध्यम से sshd को पुनरारंभ करना-> साझा करना-> लॉगिन निकालें। मुझे .ssh/पर्यावरण फ़ाइल बनाने की आवश्यकता नहीं थी – user674669

+0

पुनरारंभ कमांड में टाइपो की तरह दिखता है। यह नहीं होना चाहिए: /etc/init.d/ssh पुनरारंभ करें? – javydreamercsw

11

हां, यह लॉगिन और गैर-लॉगिन गोले के साथ करना है। .bashrc फ़ाइल केवल गैर-लॉगिन शैल में लोड हो जाती है। आप लॉग इन शैल के लिए .bash_profile का उपयोग कर सकते हैं। .bash_profile फ़ाइल में बस अपने PATH पर एक ही संशोधन जोड़ें और आपको अच्छा होना चाहिए।

export PATH=/usr/local/bin:$PATH 

आप पा सकते हैं this is an interesting article on the difference between .bashrc and .bash_profile, and login and non-login shells.

+0

धन्यवाद! सही समझ में आता है - लेकिन मेरे लिए काम नहीं लग रहा है। मेरे '.bash_profile' और' .bashrc 'दोनों में कोड' निर्यात PATH =/usr/local/bin: $ पथ 'होता है, लेकिन यह चाल नहीं कर रहा है। 'ssh you @ remotemachine echo \ $ पथ अभी भी'/usr/bin:/bin:/usr/sbin:/sbin' देता है। संभावित कारण? (अनुमान।) 1. मैं मीडिया टेम्पल सर्वर पर हूं और एक .bash_mt_profile फ़ाइल है। (लेकिन मैंने अच्छा माप के लिए 'निर्यात PATH =/usr/local/bin: $ PATH' जोड़ा और यह काम नहीं लग रहा था।) 2. मैं रूट के रूप में लॉग इन हूं। 3. मैं बैश का उपयोग नहीं कर रहा हूं (लेकिन जब मैं लॉग इन करता हूं, तो यह कहता है कि मैं सिस्टम संदेशों को हटाने के लिए अपना '.bash_profile' संपादित कर सकता हूं। – Chris

+0

@ क्रिस: ब्याज से, क्या आपका' .bash_profile'/'bashrc है 'फ़ाइल में 644 पर सेट परमिट है, जो कि सही उपयोगकर्ता के स्वामित्व में है, और उसके पास कोई निष्पादन योग्य बिट सेट नहीं है? फ़ाइल को सोर्स किया गया है, निष्पादित नहीं किया गया है, लेकिन उस स्रोत का स्वामित्व होना चाहिए जो स्रोत का प्रयास कर रहा है और 644 (या अधिक) परमिट यदि यह जांचने के बाद यह आपके लिए विफल रहता है, तो आप हमेशा '/ etc/profile' या'/etc/profile.d/* '(आपके distro के आधार पर) में परिवर्तन परिवर्तन जोड़ने का प्रयास कर सकते हैं। –

+0

फिर से धन्यवाद। हाँ, परमिट 644 हैं। मैंने उन्हें फिर से रीसेट कर दिया। यह काम नहीं किया। कोड 'निर्यात PATH =/usr/local/कोड के साथ git.sh को '/ etc/profile.d /' नामक एक फ़ाइल जोड़ा गया। बिन: $ पथ '(क्या यह सही बात है डी ओ?) और यह भी काम नहीं किया है। मैं केवल यह मान सकता हूं कि मैंने कुछ अंधेरे से स्पष्ट नहीं किया है। – Chris

0

मैं निम्नलिखित त्रुटियाँ हो रही थी: git-credential-osxkeychain died of signal 11 जब मैं Git खींच कर रहा था, मैं fatal: https://github.com/.../../info/refs?service=git-upload-pack not found: did you run git update-server-info on the server?

मैं अनुमान लगा रहा हूँ यह की-चेन में मेरे पिछले अमान्य GitHub पहचान के साथ करना था मिलेगा।

  • खोला कीचेन पहुंच कमान अंतरिक्ष
  • कीचेन पहुंच उपकरण में GitHub के लिए खोज का उपयोग करके टूल
  • (मैं अब यह आवश्यक के बाद से) सभी GitHub से संबंधित हटाई गई प्रविष्टियां
  • सेटअप Git पासवर्ड पीछा कैशिंग अनुभाग फिर setup git
  • यह

बैठाना काम ऊपर जवाब में से किसी भी मदद नहीं करता है ।

1

इस समस्या को अपने रिमोट मशीन पर Git से अपलोड पैक के लिए

  1. चेक पथ के लिए मेरे समाधान:

    ssh [email protected] 'which git-upload-pack' 
    

यह एक रास्ता देता है - इसे कॉपी (git-upload-pack और पीछे स्लैश के बिना। उदाहरण: /usr/bin, /home/yourname/bin, /whatever/gituploadpack/path, आदि)।

  1. लॉगिन खोल के दौरान रिमोट मशीन पर अपने पथ की जाँच करें:

    ssh [email protected] 'echo $PATH' 
    

कोई इस तरह के एक पथ (/whatever/gituploadpack/path), है न? अच्छा!

  1. अपने दूरस्थ मशीन के लिए लॉगिन:

    ssh [email protected] 
    
  2. खुला।bashrc_profile:

    nano /home/yourname/.bashrc_profile 
    
  3. इन पंक्तियों यदि कोई खोजें:

    if [ -f ~/.bashrc ]; then 
        ~/.bashrc 
    fi 
    

... और उनके लिए बदलें:

if [ -f ~/.bashrc ]; then 
     source ~/.bashrc 
    fi 
  1. ओपन .bashrc:

    लॉगिन खोल दौरान

    exit 
    
  2. रिमोट मशीन पर अपने पथ की जाँच करें:: रिमोट मशीन

    if [ -d "/whatever/gituploadpack/path" ] ; then 
        PATH="$PATH:/whatever/gituploadpack/path" 
    fi 
    export PATH 
    
  3. बाहर निकलें:

    nano /home/yourname/.bashrc 
    
  4. इन 4 लाइनों जोड़े

    ssh [email protected] 'echo $PATH' 
    

क्या आप /whatever/gituploadpack/path देखते हैं? बधाई!

अब ध्यान दें कि आपने न केवल git-upload-pack समस्या हल की है, बल्कि git-receive-pack और आपके /whatever/gituploadpack/path पर अन्य निष्पादन योग्य भी हल किए हैं!

2

मैंने रिमोट मशीन, उबंटू बॉक्स में लॉग इन करके और sudo apt-get install git पर लॉग इन करके इस मामले को हल किया। सुनिश्चित नहीं है कि यह अधिक है या नहीं, लेकिन तुरंत मेरे लिए समस्या हल हो गई।

संबंधित मुद्दे