I\'ve read this answer about eight-five times, but there\'s something I\'m not understanding correctly:
git-upload-pack: command not found, how to fix this correctly
Yes, it is to do with login and non-login shells. The .bashrc
file only gets loaded in non-login shells. You can use .bash_profile
for login shells. Just add the same modification to your PATH
in the .bash_profile
file and you should be good.
export PATH=/usr/local/bin:$PATH
You may find this is an interesting article on the difference between .bashrc and .bash_profile, and login and non-login shells.
I was getting the following errors:
git-credential-osxkeychain died of signal 11
When I was doing git pull, I would get
fatal: https://github.com/.../../info/refs?service=git-upload-pack not found: did you run git update-server-info on the server?
I am guessing it had to do with my previous invalid github credentials in the keychain.
Incase any of the above answers does not help.
My solution for this problem
Check path for the git-upload-pack on your remote machine:
ssh yourname@IP-addressORdomain 'which git-upload-pack'
If it gives a path - copy it (without git-upload-pack
and trailing slash. Examples: /usr/bin
, /home/yourname/bin
, /whatever/gituploadpack/path
, etc.).
Check your PATH on the remote machine during login shell:
ssh yourname@IP-addressORdomain 'echo $PATH'
There is no such a path (/whatever/gituploadpack/path
), is not it? Good!
Login to your remote machine:
ssh yourname@IP-addressORdomain
Open .bashrc_profile:
nano /home/yourname/.bashrc_profile
Find these lines if any:
if [ -f ~/.bashrc ]; then
~/.bashrc
fi
...and change them for:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
Open .bashrc:
nano /home/yourname/.bashrc
Add these 4 lines:
if [ -d "/whatever/gituploadpack/path" ] ; then
PATH="$PATH:/whatever/gituploadpack/path"
fi
export PATH
Exit the remote machine:
exit
Check your PATH on the remote machine during login shell:
ssh yourname@IP-addressORdomain 'echo $PATH'
Do you see /whatever/gituploadpack/path
? Congrats!
Note now you've solved not only git-upload-pack
problem but also git-receive-pack
and other executables on your /whatever/gituploadpack/path
!
I solved this issue in my case by logging into the remote machine, a Ubuntu box, and doing sudo apt-get install git
. Not sure if this is overkill or not, but solved the problem for me instantly.
This is connected to this issue:
https://serverfault.com/questions/130834/svnssh-getting-bash-to-load-my-path-over-ssh
Ssh is not loading your environment by default when sending a command without going to interactive mode.
good solution is the one with .ssh/environment file:
in /etc/ssh/sshd_config add:
PermitUserEnvironment yes
Then just create .ssh/ directory and dump envronment to .ssh/enviroment:
cd ~/
mkdir .ssh
env > .ssh/environment
Restart SSH
/etc/init.d/sshd restart
Now when you do this from your local machine:
ssh you@server.com "which git-upload-pack"
you s'd get
/usr/local/bin/git-upload-pack
and git clone s'd work.