用Mavericks在Mac上安装PG gem是不可能的

时间:2013-10-28 00:36:16

标签: ruby-on-rails postgresql gem osx-mavericks

我正在尝试安装pg gem以便再次使用我的rails项目。但是我得到了这个错误:

  

构建原生扩展。这可能需要一段时间...错误:错误   安装pg:错误:无法构建gem原生扩展。

/Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/bin/ruby extconf.rb checking for pg_config... no No pg_config... trying anyway. If
     

建筑失败,请再试一次   --with-pg-config = / path / to / pg_config检查libpq-fe.h ...否无法找到' libpq-fe.h标头    * extconf.rb失败* 由于某些原因无法创建Makefile,可能缺少必要的库和/或标头。校验   mkmf.log文件以获取更多详细信息。您可能需要配置   选项。

     

提供配置选项: - with-opt-dir --without-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 = /用户/ jeanosorio / .rvm /红宝石/红宝石2.0.0-P247 /斌/红宝石     --with-pg --without-pg --with-pg-config --without-pg-config     --with-pg_config --without-pg_config --with-pg-dir     --with-pg-dir --with-pg-include     --without-pg-include = $ {pg-dir} / include --with-pg-lib     --without-PG-LIB = $ {PG-DIR} /

     

Gem文件将保持安装状态   /Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0/gems/pg-0.17.0   检查。记录结果   /Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0/gems/pg-0.17.0/ext/gem_make.out

我尝试了在stackoverflow上找到的所有内容,但我仍然遇到此错误。

如果我尝试使用brew安装postgresql,我会得到以下警告:

  

警告:已经安装了postgresql-9.2.4,它只是没有链接

如果我尝试链接

  

brew链接postgresql链接/usr/local/Cellar/postgresql/9.2.4 ...   警告:无法链接postgresql。解除连结...

     

错误:无法符号链接文件:   /usr/local/Cellar/postgresql/9.2.4/share/man/man7/WITH.7   / usr / local / share / man / man7不可写。你应该改变它   权限。

请帮助

注意:我已经为小牛队安装了命令行工具。


如果我使用自制程序卸载并再次尝试安装,则会出现此错误:

  

==>正在下载http://ftp.postgresql.org/pub/source/v9.2.4/postgresql-9.2.4.tar.bz2

     ################################################## ################ 100.0%      

==>修补补丁文件src / pl / plpython / Makefile修补文件contrib / uuid-ossp / uuid-ossp.c   ==> ./configure --prefix = / usr / local / Cellar / postgresql / 9.2.4 --datadir = / usr / local / Cellar / postgresql / 9.2.4 / share / postgresql --docdir = / usr / local / Cellar / p   ==> make install-world   ==>警告

     

构建笔记

     

如果PostgreSQL 9的版本失败并且你有8.x版本   安装后,您可能需要先删除以前的版本。请参阅:
  https://github.com/mxcl/homebrew/issues/issue/2510

     

创建/升级数据库

     

如果这是您的第一次安装,请使用以下命令创建数据库:initdb   / usr / local / var / postgres -E utf8

     

从以前的主要版本(9.2之前)迁移现有数据   PostgreSQL,见:
  http://www.postgresql.org/docs/9.2/static/upgrading.html

     

加载扩展程序

     

默认情况下,Homebrew会构建所有可用的Contrib扩展。看一个   所有可用扩展的列表,从psql命令行运行:
  SELECT * FROM pg_available_extensions;

     

要加载任何扩展名,请导航到所需的数据库   并运行:CREATE EXTENSION [扩展名];

     

例如,要在当前数据库中加载tablefunc扩展,   run:CREATE EXTENSION tablefunc;

     

有关CREATE EXTENSION命令的更多信息,请参阅:
  http://www.postgresql.org/docs/9.2/static/sql-createextension.html对于   有关扩展的更多信息,请参阅:
  http://www.postgresql.org/docs/9.2/static/contrib.html

     

其他

     

某些机器可能需要配置共享内存:
  http://www.postgresql.org/docs/9.2/static/kernel-resources.html#SYSVIPC   安装postgres gem时,建议使用ARCHFLAGS:   ARCHFLAGS =" -arch x86_64" gem install pg

     

要安装没有sudo的gem,请参阅Homebrew wiki。

     

要在登录时启动postgresql:       ln -sfv /usr/local/opt/postgresql/*.plist~/ Library / LaunchAgents然后立即加载postgresql:       launchctl load~ / Library / LaunchAgents / homebrew.mxcl.postgresql.plist或者,如果你不这样做   想要/需要launchctl,你可以运行:       pg_ctl -D / usr / local / var / postgres -l /usr/local/var/postgres/server.log start警告:无法链接   PostgreSQL的。取消链接...错误:brew link步骤未完成   成功构建了公式,但没有符号链接到/ usr / local   您可以使用`brew link postgresql'再试一次。   ==>摘要/usr/local/Cellar/postgresql/9.2.4:2831文件,38M,内置4.9分钟


解决方案:

我执行此命令以更改文件夹的权限:

  

sudo chown jeanosorio / usr / local / share / man / man7

然后

  

brew link postgresql链接/usr/local/Cellar/postgresql/9.3.1 ... 421   已创建符号链接

最后:

  

sudo ARCHFLAGS =" -arch x86_64" gem install pg

     

获取:pg-0.17.0.gem(100%)构建原生扩展。这可以   需要一段时间......已成功安装pg-0.17.0

26 个答案:

答案 0 :(得分:236)

如果您想避免使用MacPorts,可以下载Postgres App并将其放入Application目录。

然后,指定新下载的pg_config

的位置
gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config

如果您遇到缺少的标题问题,请尝试指定应用的include目录:

gem install pg -- --with-pg-include='/Applications/Postgres.app/Contents/Versions/latest/include/'

答案 1 :(得分:68)

使用brew获取postgresql

brew install postgresql

检查已安装的brew中是否有pg_config。我找到了我的

  

/usr/local/Cellar/postgresql/9.3.3/bin/pg_config

通过检查:

$ ls /usr/local/Cellar/postgresql/9.3.3/bin/pg_config
> /usr/local/Cellar/postgresql/9.3.3/bin/pg_config

完成后,使用

安装pg gem
env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/Cellar/postgresql/9.3.3/bin/pg_config

答案 2 :(得分:35)

我无法通过MacPorts安装postgres。相反,我安装了Postgress.app。并打电话给

gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config

注意:在较新的版本中(至少在9.3中),路径实际上是: /Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

答案 3 :(得分:10)

如果您想直接使用postgresql安装程序,这是另一种选择。在更新到小牛队之后,你需要跳过几个篮球。这是我做的:

首先安装xcode命令行工具:

xcode-select --install

下载并安装最新版本的PostgreSQL(9.3.1),就我而言,我只是使用了图形安装程序。这是下载页面的链接:

http://www.enterprisedb.com/products-services-training/pgdownload#osx

只需选择它为您提供的所有默认值。我的情况是它将postgres安装到以下目录,如果你把它安装到另一个目录,只记得你选择的路径,因为你很快就会需要它。

/Library/PostgreSQL/9.3

如果你现在尝试安装最新的pg gem(0.17.0),你需要在命令行上传递几个选项。这是我用过的:

ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config

如果您将postgres安装到其他位置,则需要修复pg_config文件的路径。

如果在尝试安装pg gem时抱怨缺少'libpq.5.dylib'文件,则需要创建一个指向此文件实际位置的符号链接。 Postgres在你的/ usr / local / lib /目录中寻找它,所以在那里创建一个符号链接并将其重定向到它的实际位置。在我的情况下,我必须运行:

sudo ln -s /Library/PostgreSQL/9.3/lib/libpq.5.dylib /usr/local/lib/libpq.5.dylib

完成后,再次重新安装宝石,希望它能像我一样对你有用。

答案 4 :(得分:8)

如果你有自制软件,只需输入:

  

$ brew install postgresql

答案 5 :(得分:8)

对我来说,在约塞米蒂,我并不需要指定pg_config路径。以下完成了它。

brew install postgresql
sudo env ARCHFLAGS="-arch x86_64" gem install pg

似乎架构标志是关键。

答案 6 :(得分:5)

将丢失的--with-pg-config放入Bundler的配置文件中:/Users/<your_user>/.bundle/config,让您的生活更轻松。

---
BUNDLE_BUILD__PG: --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
BUNDLE_BUILD__EXAMPLE_GEM: --other-configs
BUNDLE_BUILD__OTHER_EXAMPLE_GEM: --other-configs

然后再次运行bundle install

答案 7 :(得分:5)

这对我有用! (Postgres 93,mac os 10.9.1)1。下载@ http://postgresapp.com/而不是

gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config

答案 8 :(得分:5)

在我的情况下(我在小牛队需要PG 0.16.0),我通过MacPorts安装了postgresql

sudo port install postgresql90

然后

gem install pg -v '0.16.0' -- --with-pg-config=/opt/local/lib/postgresql90/bin/pg_config

对于最新版本,您需要扣除-v&#39; 0.16.0&#39;

gem install pg -- --with-pg-config=/opt/local/lib/postgresql90/bin/pg_config

如果您安装了Homebrew,请不要在read about their coexistense

之前安装MacPorts

答案 9 :(得分:4)

在我的情况下,如果你没有指定拱标志,OS X 10.10.3和postersApp 9.4

,它就不起作用
sudo env ARCHFLAGS="-arch x86_64" gem install pg -- \--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config

答案 10 :(得分:4)

我被捆绑安装了3天。尝试添加 env ARCHFLAGS =&#34; -arch x86_64&#34; gem install pg - - with-pg-config = / usr / local / Cellar / postgresql / 9.3 .5_1 / bin中/ pg_config

我能够看到pg gem在这个命令之后安装,但它仍然没有从bundle install安装,这很痛苦,因为我知道在Gemfile中写什么,除了gem&#39; pg&#39;

最终对我有用的是发现我的pg_config位于 /Library/PostgreSQL/9.3/bin/pg_config 中,默认情况下,Gemfile包安装在 / usr /中查找本地/ bin中/ pg_config

我刚刚运行了以下命令并且发生了魔法。 捆绑配置build.pg --with-pg-config = / Library / PostgreSQL / 9.3 / bin / pg_config

答案 11 :(得分:2)

我解决此问题的最简单方法是使用Postgres.app并设置我的环境变量,以便gem install pg正常工作(而不是要求--with-pg-config标志)。

使用Homebrew Cask

brew cask install postgres
echo 'export PG_HOME=/Applications/Postgres.app/Contents/Versions/latest' >> ~/.bash_profile
echo 'export PATH="$PATH:$PG_HOME/bin"' >> ~/.bash_profile
source ~/.bash_profile

# now it just works
gem install pg

答案 12 :(得分:2)

sudo ARCHFLAGS =&#34; -arch x86_64&#34; gem install pg - --with-pg-config = / usr / local / bin / pg_config

答案 13 :(得分:2)

在我的情况下,我卸载了通过自制程序安装的版本并切换到Postgres.app(在撰写本文时为v9.3.4.2)。

在预先设置环境架构标志并指定pg_config的路径时,它似乎才起作用。您的milage可能会有所不同,因此this answer有助于pg_config位置的变化。

以下是对我有用的最终完整命令:

env ARCHFLAGS="-arch x86_64" gem install pg -- \
--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config 

答案 14 :(得分:2)

这对我有用:

gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config

答案 15 :(得分:1)

在使用最新Postgres App的OS X Mavericks上,使用sudo权限执行以下操作

env ARCHFLAGS="-arch x86_64" gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config

答案 16 :(得分:1)

使用Xcode 5.1.1在10.9.3上对我有用的内容如下:

brew update
brew install postgresql 
gem install pg -v '0.17.1'

我需要pg 0.17.1

答案 17 :(得分:1)

我在运行有关pg gem的捆绑安装时遇到了同样的错误(使用Mac OS X Mavericks)。经过几个小时的研究,我找到了解决方案。我用自制软件安装了postgres

brew install postgres

安装完成后,我使用postgres创建了一个新的rails应用程序。我跑了

bundle install

无济于事(与问题有相同的错误)。我用了

which psql

找出我的postgres安装位置,它返回

/usr/local/bin/psql

再次运行bundle install之前,我必须通过运行以下

来更改build.pg的全局路径
bundle config build.pg --with-pg-config=/usr/local/bin/pg_config

然后我再次运行捆绑安装,瞧!我使用了brew安装它的postgres。

答案 18 :(得分:1)

对于任何失去灵魂的人来说,仍有这个问题没有解决方案并且安装了brew 红宝石 postgres 。以下是确保以下步骤:

  • 确保您的ruby版本未安装--universal标记。
    • 这是最难理解的事情,我有--universal这是问题的最终根源。
  • 确保您已使用postgresqlinitdb命令正确初始化createdb(在其他位置查找执行此操作的步骤)。
  • 确保已安装Xcode(可选)和command line tools;在终端上:
    • xcode-select --install
    • sudo xcodebuild -license(如果已安装Xcode)或打开应用程序并接受许可协议。
    • 重新启动计算机
  • which rubywhich gemwhich postgres应尊重/usr/local/bin/ruby/usr/local/bin/gem/usr/local/bin/postgres
  • 在终端上运行:

    • gem install pg -- --with-pg-config=/usr/local/bin/pg_config
    • env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/bin/pg_config
  • 确保满足所有这些步骤后,我能够解决以下错误:

    • ruby.h标题错误
    • developer tools installed first错误

答案 19 :(得分:0)

同样,在安装了Mavericks&#39;捆绑更新&#39;在pg gem上抛出一个错误,它只用于生产而不是本地。

我使用Brew管理我的软件包并且已经安装了postgresql,但我仍然得到了没有pg_config&#39;错误。

解决方法是直接刷新卸载postgresql&#39;然后&#39; brew install postgresql&#39;。之后我立即成功运行了捆绑更新&#39;

答案 20 :(得分:0)

sudo su 

然后

ARCHFLAGS="-arch x86_64" gem install pg -v '0.18'

在10.10.2上工作

答案 21 :(得分:0)

我遇到了同样的问题,这是我找到的解决方案。

如果您运行brew doctor,它会告诉您可能已经安装了没有brew的内容,这些内容已经更改了某些文件夹的权限,因此,您需要在该文件夹上将权限更改回给您。

/usr/local/share/man内,您可以执行以下操作:

sudo chown [yourusername] man7

然后:

brew link postgres

希望它有所帮助!

答案 22 :(得分:0)

如果尝试了所有内容之后仍然无法安装,请尝试打开Xcode并接受许可协议。

答案 23 :(得分:0)

对我来说,错误信息如下所示:

Installing pg 0.18.4 with native extensions

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

...

checking for pg_config... no

No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config

如错误消息所示,它正在尝试执行命令/脚本“pg_config”。因此,只需将其添加到Postgres安装位置的路径中即可。就我而言,我做了:

export PATH=/Applications/Postgres.app/Contents/Versions/9.5/bin:$PATH

然后

bundle

就是这样。

答案 24 :(得分:0)

首先找到pg_config位置

sudo find / -name "pg_config" -print

我的配置(MAC Maverick)答案是/Library/PostgreSQL/9.1/bin/pg_config

然后尝试安装类似下面的内容

gem install pg - --with-pg-config = / Library / PostgreSQL / 9.3 / bin / pg_config

如果这不起作用,那么尝试检查你安装postgresql的方式

brew / mac port / setup

然后你必须尝试相同的相关选项。

谢谢。

拉​​姆

答案 25 :(得分:-1)

Postgres 9.4:

gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/Versions/9.4/bin/pg_config