【问题标题】:Error installing Postgres gem on Mac在 Mac 上安装 Postgres gem 时出错
【发布时间】:2016-01-01 08:39:34
【问题描述】:

这是我在运行gem install pg 时遇到的错误:

ERROR:  Error installing pg:
    ERROR: Failed to build gem native extension.

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby -r ./siteconf20151004-5579-1t2l557.rb extconf.rb
checking for pg_config... yes
Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for pg_config_manual.h... yes
checking for PQconnectdb() in -lpq... no
checking for PQconnectdb() in -llibpq... no
checking for PQconnectdb() in -lms/libpq... no
Can't find the PostgreSQL client library (libpq)
*** extconf.rb failed ***

如果我运行brew install postgres,我会得到:

Warning: postgresql-9.4.4 already installed

同样,gem list 显示 pg (0.18.3) 和一个简单的 gem -v pg 给出:

2.4.4

运行sudo ARCHFLAGS="-arch x86_64" gem install pg 返回:

Building native extensions.  This could take a while...
Successfully installed pg-0.18.3
invalid options: -f fivefish
(invalid options are ignored)
Parsing documentation for pg-0.18.3
Done installing documentation for pg after 4 seconds
1 gem installed

但是bundle install 抛出了这个错误:

An error occurred while installing pg (0.18.3), and Bundler cannot continue.
Make sure that `gem install pg -v '0.18.3'` succeeds before bundling.

我在mkmf.log 看到了这个,我认为这可能是最大的线索:

ld: warning: ignoring file /opt/local/lib/postgresql93/libpq.dylib, file was built for x86_64 which is not the architecture being linked (i386): /opt/local/lib/postgresql93/libpq.dylib
Undefined symbols for architecture i386:
  "_PQconnectdb", referenced from:
      _t in conftest-fc6c12.o
ld: symbol(s) not found for architecture i386

这很奇怪,因为 file /opt/local/lib/postgresql93/libpq.dylib 返回 x86_64,而不是 i386:

/opt/local/lib/postgresql93/libpq.dylib: Mach-O 64-bit dynamically linked shared library x86_64

这也不起作用:

sudo env ARCHFLAGS="-arch i386 -arch x86_64" gem install pg

【问题讨论】:

标签: ruby-on-rails ruby macos postgresql gem


【解决方案1】:

看来您快到了,因为sudo ARCHFLAGS="-arch x86_64" gem install pg 有效。尝试全局设置ARCHFLAGS,这样bundle也能看到:

$ export ARCHFLAGS="-arch x86_64"
$ bundle

【讨论】:

  • 感谢您的回复。不过,恐怕它对我不起作用。
  • 这是正确的答案,在一般情况下,为我解决了问题。
【解决方案2】:

这里有几个答案:

http://stackoverflow.com/questions/19625487/impossible-to-install-pg-gem-on-my-mac-with-mavericks

建议在执行 gem 安装时指定 postgresql 配置文件。它较旧,但可能提供前进的道路。搜索“Check you have pg_config in the installed brew”,它解释了如何找到正确的文件名。

【讨论】:

    【解决方案3】:

    从昨天开始,我一直在解决这个问题。我最终卸载了 Postgres、自制软件,然后从头开始。尝试将“pg”gem 添加到我的 Ruby on Rail 项目时,它一直失败。挖掘输出我一直看到它试图链接 i386 库。所以我尝试添加标志:

    --arch-flags='x86_64'
    

    这似乎没有任何影响。

    然后我找到了一个设置在“sudo”之后的位置。这似乎起到了作用。

    成功了!!!!!!!!!

    sudo ARCHFLAGS="-arch x86_64" gem install pg -v '0.18.3' -- --with-pg-config=/usr/local/bin/pg_config --arch-flags='x86_64'

    在项目中,由于某种原因,我实际上不得不在项目目录中重复这些步骤。然后重复它们并升级到版本 0.18.4。

    之后我可以运行“捆绑”并且所有内容都正确包含。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-19
      • 2014-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多