2

Я был достаточно глуп, чтобы скомпилировать sqlite3 из исходного кода и установить его в /usr , переопределив библиотеку по умолчанию.
После этого Google Chrome больше не запускается, вылетая с таким выводом:

Dyld Error Message:
  Library not loaded: /usr/lib/libsqlite3.dylib
  Referenced from: /System/Library/Frameworks/Security.framework/Versions/A/Security
  Reason: no suitable image found.  Did find:
    /usr/lib/libsqlite3.dylib: mach-o, but wrong architecture
    /usr/local/lib/libsqlite3.dylib: mach-o, but wrong architecture
    /usr/lib/libsqlite3.dylib: mach-o, but wrong architecture

Могу ли я как-то вернуть sqlite3 к исходной версии или исправить проблему как-нибудь еще?

3 ответа3

3

Мне удалось это исправить, скомпилировав sqlite3 для i386 и x86_64 и поместив его в /usr:

./configure --prefix=/usr --disable-dependency-tracking CFLAGS="-arch i386 -arch x86_64"
1

В моей системе libsqlite3.dylib был установлен как часть пакета BaseSystem и обновлен пакетами 10.6.5 и 10.6.7.

$ grep -rl libsqlite3.dylib /var/db/receipts/
/var/db/receipts/com.apple.pkg.BaseSystem.bom
/var/db/receipts/com.apple.pkg.update.os.10.6.5.patch.bom
/var/db/receipts/com.apple.pkg.update.os.10.6.7.patch.bom

Вы можете извлечь только эти файлы из оригинальных файлов .pkg, используя что-то вроде Pacifist, pkgutil или установщика. Для меня не сразу было понятно, как извлечь один файл из файла .pkg с помощью инструментов командной строки. С пацифистом все довольно просто; документы здесь.

0

Если вы изменили что-либо в /usr, вы изменили код, предоставленный Apple, поэтому вам придется переустановить ОС. Однако, поскольку это большой случай, я сначала попытался бы восстановить mysql из вашей резервной копии :). Если нет, то получите обновленную версию OSX компании Apple. В противном случае перейдите на DVD-диск OSX, чтобы восстановить несколько файлов, просмотрев содержимое пакета, однако мой OSX не работает и не имеет правильного имени пакета.

В этом конкретном случае вы можете перекомпилировать, как говорит @gaearon, но вы должны получить правильную версию и предположить, что Apple не внесла никаких изменений.

В общем, я бы добавил новые библиотеки, используя менеджер пакетов fink, macports и т.д., Так как они размещают вещи вне системных областей Apple и справляются с любыми странностями OSX. Если вы компилируете свое собственное использование /usr /local

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .