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.
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.
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.
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.
Ma solution à ce problème
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.).
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!
Connectez-vous à votre machine distante:
ssh yourname@IP-addressORdomain
Ouvrez le fichier .bashrc_profile:
nano /home/yourname/.bashrc_profile
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
Ouvrez .bashrc:
nano /home/yourname/.bashrc
Ajoutez ces 4 lignes:
if [ -d "/whatever/gituploadpack/path" ] ; then
PATH="$PATH:/whatever/gituploadpack/path"
fi
export PATH
Quittez la machine distante:
exit
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
!
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.
Incase aucune des réponses ci-dessus ne aide pas.