Недавно я безуспешно пытался установить серию плохо написанных программ хакерским способом (не надоедать вам подробностями), и теперь мне кажется, что мои системные файлы OS X (Lion, 10.7.5) - беспорядок. Я постараюсь быть кратким.
Основные проблемы:
1) Невозможно открыть какое-либо программное обеспечение из Терминала из-за сообщений об ошибках dyld
2) Установлены две версии libiconv, одна из которых слишком старая, а другая неполная, и пытается решить ситуацию
Первый пример 1): запуск некоторого программного обеспечения (установленного давно), которое, я думаю, требует XCode и тому подобное, и результаты, основанные на Python, таковы:
...
ImportError: dlopen(/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/glib/_glib.so, 2): Library not loaded: /opt/local/lib/libiconv.2.dylib
Referenced from: /opt/local/lib/libgobject-2.0.0.dylib
Reason: Incompatible library version: libgobject-2.0.0.dylib requires version 8.0.0 or later, but libiconv.2.dylib provides version 7.0.0
Тем не менее, otool показывает, что /opt/local/lib/libiconv.2.dylib - это версия 8.1.0. Я думаю, что это версия, установленная MacPorts.
Но:
$ otool -L /usr/lib/libiconv.2.dylib
/usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
Так что я думаю, что у меня есть старая версия (7.0.0), к которой программное обеспечение, которое я пытаюсь запустить, ссылается по ошибке. Я не решаюсь переустановить программное обеспечение, потому что друг гуру, который сейчас находится на другом конце света, помог мне с этим (это не было проверено на OS X, и я думаю, что он создал двоичный файл и кто знает, что еще.) Но в любом случае, я получаю подобные сообщения почти обо всем, что я пытаюсь запустить из командной строки, поэтому я не знаю, является ли это просто случаем переустановки всего моего программного обеспечения.
Очевидно, мне нужно получить самую новую версию iconv, это должно обновить libiconv? Итак, я получил новейший iconv (1.14), скачав и настроив - возможно, он перезапишет старую версию 7.0.0 libiconv? Но нет:
$ ./configure --prefix=/usr/lib
...
dyld: Library not loaded: /opt/local/lib/libiconv.2.dylib
Referenced from: /opt/local/lib/libintl.8.dylib
Reason: Incompatible library version: libintl.8.dylib requires version 8.0.0 or later, but libiconv.2.dylib provides version 7.0.0
И я все еще на старой версии:
$ /usr/bin/iconv --version
iconv (GNU libiconv 1.11)
Если я просто попытаюсь использовать MacPorts для удаления iconv:
$ sudo port uninstall iconv
Там нет сообщения, поэтому кажется, что это сработало, но двоичный файл все еще там, и я все еще получаю те же сообщения. Но это противоречит этому:
$ sudo port upgrade iconv
Error: iconv is not installed
$ sudo port install iconv
Error: Port iconv not found
Я экспериментировал с переменными окружения DYLD_LIBRARY_PATH и DYLD_FALLBACK_LIBRARY_PATH в моем ~/.profile. В любом случае я получаю ошибки, сейчас они закомментированы.
Возможно, этой информации будет достаточно для возможного решения, но я дам здесь дополнительную информацию на всякий случай.
- Я обновил свой MacPorts совсем недавно (самообновление и обновление устарели).
- Архитектура системы x86-64
- Еще одно сообщение об ошибке при попытке открыть Sublime Edit 2 из командной строки:
dyld: символ не найден: __cg_jpeg_resync_to_restart Ссылка на: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO Ожидается в: /opt/libJlib.lib.lib /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO Trace /BPT trap: 5
$ otool -L /opt/local/lib/libJPEG.dylib
/opt/local/lib/libJPEG.dylib: /opt/local/lib/libjpeg.9.dylib (compatibility version 11.0.0, current version 11.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
$ otool -L /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO | grep "libJPEG*"
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib (compatibility version 1.0.0, current version 1.0.0)
Нет libJPEG.dylib в /usr /lib.
Спасибо за чтение этого далеко! :)