当我更新了macOS后,Rails应用程序的postgresql出现了Library not loaded: /usr/local/opt/postgresql/lib/libpq.5.dylib的问题

从macOS的Catalina升级到Ventura后,虽然不是所有的项目,但有一些Rails应用在本地无法运行。

以下是错误的内容。

$ rails db:create       
rails aborted!
LoadError: dlopen(/Users/<ユーザー名>/.anyenv/envs/rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/pg-1.1.4/lib/pg_ext.bundle, 0x0009): Library not loaded: /usr/local/opt/postgresql/lib/libpq.5.dylib
  Referenced from: <BBF0820F-B9B8-31CF-BC14-4B622DDC2077> /Users/<ユーザー名>/.anyenv/envs/rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/pg-1.1.4/lib/pg_ext.bundle
  Reason: tried: '/usr/local/opt/postgresql/lib/libpq.5.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/postgresql/lib/libpq.5.dylib' (no such file), '/usr/local/opt/postgresql/lib/libpq.5.dylib' (no such file), '/usr/local/lib/libpq.5.dylib' (no such file), '/usr/lib/libpq.5.dylib' (no such file, not in dyld cache) - /Users/<ユーザー名>/.anyenv/envs/rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/pg-1.1.4/lib/pg_ext.bundle
/Users/<ユーザー名>/dev/stock-bancho/config/application.rb:7:in `<main>'
/Users/<ユーザー名>/dev/stock-bancho/Rakefile:4:in `<main>'
/Users/<ユーザー名>/dev/stock-bancho/bin/rails:9:in `<top (required)>'
/Users/<ユーザー名>/dev/stock-bancho/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
(See full trace by running task with --trace)

加载错误:dlopen(/Users/<用户名>/.anyenv/envs/rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/pg-1.1.4/lib/pg_ext.bundle, 0x0009):找不到库:/usr/local/opt/postgresql/lib/libpq.5.dylib

我想解读这段信息。

dlopen是指动态打开读取文件的意思。

我想要用dlopen命令打开的pg_ext.bundle似乎是gempg的一种扩展。据说这是为了从Ruby访问PostgreSQL数据库所必需的。构建pg_ext.bundle需要libpq.5.dylib文件,所以当我尝试打开/usr/local/opt/postgresql/lib/libpq.5.dylib时很生气,因为它不存在。当我检查了mac上的目录时,确实没有/usr/local/opt/postgresql/这个目录。

苹果电脑的操作系统(macOS)已经更新了,可能导致目录结构发生了变化。
看起来需要修正路径。

結論是,按照以下方法卸載了pg的gem後,再重新執行bundle install,問題就解決了。

gem uninstall pg

bundle install

这个对我很有参考价值。

 

bannerAds