8

この Rails アプリを数週間使用していませんでした。昨日、私は最初に.dev URL(私はpowを使用しています)を開いて、次のエラーメッセージを出しました:

LoadError: dlopen([...]/vendor/bundle/gems/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.bundle, 9): Library not loaded: /usr/local/lib/libsqlite3.0.8.6.dylib Referenced from: [...]/vendor/bundle/gems/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.bundle Reason: image not found - [...]/vendor/bundle/gems/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.bundle

rbenv のインストールを確認したところ、すべて問題ないようでした。これにつながる可能性のある最近の変更を考えてみましたが、できません。何かが欠けていると確信していますが、それをデバッグしようとしても無駄でした。関連性があるかどうかはわかりませんが、最近 zsh に切り替えました。

4

1 に答える 1

24

解決

sqlite をアンインストールして再インストールします。

~/d/w/r/my-app git:master ❯❯❯ gem uninstall sqlite3                                                                      

Successfully uninstalled sqlite3-1.3.7

~/d/w/r/my-app git:master ❯❯❯ gem install sqlite3                                                                            
Fetching: sqlite3-1.3.7.gem (100%)
Building native extensions.  This could take a while...
Successfully installed sqlite3-1.3.7
1 gem installed

どうした

sqlite3 gem がインストールされると、sqliteと通信するためのネイティブ コンポーネントがビルドされ、ローカルのsqlite3ライブラリにリンクされます。これはすべて、 gemによって舞台裏で処理されます。その場合、リンク先のライブラリの場所を指定します。

最近 (1 月)、sqlite自作式が keg-only になりました。以前にsqliteに対してリンクされていたものはすべて、自作バージョンを参照していました。これは、次を使用して確認できますotool -L

~/d/w/r/my-app git:master ❯❯❯ otool -L /path/to/earlier/gem/sqlite3-1.3.6/lib/sqlite3/sqlite3_native.bundle
/path/to/earlier/gem/sqlite3-1.3.6/lib/sqlite3/sqlite3_native.bundle:
    /usr/local/lib/libsqlite3.0.8.6.dylib (compatibility version 9.0.0, current version 9.6.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)

新しいバージョンに対して実行otoolすると、Apple 提供のシステム sqlite ライブラリに対してリンクされていることがわかります。

~/d/w/r/a/new-config git:master ❯❯❯ otool -L /path/to/new/gem/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.bundle
 /path/to/new/gem/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.bundle:
    /usr/lib/libsqlite3.dylib (compatibility version 9.0.0, current version 9.6.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
于 2013-04-15T16:24:36.127 に答える