915

我正在使用 Ruby on Rails 3.1 预版本。我喜欢使用 PostgreSQL,但问题是安装pggem。它给了我以下错误:

$ gem install pg
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
    ERROR: Failed to build gem native extension.

        /home/u/.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/u/.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/u/.rvm/gems/ruby-1.9.2-p0/gems/pg-0.11.0 for inspection.
Results logged to /home/u/.rvm/gems/ruby-1.9.2-p0/gems/pg-0.11.0/ext/gem_make.out

我该如何解决这个问题?

4

45 回答 45

1468

看起来在 Ubuntu 中,标头是libpq-dev的一部分(至少在以下 Ubuntu 版本中: 11.04(Natty Narwhal)、10.04(Lucid Lynx)、11.10(Oneiric Ocelot)、12.04(Precise Pangolin)、14.04(Trusty Tahr)和18.04(仿生海狸)):

...
/usr/include/postgresql/libpq-fe.h
...

因此,请尝试libpq-dev为您的操作系统安装或等效的:

  • 对于 Ubuntu/Debian 系统:sudo apt-get install libpq-dev
  • Red Hat Linux (RHEL) 系统上:yum install postgresql-devel
  • 对于 Mac自制软件brew install postgresql
  • 对于 Mac MacPorts PostgreSQL:gem install pg -- --with-pg-config=/opt/local/lib/postgresql[version number]/bin/pg_config
  • 对于OpenSusezypper in postgresql-devel
  • 对于ArchLinuxpacman -S postgresql-libs
于 2011-05-18T06:41:38.540 回答
213

macOS(以前的Mac OS XOS X)上,使用Homebrew安装正确的头文件:

brew install postgresql

然后运行

gem install pg

应该管用。

postgresql或者,您可以按照“警告”部分中的说明导出brew install libpq正确的文件,而不是安装整个文件PATHPKG_CONFIG_PATH

于 2013-12-09T22:30:51.960 回答
124

我也试过做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

没有问题。

于 2012-01-16T23:34:10.213 回答
51

我可以用另一种方式解决这个问题。我没有在我的系统上找到该库。因此,我使用 PostgreSQL 主网站上的应用程序安装了它。在我的情况下(OS X),我/Library/PostgreSQL/9.1/include/在安装结束后找到了该文件。如果您已经安装了 PostgreSQL,您可能还会在其他地方保存该文件,具体取决于您的系统。

感谢这个关于如何为 gem 安装添加额外路径的链接,我可以使用这个命令将 gem 指向 lib:

export CONFIGURE_ARGS="with-pg-include=/Library/PostgreSQL/9.1/include/"
gem install pg

之后,它就可以工作了,因为它现在知道在哪里可以找到丢失的库。只需将路径替换为您的 libpq-fe.h 的正确位置

于 2012-01-12T06:52:25.313 回答
31

找不到 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

或者,您可以将捆绑器配置为始终pg使用这些选项进行安装(有助于在部署环境中运行捆绑器),

  • bundle config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config
于 2015-03-02T01:51:56.303 回答
25

对于CentOS 6.4,

yum install postgresql-devel
gem install pg

工作得很好!

于 2013-04-10T09:13:45.210 回答
18

仅作记录:

在 OS X 中使用 PostgresApp 的 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
于 2015-10-19T16:53:13.510 回答
14

在 Mac OS X 上运行如下:

gem install pg -- --with-pg-config=***/path/to/pg_config***

***/path/to/pg_config***是 pg_config 的路径

于 2014-01-08T09:36:16.547 回答
13

就我而言,它是包postgresql-server-dev-8.4(我使用的是Ubuntu 11.04(Natty Narwhal),64 位)。

于 2011-07-18T18:18:51.300 回答
11

对于没有安装 PostgreSQL 服务器的MacOS :

brew install libpq
gem install pg -- --with-pg-config="/usr/local/Cellar/libpq/9.6.6/bin/pg_config"
于 2017-12-09T10:13:12.427 回答
10

libpq使用 Postgres.app 的 Mac 用户的正确答案是根据该软件包提供的内容进行构建。例如,对于 9.4 版本(撰写本文时为当前版本),您只需要:

export CONFIGURE_ARGS="with-pg-include=/Applications/Postgres.app/Contents/Versions/9.4/include"
gem install pg

这将使您的pggem 与您安装的 PostgreSQL 版本完全同步。在这种情况下,从 Homebrew 安装一些东西是一种浪费。

于 2015-01-22T15:29:32.407 回答
10

只是失踪的问题libpq-fe.h

在 ubuntu 上,我们只需要运行: sudo apt-get install libpq-dev

上面的命令将安装一个新的包libpq-dev,之后你可以再次执行bundle install以恢复你的包安装。

于 2021-06-13T19:11:29.293 回答
9

任何基于 Debian 的发行版(包括 Ubuntu)的更一般的答案如下。首先,安装apt-file以 root 身份运行的包:

apt-get install apt-file

这允许您搜索包含文件的包。然后,使用更新其数据库

apt-file update

(这可以作为普通用户运行)。然后,使用以下命令查找丢失的标头:

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

给你!

于 2013-08-29T21:16:01.113 回答
9

我在 Amazon Linux 上遇到了同样的问题。我可以找到 header libpq-fe.h,但不知何故它不起作用。

它来自通过机器上不同用户安装的不同版本的软件包。已安装 PostgreSQL 9.2 和 PostgreSQL 9.3。因此,在包含库之前,请确保您的 PostgreSQL 版本。

对我来说,神奇的命令行是:

sudo yum install postgresql93 postgresql93-server postgresql93-libs postgresql93-contrib postgresql93-devel

资料来源:使用 Yum 安装 PostgreSQL 9.3、PostGIS 2.1 和 pgRouting 的几乎是白痴的指南

于 2015-01-30T07:47:46.983 回答
8

在 Ubuntu 上,安装“libpq-dev”来解决这个问题。

sudo apt-get install libpq-dev
于 2017-11-12T13:34:52.143 回答
7

我对 Fedora 30 的解决方案:

sudo dnf install /usr/include/libpq-fe.h
于 2019-06-19T21:26:14.383 回答
5

我在 Mac OS 上遇到了同样的问题,但我通过在终端中使用以下命令轻松安装了 PostgreSQL gem:

ARCHFLAGS="-arch x86_64" gem install pg

(我先用 . 安装了 PostgreSQL brew install postgresql。)

于 2014-08-10T19:39:12.277 回答
5

我找到了这个答案,这是唯一对我有用的答案(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...

请参阅 Stack Overflow 问题Can't find the PostgreSQL client library (libpq)

于 2014-10-20T16:21:36.630 回答
5

在 Mac 上,我使用以下代码解决了它:

gem install pg -v '0.18.4' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
于 2016-02-04T21:00:51.080 回答
4

我最近升级到Mac OS X v10.10pg (Yosemite) 并且在构建gem时遇到了困难。

报告的错误是典型的:

Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... *** extconf.rb failed ***

我的解决方案是gem uninstall pg然后bundle update pg用最新的 gem 替换。我确实brew update; brew upgrade在 Yosemite 安装后运行以获取我之前安装的最新版本的软件包。

于 2014-11-02T12:21:25.330 回答
4

我在 Mac 上运行 Postgres.app,我必须

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

第一的。然后

bundle install

为我工作。

于 2015-02-17T14:16:11.887 回答
4

在 Fedora 32 上,我设法通过libpq5-devel专门安装解决了同样的问题。

如果您从官方存储库安装 postgresql,您将有多个版本无法解决问题,因此实际上是尝试使用哪个版本的问题。

于 2021-01-18T23:35:37.820 回答
3

在 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-x.x/bin/pg_config
于 2015-01-21T09:26:14.590 回答
3

我在使用 Postgresql 9.6 时遇到了这个问题。我能够通过以下方式修复它:

brew upgrade postgresql@9.6
brew link postgresql@9.6 --force
gem install pg
于 2018-01-05T20:04:06.440 回答
3

在 Ubuntu 20.04 上,我已经有了 libpq5:amd64 版本 13.2-1.pgdg20.04+1。现在,当我尝试从 apt 存储库安装 libpq-dev 时,我收到了

The following packages have unmet dependencies:
libpq-dev : Depends: libpq5 (= 12.6-0ubuntu0.20.04.1) but 13.2-1.pgdg20.04+1 is to be installed

我抓住了 debhttp://ftp.us.debian.org/debian/pool/main/p/postgresql-13/libpq-dev_13.2-1_amd64.deb并做了以下事情:

mkdir -p /tmp/libpq-dev
dpkg-deb -R libpq-dev_13.2-1_amd64.deb /tmp/libpq-dev
sed -i 's|= 13.2-1|= 13.2-1.pgdg20.04+1|' /tmp/libpq-dev/DEBIAN/control
dpkg-deb -b /tmp/libpq-dev /tmp/libpq-dev-new.deb
sudo dpkg -i /tmp/libpq-dev-new.deb

在那之后,我一直在愉快地使用宝石。没有额外的安装或任何东西。

于 2021-03-12T14:34:46.463 回答
2

在 FreeBSD (9.1) 上,必要的包是 /usr/ports/database/postgresql-server* ,它在安装时还会安装所需的头文件,这会使“pg”的 gem 安装失败。这个答案在这里帮助我找到了解决方案,但包名称的差异需要一些搜索。

希望这可以帮助人们在 FreeBSD 系统上搜索“-dev”包时避免头疼!

于 2013-09-06T00:27:26.760 回答
2

Debian 7.0、64 位 (Wheezy) 上,只需运行:

sudo apt-get install libpq-dev

成功安装 libpq-dev 后,运行:

bundle install
于 2014-02-19T03:30:00.893 回答
2

在 CentOS 6.5 (Squeeze) 下,我创建了一个文件:

$ sudo touch /etc/profile.d/psql.sh

内容:

pathmunge /usr/pgsql-9.3/bin

请注意,您应该使用 pg_config 文件设置 PostgreSQL 路径。您可以使用以下命令找到它:

$ sudo find / -iname pg_config

保存文件:

$ sudo chmod +x /etc/profile.d/ruby.sh

并尝试再次执行您的命令。

注意:任何时候你改变Bash配置——改变 profile.d 配置——你应该重新加载 Bash。

于 2014-07-30T03:46:08.193 回答
2

的位置libpq-fe.h取决于您的 PostgreSQL 安装位置(取决于您的安装方式)。使用locate( http://en.wikipedia.org/wiki/Locate_%28Unix%29 ) 在您的机器上查找libpq-fe.h文件。如果存在,它将在include您的 PostgreSQL 安装目录中。

$ locate libpq-fe.h
/Library/PostgreSQL/9.1/include/libpq-fe.h

bin包含的目录pg_config将与该目录位于同一目录中include。正如错误提示的那样,使用 --with-pg-config 选项安装 gem:

$ gem install pg --with-pg-config="/Library/PostgreSQL/9.1/bin/pg_config"

updatedb请注意,如果您从未使用过locate或自安装 PostgreSQL 以来尚未更新,您可能需要运行。

于 2015-01-26T04:57:30.733 回答
2

我终于解决了这个问题,但没有使用前面描述的方法。

使用brew install postgresql,我发现它已经安装了,但没有链接。

  1. 找出 PostgreSQL 的安装位置,然后将其删除,

  2. 再说brew install postgresql一次,

  3. brew link postgresql

  4. gem install pg

于 2016-02-15T08:24:03.123 回答
2

我在通过 asdf 安装 postgres 时遇到了同样的错误。pg-config 解决方案对我不起作用。相反,我必须找到包含该文件的 postgres 包含文件夹并使用--with-pg-include标志运行命令

gem install pg -- --with-pg-include=/<path>/.asdf/installs/postgres/<version>/include
于 2019-02-05T19:57:10.010 回答
1

我解决了这个安装“postgresql-common”包的问题。这个包提供了pg_config你最有可能缺少的二进制文件。

于 2013-01-07T17:19:08.153 回答
1

我遇到了类似的问题,这为我解决了这个问题:

gem install do_postgres -- --with-pgsql-server-dir=/Applications/Postgres.app/Contents/MacOS --with-pgsql-server-include=/Applications/Postgres.app/Contents/MacOS/include/server

来源:

https://gist.github.com/oisin/6562181

于 2014-02-07T02:27:57.640 回答
1

OS X 10.9 (Mavericks) 上,我brew-installed postgresql,然后我不得不使用rvm reinstall我的 Ruby。我现在很开心 :)

于 2014-08-25T20:21:17.563 回答
1

对于必须安装AltLinux的包postgresqlx.x-devel(在我的情况下):postgresql9.5-devel

apt-get install postgresql9.5-devel
于 2016-03-02T07:23:49.200 回答
1

我刚刚在 OSX 上运行 brew 和postgres@9.4.

我的解决方法是:

CONFIGURE_ARGS="with-pg-include=/usr/local/opt/postgresql@9.4/include/" bundle install
于 2017-04-04T21:17:09.553 回答
0

只有卸载(sudo apt-get purge)libpq-dev 并重新安装它对我有用。

于 2014-03-23T15:30:33.383 回答
0

在 OS X 和MacPorts-devel上,不再需要 PostgreSQL的包。安装pggem 的工作方式如下:

~ > 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

另见这篇文章

于 2015-08-29T09:39:37.087 回答
0

在 Arch Linux 上,您需要安装postgresql-libs

sudo pacman -Syu postgresql-libs
于 2017-03-21T19:23:11.380 回答
0

对于 Mac OS X,只需安装https://postgresapp.com/并按照命令行部分和 ruby​​ 的步骤操作

sudo mkdir -p /etc/paths.d &&
echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp

然后

sudo ARCHFLAGS="-arch x86_64" gem install pg
于 2018-04-24T18:00:13.593 回答
0

第 1 步)确保您的系统中安装了 postgress(如果它已经安装并且您可以在您的机器上运行 postgress 服务器,请转到第(2)步)

apt-get install postgresql postgresql-contrib (sol - fatal error: libpq-fe.h: No such file or directory)
sudo apt-get install ruby-dev (required to install postgress below)
sudo gem install pg
sudo service postgresql restart

步骤2)一些c ++文件试图libpq-fe.h直接访问并且找不到。所以我们需要手动搜索每个这样的文件并替换libpq-fe.hpostgresql/libpq-fe.h

libpq-fe.h在所有 dir 和 subdir 中搜索所有出现的命令是grep -rnw ./ -e 'libpq-fe.h'

3) 转到步骤 2 中运行的命令列出的所有文件,然后手动更改libpq-fe.hpostgresql/libpq-fe.h.

于 2018-05-18T23:23:18.507 回答
0

我已经尝试了所有解决方案,但只能在命令下工作

pip install psycopg2-binary
于 2020-06-18T04:29:45.583 回答
0

Ubuntu 20.04.1 LTS,这似乎对我有用:

sudo apt-get install ruby ruby-dev libpqxx-dev libpq-fe-dev libpq-dev 
sudo gem install pg -- --with-pg-config=/usr/include/postgresql/pg_config --with-pg-include=/usr/include/postgresql/
于 2020-08-28T04:40:35.177 回答
0

对于 alpine,请使用以下方法修复错误

apk add --no-cache postgresql-dev
于 2021-10-19T23:29:34.507 回答
-1

我通过 rvm 重新安装 Ruby 修复了同样的错误:

rvm reinstall 1.9.3
于 2012-07-29T22:24:11.760 回答