我刚刚将Postgres.app升级到最新版本(9.2.4.1),现在无法使用Foreman或Rails服务器启动我的Rails应用程序。
/Users/memoht/Sites/myapp/.gem/ruby/1.9.3/gems/pg-0.15.1/lib/pg.rb:4:in `require': dlopen(/Users/memoht/Sites/myapp/.gem/ruby/1.9.3/gems/pg-0.15.1/lib/pg_ext.bundle, 9): Library not loaded: @executable_path/../lib/libssl.1.0.0.dylib (LoadError)
Referenced from: /Applications/Postgres.app/Contents/MacOS/lib/libpq.dylib
Reason: image not found - /Users/memoht/Sites/myapp/.gem/ruby/1.9.3/gems/pg-0.15.1/lib/pg_ext.bundle
从9.2.2.0升级到9.2.4.1不是新的次要版本,因此不应涉及pg_upgrade
.bashrc具有正确的PATH PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"
卸载并重新安装PG gem。
错误地认为我需要通过自制软件安装PostGIS,但是通过Brew自动安装Postgres以及其他一些依赖项。
如果我将Postgres.app版本换回到9.2.2.0,一切都会再次运行。由于Postgres.app是一个拖放安装,为什么从9.2.2.0升级到9.2.4.1导致了这个?
答案 0 :(得分:6)
我找到了一个适合我的解决方案,并且需要最少的黑客/配置。您只需要执行一次,它将适用于每个bundle安装。将以下内容添加到.bash_profile,.bash_rc或等效内容中:
export DYLD_FALLBACK_LIBRARY_PATH=/Applications/Postgres.app/Contents/MacOS/lib:$DYLD_LIBRARY_PATH
(假设您在默认位置安装了Postgres.app)。然后重新启动终端会话,然后重试。
直接导出到DYLD_LIBRARY_PATH会导致其他依赖它的应用程序出现严重问题,但使用回退路径可以避免这些问题。
另见:
编辑:当您尝试运行psql时,似乎设置DYLD_FALLBACK_LIBRARY_PATH会导致错误。要解决此问题,您可以将以下两行添加到.bash_profile:
alias psql="(. ~/.bash_profile; unset DYLD_FALLBACK_LIBRARY_PATH; psql)";
这假设您正在使用bash并且.bash_profile位于您的主目录中。如果不是这种情况(或者如果您使用.bashrc或其他环境设置而不是.bash_profile),请将命令的~/.bash_profile
部分更改为环境设置脚本的路径。
别名命令基本上启动一个不会影响当前bash环境的子shell。因此,当它取消设置DYLD_FALLBACK_LIBRARY_PATH变量时,它只是临时的。退出psql后,将再次设置环境变量,以便rails正常运行。
答案 1 :(得分:0)
您应用中的pg gem很可能是针对旧库构建的。尝试针对新的Postgres.app重建它:
$ gem uninstall pg
[...]
$ bundle install
[...]
"installing pg" (or something..)