我正在尝试在我的本地计算机上安装 pg gem 以与 Postgres.app 一起使用。我正在经营小牛队。
Postgres.app 已安装并运行良好,但我无法让 gem 工作。我做了以下事情:
使用 Postgres.app 文档中的命令 'env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config' 更新 Homebrew 并安装Apple GCC 4.2 安装了 Xcode 开发人员工具 更新了我的 $PATH 以引用 Postgres.app bin 和 lib 目录
一切都没有成功。这是我收到的具体错误消息:
Building native extensions with: '--with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config'
This could take a while...
ERROR: Error installing pg:
ERROR: Failed to build gem native extension.
/Users/Brian/.rvm/rubies/ruby-2.0.0-p353/bin/ruby extconf.rb --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config
Using config values from /Applications/Postgres.app/Contents/MacOS/bin/pg_config
sh: /Applications/Postgres.app/Contents/MacOS/bin/pg_config: No such file or directory
sh: /Applications/Postgres.app/Contents/MacOS/bin/pg_config: No such file or directory
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/Users/Brian/.rvm/rubies/ruby-2.0.0-p353/bin/ruby
--with-pg
--without-pg
--with-pg-config
--with-pg-dir
--without-pg-dir
--with-pg-include
--without-pg-include=${pg-dir}/include
--with-pg-lib
--without-pg-lib=${pg-dir}/
我很感激你能提供的任何帮助。谢谢!
您可能为 --with-pg-config
设置了错误的路径,请检查它是否确实存在。
您可以使用以下命令找到 pg_config
的正确路径:
find /Applications -name pg_config
在最新的 Postgres.app 版本中,路径是:
gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.5/bin/pg_config
在我的情况下(运行 Postgres.app v9.3.4.2),它似乎只在添加环境架构标志时才起作用:
env ARCHFLAGS="-arch x86_64" gem install pg -- \
--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
export ARCHFLAGS="-arch x86_64"
将 ARCHFLAGS 放入您的 .bash_profile(或等效文件)中。对我来说,没有这个,PG 就行不通。
bundle
命令中。您可以使用 bundle config pg.build "...."
,在 bundler.io/v1.3/man/bundle-config.1.html 中查看更多信息
在全新的 Mac 上,这就是我必须做的:
从应用商店安装 Xcode 工具 打开 Xcode 工具并接受许可 现在运行(希望是一个面向未来的命令): version=$(ls /Applications/Postgres.app/Contents/Versions/ | tail -1) gem install pg - - --with-pg-config=/Applications/Postgres.app/Contents/Versions/$version/bin/pg_config 。
如果您遇到问题,您可以通过检查 mkmf.log 中的实际错误来解决一些问题,您可以通过运行找到该错误(如果使用 rvm):
cd ~/.rvm ; find . -name mkmf.log | grep pg
我可以用这个命令安装 pg
gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config
我通过跑步找到了我的道路
sudo find / -name "pg_config"
我成功安装了pg-0.17.1
pg_config
文件,因此您不必搜索计算机上的所有文件:$ find /Applications/Postgres.app/ -name "pg_config"
搜索 /Library/
将在您的计算机上工作。
将 postgress bin 目录添加到路径也可以解决问题。只需像这样将垃圾箱添加到拍子中。对于最近的安装,最新的符号链接可确保此路径对于未来的版本升级应该是“稳定的”。
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
gem install
工作正常:PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin gem install pg
为了解决这个问题,我在终端窗口中使用 homebrew 安装了 postgres:
brew install postgres
自制可以在这里找到
brew uninstall postgres
,您应该运行它。
这对我有用:
gem install pg -- --with-pg-config=`which pg_config`
供将来参考,因为我们很多人都在发布新版本号的新路径:
目前,我在 /Applications/Postgres.app/Contents/Versions/
中看到一个名为 latest
的符号链接。
你应该能够做到:
$ gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config
忘记版本号。这可能不适用于每个(旧)版本,但我自己正在寻找可以保存和重用的片段。
$ gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config .
gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config .
Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
。通过使用ls
查看Applications/Postgres.app/Contents
目录,应该能够找出他们的 pg_config 在哪里。看看你有/Contents/MacOS
还是/Contents/Versions
...