我正在尝试在Synology DS212J NAS服务器上设置一个git源。 当我尝试使用此命令推送到服务器时:
git remote add nas ssh://username@nasip/volume1/path/to/repo/repo.git
git push nas master
我首先提示输入密码。 然后我收到以下错误:
sh: git-receive-pack: not found
fatal: The remote end hung up unexpectedly
有谁知道这意味着什么或我如何解决它?
编辑: 这就是我所关注的,但是当我尝试推送到遥控器时,我收到错误。 http://rubypane.blogspot.com/2012/03/creating-new-git-repository-on-synology.html
答案 0 :(得分:4)
正如che和其他人解释的那样,这是synology NAS上路径设置的问题。通常,在通过ssh登录时会解析.profile和/ etc / profile,但在这种情况下不是这样。虽然可以根据wonko在http://www.wonko.de/2010/04/set-up-git-on-synology-nas.html(步骤6)的说明进行调整,但我不希望允许用户更改其环境。我建议的替代方案是简单地创建符号链接。执行以下操作:
cd /opt/bin
for gitfile in git* ; do ln -s /opt/bin/$gitfile /bin/$gitfile ; done
请记住在发出这些命令之前以root用户身份登录。
答案 1 :(得分:3)
这看起来你的遥控盒上没有安装git。 Git使用它自己的ssh协议,所以你需要有二进制文件来理解另一方面的git对象。
您的客户端尝试运行的程序是git-receive-pack
,因此请尝试从包装盒上的shell中运行。如果有效,你会看到像
che@nok ~ $ git receive-pack
usage: git receive-pack <git-dir>
如果没有:
-bash-4.0# git-receive-pack
-bash: git-receive-pack: command not found
如果你安装了git,你应该尝试git receive-pack
在那里工作。如果是这样的话,你可能只需要在路径中的某个位置将git符号链接到git-receive-pack。
运行
cd `which git`
ln -si git git-receive-pack
在root下可能会为你做。