我刚刚更换了硬盘,并重新安装了Lion。我从源代码安装了git,make test
似乎很好。 SSH密钥已加载,我可以ssh到远程框中没有问题。
当 使用scp样式语法 尝试拉过ssh时出现以下错误:
$ git pull origin master
git-upload-pack: error while loading shared libraries: libcrypto.so.0.9.7: cannot open shared object file: No such file or directory
我的.git / config for origin看起来像这样:
[remote "origin"]
url = me@example.com:some_repo.git
fetch = +refs/heads/*:refs/remotes/origin/*
如果我将网址更改为ssh://me@example.com/path/to/some/repo.git
,则可以正常使用。
我知道我可以将我的所有网址更改为该格式,但我希望系统能够正常运行,而不必每次都解决设置问题。
我能够在重新安装狮子之前推送和拉动这个回购,我仍然可以使用不同的语法。我怀疑在雪豹时代的旧硬盘驱动器上我想到了一些可以解决这个问题的东西,但是我有一段时间在谷歌搜索它是什么。我发现一篇帖子暗示问题是缺少库服务器端而且错误消息是误导性的,但这不是这种情况,因为它在旧的硬盘驱动器上运行得很好,并且它与ssh一起工作得很好://语法
任何人都知道如何解决这个问题?
答案 0 :(得分:1)
尝试使用dtrace来弄清楚git的用途。在另一个终端中运行此操作,然后照常运行git pull
。
$ sudo dtrace -qn 'syscall::execve:entry { printf("%s\n", copyinstr(arg0)); }'
/usr/bin/uname
/usr/libexec/git-core/git
......切...
/usr/libexec/git-core/git-pull
/usr/libexec/git-core/ssh
/usr/bin/ssh
使用otool -L /usr/bin/ssh
查看是否缺少某个库。
但在写这篇文章时,它认为你的问题可能在服务器端。如果您在运行sudo newproc.d
时代替我的dtrace单线程git pull
运行,您会看到如下内容:
58694 64b ssh me@example.com git-upload-pack 'some_repo.git'
表示在服务器端执行错误时,错误可能来自git-upload-pack
。因此,请查看服务器上git-upload-pack
使用的动态库。
尝试运行ssh me@example.com 'ldd $(which git-upload-pack)'
并寻找可疑的东西。 git-upload-pack
是否可以在shell中运行?