Rails 3-无法安装pg gem


98

当我尝试运行捆绑软件(捆绑安装)时,我一直都在

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中,如何安装/修复该问题?


2
您如何在Mac上安装postgres?
shingara 2012年


on_click安装程序?Flink?还是MacPort?
shingara 2012年

我尝试通过以下方式进行安装:sudo port install libpq-dev,但另一个问题- Error: Port libpq-dev not found To report a bug, see <http://guide.macports.org/#project.tickets>。那太可怕了,还有些问题……
user984621

1
看到这个问题:[点击这里] [1] [1]:stackoverflow.com/questions/10321189/...
banditKing

Answers:


78

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

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

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

which pg_config

您的pg-config可以位于不同的位置,具体取决于您安装postgres的方式。


请注意,Postgres网站上的二进制软件包不包含开发标头或pg_config程序。
tadman 2012年

3
来自以下位置的二进制软件包:enterprisedb.com/products-services-training/pgdownload#osx肯定确实包含了pg_config(例如,/Library/PostgreSQL/9.1/bin/pg_config对于9.1.x版)和开发标头。这就是我用来测试pg开发中的gem的工具。
Michael Granger 2012年

8
会不会which pg_configfind / -name pg_config
贾斯汀D.

对您的命令行参数进行了细微调整。用您当前的版本替换版本应该可以。这是我的命令行:sudo env ARCHFLAGS =“-arch x86_64” gem install pg---with-pg-include = / Library / PostgreSQL / 9.1 / include / --with-pg-lib = / Library / PostgreSQL / 9.1 / lib /
Rod Paddock

13
在OSX上,您也可以使用brew通过来获取标题brew install libpqxx,一切都会正常进行。
Vetsin 2013年

99

如果您在Linux上运行,则可能对我的工作感兴趣:

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

然后

gem install pg

然后

bundle install

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


1
谢谢,因为这是我的情况-无需运行bundle gem install pg
valk 2012年

21
不适合为OS X
dfrankow

1
从2013年11月开始为我工作,运行Ubuntu 13.04!
Starkers

当显然是在错误的操作系统上时,为什么会有这么多的投票?
sevenseacat 2013年

1
@sevenseacat明确指出应在其上使用的操作系统。显然,许多使用Linux操作系统的人在研究此问题时都可以找到此答案。
EE33 2013年

57

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

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

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

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

/Applications/Postgres.app/Contents/Versions/<version>/bin

3
非常感谢!我花了半个小时来处理无法正常工作的事情,最后发现它埋在这里。:D
彼得·布朗

1
不需要冲泡的绝佳解决方案。
lucian303

7
请注意,Postgre.app补丁在93版本中已更改。现在是:/Applications/Postgres93.app/Contents/MacOS/bin
Alain

2
这对我有用,尽管我的垃圾箱位于非常不同的位置-> /Library/PostgreSQL/9.3/bin
Jeremiah

5
现在是- /Applications/Postgres.app/Contents/Versions/9.3/bin从9.3.5开始,如果您使用的是Postgres.app
Ashley


12

搜索libpq:

brew search libpq

应该输出 libpqxx

然后尝试安装它:

brew install libpqxx


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

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


适用于OSX 10.9.5,默认ruby版本2.0,rbenv本地版本1.9.3。
jlucasps 2015年

在OSX 10.11上工作感谢
Yarin

在OSX 10.11.4上工作。谢谢!!
Martyn Chamberlin

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)

3

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

/Library/PostgreSQL/9.3

通过添加以下内容来更新〜/ .bash_profile:

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

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


但对于我来说,工作需要检查版本,然后导出PATH = / Applications / Postgres.app / Contents / Versions / 9.4 / bin:$ PATH
Prateep Kul 2015年

1

您可以设置一个build config选项,bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config并且gem install pg不带任何选项使用(pg_config的路径可能与您不同,该路径用于Postgresapp 9.3.5.0)


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,成功了!!!



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

而已。问候。


0

您可以先通过转到lib文件来检查终端中是否有postrgresql文件。进入cd〜/ opt / local / lib /,然后输入ls和回车按钮。这将显示lib目录中所有文件的列表。

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

现在,将cd返回到您要捆绑安装的文件夹中

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

现在运行捆绑安装



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.