在 Mac OS X 上为 Google Chrome 恢复 sqlite3

在 Mac OS X 上为 Google Chrome 恢复 sqlite3

我愚蠢地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到原来的版本,或者以其他方式解决问题吗?

答案1

我能够通过编译sqlite3i386并将x86_64其放入来解决这个问题/usr

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

答案2

在我的系统上,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 文件中提取这些文件和平主义者工具或者安装程序。我一开始并不清楚如何使用命令行工具从 .pkg 文件中提取单个文件。使用 Pacifist 非常简单;文档在这里

答案3

如果您更改了 /usr 中的某些内容,则表示您更改了 Apple 提供的代码,因此您必须重新安装操作系统。但是,由于这是一个很大的更改,因此我会先尝试从您的备份中恢复 mysql :)。如果不行,请从以下位置获取组合 OSX 版本更新苹果。否则,转到 OSX DVD,您可以通过查看软件包内容来恢复一些文件 - 但是我的 OSX 搞乱了,并且没有正确的软件包名称。

对于这种特殊情况,您可以按照@gaearon 所说重新编译,但您必须获取正确的版本并假设 Apple 没有做任何更改。

一般情况下,我会使用包管理器 fink、macports 等添加新库,因为它们将内容放置在 Apple 系统区域之外,并处理 OSX 的任何异常。如果您自己编译,请使用 /usr/local

相关内容