尝试安装pg gem时找不到'libpq-fe.h头文件
我正在使用Ruby on Rails 3.1之前的版本。 我喜欢使用PostgreSQL,但问题是安装pg gem。 它给了我以下错误:
demonchand@system-001:~/exercise/personal/pro$ gem install pg Building native extensions. This could take a while... ERROR: Error installing pg: ERROR: Failed to build gem native extension. /home/demonchand/.rvm/rubies/ruby-1.9.2-p0/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=/home/demonchand/.rvm/rubies/ruby-1.9.2-p0/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 /home/demonchand/.rvm/gems/ruby-1.9.2-p0/gems/pg-0.11.0 for inspection. Results logged to /home/demonchand/.rvm/gems/ruby-1.9.2-p0/gems/pg-0.11.0/ext/gem_make.out
我如何解决这个问题?
它看起来像在Ubuntu中,头是libpq-dev
软件包的一部分 (至less在以下Ubuntu版本中是: 11.04 (Natty Narwhal), 10.04 (Lucid Lynx), 11.10 (Oneiric Ocelot), 12.04 (精确的穿山甲)和14.04 Trusty Tahr)):
... /usr/include/postgresql/libpq-fe.h ...
因此,请尝试安装libpq-dev
或其相当于您的操作系统:
- 对于Ubuntu系统:
sudo apt-get install libpq-dev
- 在Red Hat Linux (RHEL)系统上:
yum install postgresql-devel
- 对于Mac Homebrew :
brew install postgresql
- 对于Mac MacPorts PostgreSQL:
gem install pg -- --with-pg-config=/opt/local/lib/postgresql[version number]/bin/pg_config
- 对于OpenSuse :
zypper in postgresql-devel
在Mac OS X上,使用Homebrew安装正确的标题:
brew install postgresql
然后运行
gem install pg
应该工作。
我也试过做gem install libpq-dev
,但是我收到这个错误:
Can't find the 'libpq-fe.h header *** extconf.rb failed ***
然而,我发现使用sudo apt-get
(我试图避免使用Ruby on Rails)安装工作,即
sudo apt-get install libpq-dev # or apt-get install postgres-server-dev-{pg.version} # for postgresql 9.4 on Ubuntu 14.04
那么我就能做到
gem install pg
没有问题。
我可以用另一种方式解决这个问题。 我没有find我的系统上的图书馆。 因此,我使用PostgreSQL主站的一个应用程序来安装它。 在我的情况下(OS X),一旦安装结束,我在/Library/PostgreSQL/9.1/include/
find了该文件。 如果您已经安装了PostgreSQL,您也可以将文件放在其他地方,具体取决于您的系统。
感谢这个关于如何为gem安装添加额外path的链接,我可以使用以下命令将gem指向lib:
export CONFIGURE_ARGS="with-pg-include=/Library/PostgreSQL/9.1/include/" gem install pg
之后,它的工作,因为它现在知道在哪里可以find缺less的库。 只需replace为libpq-fe.h的正确位置的path
找不到libpq-fe.h标头
我在运行以下命令的CentOS 7.0.1406上成功了:
~ % psql --version # => psql (PostgreSQL) 9.4.1 yum install libpqxx-devel gem install pg -- --with-pg-config=/usr/pgsql-9.4/bin/pg_config
或者 ,您可以将bundlerconfiguration为始终使用这些选项安装pg
(有助于在部署环境中运行bundler),
-
bundle config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config
对于CentOS 6.4,
yum install postgresql-devel gem install pg
运作良好!
在我的情况下,它是封装postgresql-server-dev-8.4
(我在Ubuntu 11.04 (Natty Narwhal),64位)。
在Mac OS X上运行如下:
gem install pg -- --with-pg-config=***/path/to/pg_config***
***/path/to/pg_config***
是pg_config的path
只是为了logging:
使用PostgresApp的OS X中的Ruby on Rails 4应用程序(在这种情况下,需要0.17.1版本 – 这是一个旧项目):
gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
使用Postgres.app的Mac用户的正确答案是针对该包提供的libpq
进行构build。 例如,在9.4版本(截至撰写本文时),所有你需要的是:
export CONFIGURE_ARGS="with-pg-include=/Applications/Postgres.app/Contents/Versions/9.4/include" gem install pg
这将保持你的pg
gem与你安装的PostgreSQL的版本完全同步。 在这种情况下,从Homebrew安装一些东西是很浪费的。
我在Amazon Linux上遇到了同样的问题。 我可以find头文件libpq-fe.h
,但不知何故,它不工作。
它来自通过机器上的不同用户安装的不同版本的软件包。 PostgreSQL 9.2和PostgreSQL 9.3被安装。 因此,在包含这些库之前,请确保您的PostgreSQL版本。
对我来说,魔术指挥线是:
sudo yum install postgresql93 postgresql93-server postgresql93-libs postgresql93-contrib postgresql93-devel
资料来源: 一个几乎白痴的指南安装PostgreSQL 9.3,PostGIS 2.1和pumRouting与百胜
对于任何基于Debian的发行版(其中包括Ubuntu),更一般的答案如下。 首先,安装以root身份运行的apt-file
包:
apt-get install apt-file
这使您可以search包含文件的包。 然后,使用更新其数据库
apt-file update
(这可以像普通用户一样运行)。 然后,使用以下命令查找缺less的标题:
apt-file search libpq-fe.h
在我的机器上,这给了:
libpq-dev: /usr/include/postgresql/libpq-fe.h postgres-xc-server-dev: /usr/include/postgres-xc/server/gtm/libpq-fe.h
你走了!
我最近升级到Mac OS X v10.10 (优胜美地),并有困难的build设pg
gem。
报告的错误是典型的:
Using config values from /usr/local/bin/pg_config checking for libpq-fe.h... *** extconf.rb failed ***
我的解决scheme是gem uninstall pg
,然后bundle update pg
来取代最新的gem。 我没有运行brew update; brew upgrade
在Yosemite安装后进行brew update; brew upgrade
,以获得我以前安装的最新版本的软件包。
在Mac上,我使用下面的代码解决了这个问题:
gem install pg -v '0.18.4' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
在CentOS上,我使用下面的命令安装了libpq-dev package
yum install postgresql-devel
执行gem install pg
返回了同样的错误:“ No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config
。
如下所示安装gem解决了我的问题
gem install pg -- --with-pg-config=/usr/pgsql-xx/bin/pg_config
我在Mac上运行Postgres.app,我不得不这样做
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin
第一。 然后
bundle install
为我工作。
我在Mac OS上遇到了同样的问题,但是我通过在terminal中使用以下内容轻松安装了PostgreSQL gem:
ARCHFLAGS="-arch x86_64" gem install pg
(我先用brew install postgresql
安装PostgreSQL。)
我find了这个答案,这是唯一一个为我工作的人(Mac OS) – 研究了大约两天之后:
$ sudo su $ env ARCHFLAGS="-arch x86_64" gem install pg Building native extensions. This could take a while... Successfully installed pg-0.11.0 1 gem installed Installing ri documentation for pg-0.11.0... Installing RDoc documentation for pg-0.11.0...
请参阅堆栈溢出问题找不到PostgreSQL客户端库(libpq) 。
在FreeBSD(9.1)上,必要的软件包是/ usr / ports / database / postgresql-server *,安装时还会安装所需的头文件,使得“pg”的gem安装失败。 这个答案在这里帮助我find解决scheme,但包名称的差异需要一点search。
希望这可以帮助别人在FreeBSD系统上search“-dev”包时避免一些头疼的事情!
在Debian 7.0,64位(Wheezy)上,运行:
sudo apt-get install libpq-dev
成功安装libpq-dev后,运行:
bundle install
在CentOS 6.5(Squeeze)下我创build了一个文件:
$ sudo touch /etc/profile.d/psql.sh
内容:
pathmunge /usr/pgsql-9.3/bin
注意在这里,你应该用pg_config文件设置你的PostgreSQLpath。 你可以用命令find它:
$ sudo find / -iname pg_config
保存文件:
$ sudo chmod +x /etc/profile.d/ruby.sh
并尝试再次执行您的命令。
注意:任何时候你改变Bashconfiguration – 改变profile.dconfiguration – 你应该重新加载Bash。
libpq-fe.h
的位置取决于PostgreSQL的安装位置(这取决于你安装的方式)。 使用locate
( http://en.wikipedia.org/wiki/Locate_%28Unix%29 )在你的机器上findlibpq-fe.h
文件。 如果存在,它将位于PostgreSQL安装的include
目录中。
$ locate libpq-fe.h /Library/PostgreSQL/9.1/include/libpq-fe.h
包含pg_config
的bin
目录与include
目录位于同一目录中。 如错误所示,使用–with-pg-config选项安装gem:
$ gem install pg --with-pg-config="/Library/PostgreSQL/9.1/bin/pg_config"
请注意,如果您从未使用过locate
或者在安装PostgreSQL后未更新,则可能需要运行updatedb
。
我刚刚在OSX上运行brew和postgres@9.4
。
我的修复是这样的:
CONFIGURE_ARGS="with-pg-include=/usr/local/opt/postgresql@9.4/include/" bundle install
对于AltLinux
,必须安装postgresql9.5-devel
包(在我的例子中是postgresql9.5-devel
):
apt-get install postgresql9.5-devel
我解决了这个安装'postgresql-common'包。 这个软件包提供了pg_config
二进制文件,这很可能是你丢失的东西。
我有一个类似的问题,这对我来说是固定的:
gem install do_postgres -- --with-pgsql-server-dir=/Applications/Postgres.app/Contents/MacOS --with-pgsql-server-include=/Applications/Postgres.app/Contents/MacOS/include/server
资源:
在OS X 10.9 (Mavericks)上,我brew-installed postgresql
,然后我必须rvm reinstall
我的Ruby。 我现在快乐:)
我终于解决了这个问题,但没有使用前面描述的方法。
使用brew install postgresql
,我发现它已经安装,但没有链接。
-
找出PostgreSQL的安装位置,并删除它,
-
然后再重新
brew install postgresql
, -
brew link postgresql
-
gem install pg
只有卸载(sudo apt-get清除)libpq-dev并重新安装它为我工作。
在OS X和MacPorts上 ,不再需要PostgreSQL的-devel
软件包。 安装pg
gem的工作原理如下:
~ > sudo port install postgresql-devel ... Error: postgresql-devel has been replaced by postgresql91; please install that port instead ~ > gem install pg -v '0.17.1' -- --with-pg-config=/opt/local/lib/postgresql95/bin/pg_config
另见这个post 。