it-swarm.com.de

git-upload-pack: Befehl nicht gefunden

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.

20
Chris

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. 

26
madsheep

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.

12
Nathan Kleyn

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.

3
Hugh Perkins

Meine Lösung für dieses Problem

  1. Ü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.). 

  1. Ü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!

  1. Melden Sie sich an Ihrem Remote-Computer an:

    ssh [email protected]
    
  2. Öffnen Sie .bashrc_profile:

    nano /home/yourname/.bashrc_profile
    
  3. Finden Sie diese Zeilen, falls vorhanden:

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

... und ändern sie für:

    if [ -f ~/.bashrc ]; then
        source ~/.bashrc
    fi
  1. Öffnen Sie .bashrc:

    nano /home/yourname/.bashrc
    
  2. Fügen Sie diese 4 Zeilen hinzu:

    if [ -d "/whatever/gituploadpack/path" ] ; then
      PATH="$PATH:/whatever/gituploadpack/path"
    fi
    export PATH
    
  3. Beenden Sie den Remote-Computer:

    exit
    
  4. Ü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!

2
drugan

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.

  • Geöffnetes Schlüsselbund-Zugriffstool mit Befehlsbereich
  • suchte nach github im keychain access tool
  • alle Einträge entfernt, die sich auf github beziehen (da ich es nicht mehr brauchte)
  • folgte dem Abschnitt für das Setup-git-Passwort erneut. setup git
  • es funktionierte

Eine der oben genannten Antworten hilft nicht.

0
ssinganamalla