我刚刚将 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
看过了Postgres.app 文档 http://postgresapp.com/documentation
从 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 会导致这种情况?
我找到了一个适合我的解决方案,并且需要最少的黑客/配置。您只需执行一次此操作,它将适用于每个捆绑包安装。将以下内容添加到您的 .bash_profile、.bash_rc 或等效文件中:
export DYLD_FALLBACK_LIBRARY_PATH=/Applications/Postgres.app/Contents/MacOS/lib:$DYLD_LIBRARY_PATH
(假设您在默认位置安装了 Postgres.app)。然后重新启动终端会话并重试。
直接导出到 DYLD_LIBRARY_PATH 可能会导致依赖它的其他应用程序出现严重问题,但使用后备路径可以避免这些问题。
也可以看看:
- 使用 postgres.app 在 rvm 下需要 pg 时出错 https://stackoverflow.com/questions/16453476/error-requiring-pg-under-rvm-with-postgres-app/16740568#16740568
- https://github.com/PostgresApp/PostgresApp/issues/109#issuecomment-18387546 https://github.com/PostgresApp/PostgresApp/issues/109#issuecomment-18387546
EDIT:当您尝试运行 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
命令的一部分指向环境设置脚本的路径。
别名命令基本上启动一个子 shell,它不会影响您当前的 bash 环境。因此,当它取消设置 DYLD_FALLBACK_LIBRARY_PATH 变量时,它只是临时的。退出 psql 后,将再次设置环境变量,以便 Rails 正常运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)