web-dev-qa-db-fra.com

git-upload-pack: commande introuvable

J'ai lu cette réponse environ huit à cinq fois, mais il y a quelque chose que je ne comprends pas correctement:

git-upload-pack: commande introuvable, comment résoudre ce problème correctement

Lorsque j'essaie de cloner un référentiel sur mon serveur, j'obtiens les informations suivantes:

bash: git-upload-pack: command not found

Mais quand je clone en donnant à clone l'option -u /usr/local/bin/git-upload-pack, tout fonctionne bien.

Je suppose que cela a du sens, car c'est la position du pack git-upload-pack sur mon serveur.

La réponse du haut suggère que mon fichier .bashrc sur le serveur doit être mis à jour pour refléter cela, car le résultat de ssh you@remotemachine echo \$PATH ne renvoie pas /usr/local/bin. (Il retourne /usr/bin:/bin:/usr/sbin:/sbin).

Mais quand je regarde mon fichier .bashrc, il contient:

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

Alors maintenant je suis confus.

Que dois-je faire pour éviter d'utiliser l'option -u /usr/local/bin/git-upload-pack à chaque fois? Pourquoi ssh you@remotemachine echo \$PATH ne renvoie-t-il pas /usr/local/bin? Est-ce que cela a quelque chose à voir avec les shells avec ou sans login

S'il vous plaît aider! Merci d'avance.

20
Chris

Ceci est lié à ce problème: 

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

Ssh ne charge pas votre environnement par défaut lors de l'envoi d'une commande sans passer en mode interactif.

la bonne solution est celle avec le fichier .ssh/environment:

dans/etc/ssh/sshd_config, ajoutez:

PermitUserEnvironment yes

Ensuite, créez simplement .ssh/directory et transférez envronment vers .ssh/enviroment:

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

Redémarrer SSH

/etc/init.d/sshd restart

Maintenant, quand vous faites cela depuis votre machine locale:

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

vous auriez eu 

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

et git clone s'd travail. 

26
madsheep

Oui, cela a à voir avec les shells de connexion et non de connexion. Le fichier .bashrc est uniquement chargé dans des shells autres que ceux qui se connectent. Vous pouvez utiliser .bash_profile pour les shells de connexion. Ajoutez simplement la même modification à votre PATH dans le fichier .bash_profile et vous devriez être bon.

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

Vous pouvez trouver ceci est un article intéressant sur la différence entre .bashrc et .bash_profile, et les shells de connexion et non de connexion.

12
Nathan Kleyn

J'ai résolu ce problème dans mon cas en me connectant à la machine distante, à une boîte Ubuntu, et en effectuant Sudo apt-get install git. Je ne sais pas si c'est excessif ou non, mais le problème a été résolu instantanément.

3
Hugh Perkins

Ma solution à ce problème

  1. Vérifiez le chemin pour le git-upload-pack sur votre machine distante:

    ssh yourname@IP-addressORdomain 'which git-upload-pack'
    

S'il donne un chemin, copiez-le (sans git-upload-pack et sans barre oblique. Exemples: /usr/bin, /home/yourname/bin, /whatever/gituploadpack/path, etc.). 

  1. Vérifiez votre PATH sur la machine distante lors de la connexion au shell:

    ssh yourname@IP-addressORdomain 'echo $PATH'
    

Il n'y a pas un tel chemin (/whatever/gituploadpack/path), n'est-ce pas? Bien!

  1. Connectez-vous à votre machine distante:

    ssh yourname@IP-addressORdomain
    
  2. Ouvrez le fichier .bashrc_profile:

    nano /home/yourname/.bashrc_profile
    
  3. Trouvez ces lignes s'il y en a:

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

... et les changer pour:

    if [ -f ~/.bashrc ]; then
        source ~/.bashrc
    fi
  1. Ouvrez .bashrc:

    nano /home/yourname/.bashrc
    
  2. Ajoutez ces 4 lignes:

    if [ -d "/whatever/gituploadpack/path" ] ; then
      PATH="$PATH:/whatever/gituploadpack/path"
    fi
    export PATH
    
  3. Quittez la machine distante:

    exit
    
  4. Vérifiez votre PATH sur la machine distante lors de la connexion au shell:

    ssh yourname@IP-addressORdomain 'echo $PATH'
    

Voyez-vous /whatever/gituploadpack/path? Félicitations!

Notez maintenant que vous avez résolu non seulement le problème git-upload-pack, mais également git-receive-pack et d'autres exécutables sur votre /whatever/gituploadpack/path!

2
drugan

J'obtenais les erreurs suivantes: git-credential-osxkeychain died of signal 11 Quand je faisais git pull, j'obtenais fatal: https://github.com/.../../info/refs?service=git-upload-pack not found: did you run git update-server-info on the server?

Je suppose que cela a à voir avec mes informations d'identification précédentes github invalides dans le trousseau.

  • Outil d'accès au trousseau ouvert à l'aide de l'espace de commande
  • recherché pour github dans l'outil d'accès au trousseau
  • supprimé toutes les entrées relatives à github (puisque je n'en ai plus besoin)
  • suivi à nouveau la section de mise en cache du mot de passe de configuration git setup git
  • ça a marché

Incase aucune des réponses ci-dessus ne aide pas.

0
ssinganamalla