混帐上载包装:命令未找到(git-upload-pack: command not found)

2019-06-25 15:52发布

我读过这个答案大约八五倍,但有些事我没有正确理解:

混帐上载包装:命令未找到,如何正确地解决这一问题

当我尝试克隆我的服务器上的存储库,我得到如下:

bash: git-upload-pack: command not found

但是,当我通过给克隆的克隆-u /usr/local/bin/git-upload-pack选项,一切运作良好。

我想这是有道理的,因为这是我的服务器上的混帐上传包的位置。

顶端回答表明我对服务器.bashrc文件需要被更新,以反映这一点,因为结果ssh you@remotemachine echo \$PATH不回/usr/local/bin 。 (它返回/usr/bin:/bin:/usr/sbin:/sbin )。

但是,当我看到我的.bashrc文件,它包含:

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

所以现在我很困惑。

我需要做什么做避免使用-u /usr/local/bin/git-upload-pack选项每次? 为什么ssh you@remotemachine echo \$PATH不回/usr/local/bin ? 这是与登录和非登录shell?

请帮忙! 提前致谢。

Answer 1:

这是连接到这个问题:

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

而不去交互模式下发送命令时,SSH是默认不加载您的环境。

很好的解决方案是具有的.ssh / environment文件中:

在/ etc / SSH / sshd_config中添加:

PermitUserEnvironment yes

然后,只需创建的.ssh /目录和转储envronment到的.ssh /环境:

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

重新启动SSH

/etc/init.d/sshd restart

现在,当你从本地机器做到这一点:

ssh you@server.com  "which git-upload-pack"

你s'd得到

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

和Git克隆s'd工作。



Answer 2:

是的,这是登录和非登录shell做。 该.bashrc文件只被加载在非登录shell。 您可以使用.bash_profile的登录外壳。 就在相同的修改添加到您的PATH.bash_profile文件,你应该是不错的。

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

您可能会发现这是对.bashrc中和.bash_profile文件,并登录和非登录shell之间的区别的有趣的文章。



Answer 3:

我解决了这个问题,在我的情况下登录到远程计算机,Ubuntu的盒子,做sudo apt-get install git 。 不知道这是矫枉过正与否,但解决了这个问题,我瞬间。



Answer 4:

我对这个问题的解决方案

  1. 检查路径为您的远程机器上的混帐上传包:

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

如果给出了一个路径-将它复制(不git-upload-pack和斜线的例子: /usr/bin/home/yourname/bin/whatever/gituploadpack/path ,等等)。

  1. 请登录shell时您在远程计算机上PATH:

     ssh yourname@IP-addressORdomain 'echo $PATH' 

有没有这样的路径( /whatever/gituploadpack/path ),不是吗? 好!

  1. 登录到远程机器:

     ssh yourname@IP-addressORdomain 
  2. 打开.bashrc_profile:

     nano /home/yourname/.bashrc_profile 
  3. 发现这些线路如有:

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

...并改变它们:

    if [ -f ~/.bashrc ]; then
        source ~/.bashrc
    fi
  1. 打开.bashrc中:

     nano /home/yourname/.bashrc 
  2. 添加以下4条线路:

     if [ -d "/whatever/gituploadpack/path" ] ; then PATH="$PATH:/whatever/gituploadpack/path" fi export PATH 
  3. 退出远程机器:

     exit 
  4. 请登录shell时您在远程计算机上PATH:

     ssh yourname@IP-addressORdomain 'echo $PATH' 

你看到/whatever/gituploadpack/path ? 恭喜!

注意现在你已经解决了,不仅git-upload-pack的问题,但也git-receive-pack和你的其他可执行文件/whatever/gituploadpack/path



Answer 5:

我得到了以下错误: git-credential-osxkeychain died of signal 11时候我在做的git拉,我会得到fatal: https://github.com/.../../info/refs?service=git-upload-pack not found: did you run git update-server-info on the server?

我猜测它与在钥匙串我以前无效的github凭证做。

  • 使用命令空间打开钥匙串访问工具
  • 在钥匙串访问工具搜索github上
  • 删除了所有有关GitHub上的条目(因为我不再需要它)
  • 按照设定的git密码缓存部分再次设置混帐
  • 有效

柜面任何上述答案没有帮助。



文章来源: git-upload-pack: command not found