无法安装pg gem


217

我尝试使用,gem install pg但似乎不起作用。

gem install pg 给出这个错误

Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
        ERROR: Failed to build gem native extension.

C:/Ruby/bin/ruby.exe 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=C:/Ruby/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 C:/Ruby/lib/ruby/gems/1.8/gems/pg-0.10.1 for
inspection.
Results logged to C:/Ruby/lib/ruby/gems/1.8/gems/pg-0.10.1/ext/gem_make.out

3
如果您使用的是Mac,请按照以下教程操作:matthew.mceachen.us/blog/…–
Noah W. Smith,

1
@NatchiQ断开的链接?
1712年

在我的情况下,libpq未找到错误日志,因此我安装了sudo apt install postgresql postgresql-contrib libpq-dev pgadmin3 -y
Raj

Answers:



387

我遇到了这个问题,这对我有用:

安装postgresql-devel软件包,这将解决pg_config丢失的问题。

sudo apt-get install libpq-dev

139
为我工作apt-get install libpq-dev。感谢您的提示。
Ryanmt

5
pg gem Wiki主页上进行的确认:“在Ubuntu上,libpq-dev软件包提供了/ usr / bin / pg_config。”
马克·贝里

17
Mac呢?
Fivell 2011年

23
@Fivell在这里晚了答案,但如果您安装了Homebrew,brew install postgresql将为您提供所需的软件包。
Alex LaFroscia 2014年

19
@Fivell brew install postgresql在Mac上尝试
Mahattam 2015年

91

问题是gem依赖关系,因此在安装pg之前,请确保已安装“ libpq-dev”

Ubuntu系统:

须藤apt-get install libpq-dev

RHEL系统:

百胜安装postgresql-devel

苹果电脑:

brew安装postgresql


7
Mac的答案是正确的。只是因为我们尚未在计算机上安装PostgreSQL。
Hoang Le

在Centos 7上,yum install postgresql-devel解决了与安装pg.gem的pg_config有关的错误。顺便说一句,我选择使用刚刚发布的PostgreSQL 10
Arthur

62

gem install pg -- --with-pg-config=/usr/pgsql-9.1/bin/pg_config


3
这对我有所帮助(在Centos 6.2上)
TuK 2012年

14
在OS X上为我工作,但具有/Applications/Postgres.app/Contents/MacOS/bin/pg_config的路径(我有一个独立的Postgres.app)
Matt

10
gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config Postgres应用程序在
优胜美地上工作

工作了 但是在Mac上,env ARCHFLAGS="-arch x86_64"对我来说是改变游戏规则的。
Janusz Lenar'3

2
我使用gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config了OSX 10.12
Tim Krins,

37

@温菲尔德

pg gem需要与postgresql客户端绑定。此错误通常表示找不到您的Postgres库。您可能没有安装它们,或者可能需要将传递--with-pg-dir=给您的gem安装。

不仅如此,您只需要--with-pg-config=安装它。

在Mac上

如果您也有可能通过Mac上的网站捆绑包安装了postgres,它将安装在/Applications/Postgres.app/Contents/Versions/9.3/bin

因此,您可以在gem install上传递它:

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

或者正确设置了PATH。由于可能太多,因此暂时设置PATH:

export PATH=%PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin/

2
对于特定的版本:gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
Dan Sandland

latest在Postgres.app内容文件夹的内部有一个symlink文件夹,在不再提供9.3的情况下很有用。 gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config
Stephen Silber

24

我没有安装postgresql,所以我只使用

sudo apt-get install postgresql postgresql-server-dev-9.1

在Ubuntu 12.04上。

这解决了。


更新:

使用最新版本:

sudo apt-get install postgresql-9.3 postgresql-server-dev-9.3

解决了我的问题,但在Mac(带有自制软件)上,我必须运行以下命令:brew install postgresql
gMale 2014年

19

这在我的情况下有效:

sudo apt-get install libpq-dev

我用了:

  • Ubuntu 14.04.2 LTS
  • Ruby 2.2.2
  • 导轨4.2.1

12

如果您在Mac 上使用Postgres.app,则可以一劳永逸地解决此问题,如下所示:

首先gem uninstall pg,然后编辑您的~/.bash_profile~/.zshrc文件或等效文件并添加:

# PostgreSQL bin path
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin

然后bundle installgem install pg两者都应按预期工作。


谢谢,它也可以使用brew安装的postgreSQL进行工作#PostgreSQL bin路径导出PATH = $ PATH:/usr/local/Cellar/postgresql/9.5.0/bin/
Benoit

9
$ PATH=$PATH:/Library/PostgreSQL/9.1/bin sudo gem install pg

将9.1替换为系统上安装的版本。


1
这在Mac上对我有帮助,谁知道默认路径是什么以及如何更改它?
2012年

在OS X Maveric上工作
Marek Kirejczyk 2014年

5

在Mac OS(El Capitano)上。您可以简单地使用:brew install postgresql


1
是! 这就是我所需要的!安装在干净的OS X上,不要安装Postgres.app
Lane Rettig

3

pg gem需要与postgresql客户端库绑定。此错误通常表示找不到您的Postgres库。您可能没有安装它们,或者可能需要将--with-pg-dir =传递给您的gem安装。




2

我在Linux Mint(Maya)13上遇到了这个问题,并通过安装postgresql和postgresql-server来解决此问题:

apt-get install postgresql-9.1 

sudo apt-get install postgresql-server-dev-9.1

2

无论您运行什么操作系统,都请查看的日志文件"Makefile"以查看发生了什么,而不是盲目地安装东西。

在我的情况下,MAC OS的日志文件在这里:

/Users/za/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-15/2.3.0-static/pg-1.0.0/mkmf.log

日志表明由于以下原因而无法创建make文件:

Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers

在mkmf.log中,您会发现它找不到所需的库来完成构建。

checking for pg_config... no
Can't find the 'libpq-fe.h header
blah blah

运行之后"brew install postgresql",我可以看到所有必需的库都在这里:

za:myapp za$ cat /Users/za/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-15/2.3.0-static/pg-1.0.0/mkmf.log | grep yes
find_executable: checking for pg_config... -------------------- yes
find_header: checking for libpq-fe.h... -------------------- yes
find_header: checking for libpq/libpq-fs.h... -------------------- yes
find_header: checking for pg_config_manual.h... -------------------- yes
have_library: checking for PQconnectdb() in -lpq... -------------------- yes
have_func: checking for PQsetSingleRowMode()... -------------------- yes
have_func: checking for PQconninfo()... -------------------- yes
have_func: checking for PQsslAttribute()... -------------------- yes
have_func: checking for PQencryptPasswordConn()... -------------------- yes
have_const: checking for PG_DIAG_TABLE_NAME in libpq-fe.h... -------------------- yes
have_header: checking for unistd.h... -------------------- yes
have_header: checking for inttypes.h... -------------------- yes
checking for C99 variable length arrays... -------------------- yes

2

多年来,我一直在使用PG遇到这个烦人的问题。我创建了这个要点来提供帮助。

以下命令始终对我有用。

# Substitute Postgres.app/Contents/Versions/9.5 with appropriate version number
sudo ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.5/bin/pg_config

要点:https : //gist.github.com/sharnie/5588340cf023fb177c8d


1

我必须在CentOS 5.8上执行此操作。bundle install由于我不能强迫它使用特定的PG版本,因此运行一直会引起问题。

yum erase postgresql postgresql-devel由于依赖性问题,我也不能(它会删除php,http等)

解决方案?暂时使$ PATH混乱,以优先使用更新pgsql而不是默认值:

export PATH=/usr/pgsql-9.2/bin:$PATH
bundle install

基本上,使用上述命令,它将/usr/pgsql-9.2/bin/pg_config/usr/bin/pg_config


1

如果您使用的是jruby而不是ruby,则在安装pg gem时也会遇到类似的问题。相反,您需要安装适配器:

gem 'activerecord-jdbcpostgresql-adapter'


0

您只需转到此处查看您的pg版本是否支持Win32平台,然后使用此命令进行安装:

gem install pg -v 0.14.1 --platform = x86-mingw32

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.