99

当我尝试运行捆绑(捆绑安装)时,我总是得到

Installing pg (0.13.2) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /Users/ryan/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb 
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
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
    --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=/Users/ryan/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
    --with-pg
    --without-pg
    --with-pg-dir
    --without-pg-dir
    --with-pg-include
    --without-pg-include=${pg-dir}/include
    --with-pg-lib
    --without-pg-lib=${pg-dir}/lib
    --with-pg-config
    --without-pg-config
    --with-pg_config
    --without-pg_config


Gem files will remain installed in /Users/ryan/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2 for inspection.
Results logged to /Users/ryan/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2/ext/gem_make.out
An error occured while installing pg (0.13.2), and Bundler cannot continue.
Make sure that `gem install pg -v '0.13.2'` succeeds before bundling.

我使用 Mac OS X 10.6,安装的 PostgreSQL 版本是 9.1。我发现问题出在libpq-dev中,我该如何安装/修复它?

4

16 回答 16

100

如果你在 Linux 上运行,你可能会对对我有用的东西感兴趣:

sudo apt-get install postgresql
sudo apt-get install libpq-dev

然后

gem install pg

然后

bundle install

来源:http ://wikimatze.de/installing-postgresql-gem-under-ubuntu-and-mac

于 2012-05-29T01:24:27.193 回答
78

如您的错误日志中所述,您需要将路径传递给 pg_config。尝试使用以下命令安装 gem:

gem install pg -- --with-pg-config= 'PATH_TO_YOUR_PG_CONFIG'

如果您不确定您的 pg_config 在哪里,并且假设您在 Linux 或 Mac 上,您可以运行以下命令:

which pg_config

根据您安装 postgres 的方式,您的 pg-config 可以位于不同的位置。

于 2012-03-12T15:03:05.263 回答
57

如果您使用的是Postgress.app,那么您将需要访问它的命令行工具在终端或PATH 配置文件中输入以下行:

 PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"

gem install pg现在应该可以工作了。(这对我有用。)

注意新版本路径如下所示:

/Applications/Postgres.app/Contents/Versions/<version>/bin
于 2013-10-27T18:55:33.330 回答
22

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

$ brew install postgresql

如果你没有它,下载在你的终端输入这个:

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install )"

于 2014-02-11T13:33:19.097 回答
12

搜索 libpq:

brew search libpq

应该输出libpqxx

然后尝试安装它:

brew install libpqxx
于 2015-08-21T04:35:11.860 回答
8

您只需要安装libpq-dev

sudo apt-get install libpq-dev

然后 gem 应该安装得很好。

于 2012-07-23T17:43:46.670 回答
7

按照安装后的说明进行操作:http: //postgresapp.com/documentation/configuration-ruby.html

要安装 pg gem,请确保您已正确设置 $PATH(如http://postgresapp.com/documentation/cli-tools.html中指定的那样),然后运行

sudo ARCHFLAGS="-arch x86_64" gem install pg

强烈建议阅读这两页。只是略过它们,失去了我生命中的 1 小时。阅读它们,问题解决了。

于 2014-10-01T01:19:36.277 回答
3

我遇到的问题是由于某种原因它试图用 /usr/bin/gcc-4.2 编译。我通过更改 mkmf.rb (我在堆栈跟踪中看到)中的 try_cpp 以在编译行失败时引发异常来发现这一点。

我将 gcc 软链接到 gcc-4.2 并且它起作用了:

sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2

为什么要尝试使用 gcc-4.2?不知道。

实际编译行:

/usr/bin/gcc-4.2 -E -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/x86_64-darwin11.4.0 -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/ruby/backward -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I/usr/local/Cellar/postgresql/9.1.4/include  -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration  -fno-common -pipe  conftest.c -o conftest.i (RuntimeError)
于 2012-07-30T18:45:53.893 回答
3

我遇到了同样的问题,但我的 Postgres 安装在

/Library/PostgreSQL/9.3

通过添加以下内容更新了 ~/.bash_profile:

export PATH=/Library/PostgreSQL/9.3/bin:$PATH

打开一个新终端,运行bundle update,它也对我有用。谢谢阿里。

于 2013-12-09T20:30:38.370 回答
1

您可以设置一个构建配置选项bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_configgem install pg在没有任何选项的情况下使用(pg_config 的路径可能对您不同,这是 Postgresapp 9.3.5.0 的路径)

于 2014-09-01T14:08:34.087 回答
1

我在我的 openSUSE13.1 KDE 机器上遇到了同样的问题。在我遇到这个问题之前,我只安装了软件包postgresqlpostgresql-server使用zypper命令。然后再次安装了另外 2 个软件包:

[arup@to_do_app]$ sudo zypper in postgresql-devel postgresql-contrib
root's password:
Loading repository data...
Reading installed packages...
Resolving package dependencies...
#....

然后,我又跑了bundle install,成功了!!!

于 2014-12-20T19:26:12.323 回答
0

有关有效的 OSX 解决方案,请参阅本指南http://krugerdavid.com/journal/how-to-install-xcode-homebrew-git-rvm-postgresql-ruby-1-9-3-on-snow-leopard/

它将引导您使用自制软件安装 PostgreSQL。在 OSX 10.8.3、PostgreSQL 9.2.3 和 Ruby 2.0.0-p0 上测试并为我工作

于 2013-03-26T22:36:41.603 回答
0

首先,卸载任何 Homebrew 版本。--force 选项使其卸载所有版本。

brew rm postgresql --force

为您的版本相应地更改路径。

sudo /sbin/SystemStarter stop postgresql-8.4
sudo rm -rf /Applications/PostgreSQL\ 8.4
sudo rm -rf /etc/postgres-reg.ini
sudo rm -rf /Library/StartupItems/postgresql-8.4
sudo rm -rf /Library/PostgreSQL/8.4
sudo dscl . delete /users/postgres

编辑 /etc/profile 并删除所有引用“postgres”的行。

nano /etc/profile

安装 PostgresSQL

brew update
brew install postgresql

安装 de PG GEM

gem install pg

就是这样。问候。

于 2013-12-02T20:43:13.753 回答
0

您可以首先通过转到 lib 文件来检查终端中是否有 postrgresql 文件。去 cd ~/opt/local/lib/ 然后输入 ls 和 enter 按钮。这将向您显示位于 lib 目录中的所有文件的列表。

1.如果你没有postreseql你可以通过macports下载。sudo 端口安装 postgresql93 @9.3.2_1

现在 cd 回到您尝试捆绑安装的文件夹中

  1. 让您的 pg 与您拥有或刚刚下载的 postgesql 文件一起使用 gem install pg -- --with-pg-config=/opt/local/lib/postgresql93/bin/pg_config

现在运行捆绑安装

于 2014-02-10T08:51:25.280 回答
0

在 Fedora 上:

dnf install postgresql-devel
于 2016-08-06T12:06:27.420 回答
0

在 El Capitan 上对我有用的是将 ruby​​ 从系统默认升级到 2.3.1 似乎找到了pggem 需要的正确库。

于 2016-08-15T02:14:42.947 回答