os x lion: git не может найти libcrypto.so.0.9.7 - PullRequest
1 голос
/ 29 января 2012

Справочная информация:

Я только что заменил свой жесткий диск и сделал новую установку Lion. Я установил git из исходных текстов, и make test показалось нормальным. Ключи SSH загружены, и я могу ssh в удаленный ящик без проблем.

Проблема:

Я получаю следующую ошибку при попытке перенаправить ssh при с использованием синтаксиса в стиле scp :

$ 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 для origin выглядит так:

[remote "origin"]
    url = me@example.com:some_repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*

Если изменить URL-адрес на ssh://me@example.com/path/to/some/repo.git, он будет работать нормально.

Я понимаю, что могу просто изменить все свои URL-адреса на этот формат, но я предпочел бы иметь систему, которая работает правильно, без необходимости каждый раз обходить проблемы с настройкой.

Я смог толкнуть и вытащить в этот репозиторий просто отлично перед переустановкой Lion, и я все еще могу с другим синтаксисом. Я подозреваю, что я что-то символизировал, чтобы обойти это на старом жестком диске в далёкие времена снежного барса, но я чертовски долго гуглял, что это было. Я нашел один пост, в котором говорилось, что проблема в отсутствии библиотеки на стороне сервера, а сообщение об ошибке вводило в заблуждение, но этого не может быть, потому что он отлично работал на старом жестком диске и прекрасно работал с ssh. : // синтаксис

Кто-нибудь знает, как решить эту проблему?

1 Ответ

1 голос
/ 30 января 2012

Попробуйте использовать dtrace, чтобы выяснить, что это за штука.Запустите это в другом терминале и затем запустите git pull как обычно.

 $ sudo dtrace -qn 'syscall::execve:entry { printf("%s\n", copyinstr(arg0)); }'
 /usr/bin/uname
 /usr/libexec/git-core/git

... Cut ...

 /usr/libexec/git-core/git-pull
 /usr/libexec/git-core/ssh
 /usr/bin/ssh

Используйте otool -L /usr/bin/ssh, чтобы увидеть, отсутствует ли какая-либо библиотека.

Но во время написания этой статьи вы думаете, что ваша проблема может быть на стороне сервера.Если вы вместо моего однострочного dtrace запустите sudo newproc.d во время работы 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 работает с оболочки?

...