Ich habe diese Antwort ungefähr acht bis fünf Mal gelesen, aber es gibt etwas, das ich nicht richtig verstehe:
git-upload-pack: Befehl nicht gefunden, wie man das richtig beheben kann
Wenn ich versuche, ein Repository auf meinem Server zu klonen, erhalte ich Folgendes:
bash: git-upload-pack: command not found
Aber wenn ich klonen, indem ich die Option -u /usr/local/bin/git-upload-pack
klone gebe, funktioniert alles gut.
Ich denke, das macht Sinn, da dies die Position des git-upload-Packs auf meinem Server ist.
Die oberste Antwort schlägt vor, dass meine .bashrc-Datei auf dem Server entsprechend aktualisiert werden muss, da das Ergebnis von ssh [email protected] echo \$PATH
nicht /usr/local/bin
zurückgibt. (Es gibt /usr/bin:/bin:/usr/sbin:/sbin
zurück).
Wenn ich mir meine .bashrc-Datei ansehe, enthält sie:
export PATH=/usr/local/bin:$PATH
Jetzt bin ich verwirrt.
Was muss ich tun, um zu vermeiden, dass die -u /usr/local/bin/git-upload-pack
-Option jedes Mal verwendet wird? Warum gibt ssh [email protected] echo \$PATH
nicht /usr/local/bin
zurück? Hat das etwas mit Login und nicht-Login-Shells zu tun?
Bitte helfen Danke im Voraus.
Dies hängt mit diesem Problem zusammen:
https://serverfault.com/questions/130834/svnssh-getting-bash-to-load-my-path-over-ssh
Ssh lädt Ihre Umgebung nicht standardmäßig, wenn Sie einen Befehl senden, ohne in den interaktiven Modus zu wechseln.
eine gute Lösung ist die mit .ssh/Umgebungsdatei:
in/etc/ssh/sshd_config hinzufügen:
PermitUserEnvironment yes
Dann erstellen Sie einfach das .ssh/-Verzeichnis und geben die Umgebung in .ssh/um.
cd ~/
mkdir .ssh
env > .ssh/environment
Starten Sie SSH neu
/etc/init.d/sshd restart
Nun, wenn Sie dies von Ihrem lokalen Computer aus tun:
ssh [email protected] "which git-upload-pack"
du wirst bekommen
/usr/local/bin/git-upload-pack
und git klon s'd arbeit.
Ja, es geht um Login- und Nicht-Login-Shells. Die .bashrc
-Datei wird nur in Nicht-Login-Shells geladen. Sie können .bash_profile
für Login-Shells verwenden. Fügen Sie einfach dieselbe Änderung zu Ihrer PATH
in der .bash_profile
-Datei hinzu, und Sie sollten in Ordnung sein.
export PATH=/usr/local/bin:$PATH
Möglicherweise finden Sie Dies ist ein interessanter Artikel zum Unterschied zwischen .bashrc und .bash_profile sowie Login- und Nicht-Login-Shells.
Ich habe dieses Problem in meinem Fall gelöst, indem ich mich bei der Remote-Maschine, einer Ubuntu-Box anmeldete und Sudo apt-get install git
durchführte. Ich bin mir nicht sicher, ob dies ein Overkill ist oder nicht, aber das Problem wurde sofort für mich gelöst.
Meine Lösung für dieses Problem
Überprüfen Sie den Pfad für das git-upload-pack auf Ihrem Remote-Computer:
ssh [email protected] 'which git-upload-pack'
Wenn ein Pfad angegeben wird, kopieren Sie ihn (ohne git-upload-pack
und nachstehenden Schrägstrich. Beispiele: /usr/bin
, /home/yourname/bin
, /whatever/gituploadpack/path
usw.).
Überprüfen Sie Ihren PATH auf dem Remote-Computer während der Login-Shell:
ssh [email protected] 'echo $PATH'
Es gibt keinen solchen Pfad (/whatever/gituploadpack/path
), oder? Gut!
Melden Sie sich an Ihrem Remote-Computer an:
ssh [email protected]
Öffnen Sie .bashrc_profile:
nano /home/yourname/.bashrc_profile
Finden Sie diese Zeilen, falls vorhanden:
if [ -f ~/.bashrc ]; then
~/.bashrc
fi
... und ändern sie für:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
Öffnen Sie .bashrc:
nano /home/yourname/.bashrc
Fügen Sie diese 4 Zeilen hinzu:
if [ -d "/whatever/gituploadpack/path" ] ; then
PATH="$PATH:/whatever/gituploadpack/path"
fi
export PATH
Beenden Sie den Remote-Computer:
exit
Überprüfen Sie Ihren PATH auf dem Remote-Computer während der Login-Shell:
ssh [email protected] 'echo $PATH'
Sehen Sie /whatever/gituploadpack/path
? Glückwunsch!
Beachten Sie, dass Sie nicht nur das git-upload-pack
-Problem gelöst haben, sondern auch git-receive-pack
und andere ausführbare Dateien auf Ihrem /whatever/gituploadpack/path
!
Ich habe die folgenden Fehler erhalten:
git-credential-osxkeychain died of signal 11
Wenn ich git pull gemacht habe, würde ich
fatal: https://github.com/.../../info/refs?service=git-upload-pack not found: did you run git update-server-info on the server?
bekommen.
Ich vermute, es hatte mit meinen vorherigen ungültigen Github-Anmeldeinformationen im Schlüsselbund zu tun.
Eine der oben genannten Antworten hilft nicht.