152 votos

git-upload-pack: comando no encontrado, cómo arreglar esto correctamente

He estado usando git para mantener dos copias de mi proyecto en la sincronización, uno de ellos es mi cuadro local, el otro el servidor de prueba. Este es un problema que se produce cuando yo ingrese a nuestro desarrollo remoto servidor mediante ssh;

git clone me@me.mydevbox.com:/home/chris/myproject
Initialized empty Git repository in /tmp/myproject/.git/
Password:
bash: git-upload-pack: command not found
fatal: The remote end hung up unexpectedly
fetch-pack from 'me@me.mydevbox.com:/home/chris/myproject' failed.

(el archivo-los nombres han sido cambiados para proteger a los culpables... !)

Ambos cuadros ejecutar Solaris 10 de AMD. He hecho algo de investigación, si añado --subir-pack=which git-upload-pack el comando funciona, (y demuestra que el $PATH contiene la ruta de acceso 'git-subir-pack' como por la RTFM solución), pero esto es realmente molesto, más 'git push' no funciona, porque no creo que la hay-descomprimir= opción.

Por cierto, todos los comandos de git trabajo fino de mi cuadro local, que es la misma versión de software (1.5.4.2), instalado en el mismo punto de montaje NFS en /usr/local/bin.

¿Alguien puede ayudar?

154voto

Matt Curtis Puntos 12454

Asegúrese git-upload-pack está en el camino de un no-shell de inicio de sesión. (En mi máquina está en /usr/bin).

A ver lo que tu camino se ve como en la máquina remota desde un no-shell de inicio de sesión, intente esto:

ssh you@remotemachine echo \$PATH

(Que trabaja en Bash, Zsh, y tcsh, y probablemente a otras conchas demasiado.)

Si la ruta de acceso se da vuelta, no incluye el directorio git-upload-pack, es necesario arreglarlo por ajuste en .bashrc (para Bash), .zshenv (para Zsh), .cshrc (para tcsh) o equivalente para el shell.

Usted tendrá que hacer este cambio en la máquina remota.

Si usted no está seguro de qué camino debe agregar a su remota PATH, se puede encontrar con este comando usted necesita para ejecutar este en el equipo remoto):

which git-upload-pack

En mi máquina que imprime /usr/bin/git-upload-pack. En este caso, /usr/bin es la ruta de acceso que usted necesita para asegurarse de que está en su control remoto no-shell de inicio de sesión PATH.

59voto

Brian Hawkins Puntos 1037

También puede utilizar el "-u" opción para especificar la ruta de acceso. Me parece útil en máquinas donde mi .bashrc no tener origen en sesiones no interactivas. Por ejemplo,

git clone -u /home/you/bin/git-upload-pack you@machine:code

46voto

Garrett Puntos 5477

Edificio en Brian respuesta, la carga de un pack de ruta de se pueden ajustar permanentemente ejecutando los siguientes comandos después de la clonación, lo que elimina la necesidad de --upload-pack en la posterior extracción/las solicitudes de obtención. Del mismo modo, la configuración de recibir el paquete elimina la necesidad de --receive-pack sobre el empuje de las solicitudes.

git config remote.origin.uploadpack /path/to/git-upload-pack
git config remote.origin.receivepack /path/to/git-receive-pack

Estos dos comandos son equivalentes a agregar las siguientes líneas a un repo del .git/config.

[remote "origin"]
    uploadpack = /path/to/git-upload-pack
    receivepack = /path/to/git-receive-pack

Los usuarios frecuentes de clone -u puede estar interesado en el siguiente alias. myclone deben ser auto-explicativas. myfetch/mypull/mypush puede ser utilizado en los repos cuya config no se ha modificado como se describe anteriormente reemplazando git push con git mypush, y así sucesivamente.

[alias]
    myclone = clone --upload-pack /path/to/git-upload-pack
    myfetch = fetch --upload-pack /path/to/git-upload-pack
    mypull  = pull --upload-pack /path/to/git-upload-pack
    mypush  = push --receive-pack /path/to/git-receive-pack

29voto

Andy Puntos 2015

He encontrado y había utilizado (con éxito) este Hotfix:

# Fix it with symlinks in /usr/bin
$ cd /usr/bin/
$ sudo ln -s /[path/to/git]/bin/git* .

Gracias a Paul Johnston.

10voto

tom Puntos 91

Mac OS X, y algunos otros Unix, al menos tiene la ruta de acceso de usuario compila en sshd por razones de seguridad para aquellos de nosotros que instalar git como /usr/local/git/{bin,lib,...} se puede ejecutar en problemas, como el git ejecutables no están en el precompilado camino. Para anular esto, prefiero la edición de mi /etc/sshd_config cambiando:

#PermitUserEnvironment no

a

PermitUserEnvironment yes

y, a continuación, crear el fichero ~/.ssh/medio ambiente archivos según sea necesario. Mi git usuarios tienen las siguientes en su fichero ~/.ssh/archivo de entorno:

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin

Nota de la variable de expansión no se produce cuando el ~/.ssh/archivo de entorno se lee así:

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

no funcionará.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X