本文共 7628 字,大约阅读时间需要 25 分钟。
我正在使用Ruby on Rails 3.1预版本。 我喜欢使用PostgreSQL,但问题是安装 gem。 它给了我以下错误:
$ gem install pgBuilding 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.rbchecking for pg_config... noNo pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_configchecking for libpq-fe.h... noCan't find the 'libpq-fe.h header*** extconf.rb failed ***Could not create Makefile due to some reason, probably lack ofnecessary libraries and/or headers. Check the mkmf.log file for moredetails. 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_configGem 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
我该如何解决这个问题?
我解决了安装“ postgresql-common”软件包的问题。 该软件包提供了pg_config
二进制文件,这很可能是您所缺少的。
对于 6.4,
yum install postgresql-develgem install pg
运作良好!
以下是任何基于Debian的发行版(包括Ubuntu)的更一般的答案。 首先,安装以root身份运行的apt-file
软件包:
apt-get install apt-file
这使您可以搜索包含文件的软件包。 然后,使用
apt-file update
(可以以普通用户身份运行)。 然后,使用以下命令查找缺少的标题:
apt-file search libpq-fe.h
在我的机器上,这给出了:
libpq-dev: /usr/include/postgresql/libpq-fe.hpostgres-xc-server-dev: /usr/include/postgres-xc/server/gtm/libpq-fe.h
你去!
在FreeBSD(9.1)上,必需的软件包是/ usr / ports / database / postgresql-server *,在安装时还将安装所需的头文件,该头文件会使gem安装“ pg”失败。 这里的答案帮助我找到了解决方案,但是包名称的不同需要一些搜索。
希望这可以帮助某人在FreeBSD系统上搜索“ -dev”软件包时避免头有些划伤!
在macOS (以前是Mac OS X和OS X )上,使用安装正确的标头:
brew install postgresql
然后运行
gem install pg
应该管用。
另外,您也可以不安装整个postgresql
,而是通过brew install libpq
并导出正确的PATH
和PKG_CONFIG_PATH
如“注意事项”部分中所述。
在Mac OS X上,运行如下:
gem install pg -- --with-pg-config=***/path/to/pg_config***
***/path/to/pg_config***
是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
资源:
在 7.0(64位(Wheezy))上,只需运行:
sudo apt-get install libpq-dev
成功安装libpq-dev后,运行:
bundle install
在CentOS 6.5(压缩)下,我创建了一个文件:
$ 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
并尝试再次执行命令。
注意:无论何时更改配置-更改profile.d配置-您都应重新加载Bash。
我在Mac OS上遇到了同样的问题,但是我通过在终端中使用以下命令轻松地安装了PostgreSQL gem:
ARCHFLAGS="-arch x86_64" gem install pg
(我先用brew install postgresql
安装了PostgreSQL。)
经过大约两天的研究,我找到了这个答案,这是唯一对我有用的答案(Mac OS):
$ sudo su$ env ARCHFLAGS="-arch x86_64" gem install pgBuilding native extensions. This could take a while...Successfully installed pg-0.11.01 gem installedInstalling ri documentation for pg-0.11.0...Installing RDoc documentation for pg-0.11.0...
请参阅堆栈溢出问题 。
我最近升级到 (Yosemite),并且在构建pg
gem时遇到困难。
报告的错误是典型的:
Using config values from /usr/local/bin/pg_configchecking for libpq-fe.h... *** extconf.rb failed ***
我的解决方案是将gem uninstall pg
,然后bundle update pg
,以将gem替换为最新版本。 我确实运行了brew update; brew upgrade
优胜美地安装后进行brew update; brew upgrade
,以获取我之前安装的软件包的最新版本。
在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
Mac用户使用Postgres.app的正确答案是根据该软件包提供的libpq
进行构建。 例如,对于9.4版本(撰写本文时为最新版本),您需要做的是:
export CONFIGURE_ARGS="with-pg-include=/Applications/Postgres.app/Contents/Versions/9.4/include"gem install pg
这将使您的pg
gem与您已安装的PostgreSQL版本完全同步。 在这种情况下,从Homebrew安装某些东西很浪费。
libpq-fe.h
的位置取决于PostgreSQL的安装位置(取决于您的安装方式)。 使用locate
( )在您的计算机上找到libpq-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
。
我在Amazon Linux上遇到了同样的问题。 我可以找到标头libpq-fe.h
,但不知何故。
它来自通过计算机上不同用户安装的软件包的不同版本。 已安装PostgreSQL 9.2和PostgreSQL 9.3。 因此,在包含库之前,请确保您的PostgreSQL版本。
对我来说,神奇的命令行是:
sudo yum install postgresql93 postgresql93-server postgresql93-libs postgresql93-contrib postgresql93-devel
资料来源:
我在Mac上运行Postgres.app,我不得不
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin
第一。 然后
bundle install
为我工作。
找不到libpq-fe.h标头
我在运行以下命令的CentOS 7.0.1406上取得了成功:
~ % psql --version # => psql (PostgreSQL) 9.4.1yum install libpqxx-develgem install pg -- --with-pg-config=/usr/pgsql-9.4/bin/pg_config
另外 ,您也可以将bundler配置为始终使用以下选项安装pg
(有助于在部署环境中运行bundler),
bundle config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config
仅作记录:
带有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
在Mac上,我使用以下代码解决了该问题:
gem install pg -v '0.18.4' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
我终于解决了这个问题,但是没有使用前面描述的方法。
使用brew install postgresql
,我发现它已经安装了,但是没有链接。
找出PostgreSQL的安装位置,然后删除它,
然后再次brew install postgresql
,
brew link postgresql
gem install pg
对于AltLinux
,必须安装软件包postgresqlx.x-devel
(在我的情况下为postgresql9.5-devel
):
apt-get install postgresql9.5-devel
我刚刚在运行brew和postgres@9.4
OSX上使用了它。
我的解决方法是:
CONFIGURE_ARGS="with-pg-include=/usr/local/opt/postgresql@9.4/include/" bundle install
在Ubuntu上,安装“ libpq-dev”可以解决此问题。
sudo apt-get install libpq-dev
对于未安装PostgreSQL服务器的MacOS :
brew install libpqgem install pg -- --with-pg-config="/usr/local/Cellar/libpq/9.6.6/bin/pg_config"
我在Postgresql 9.6中遇到这个问题。 我能够通过执行以下操作来修复它:
brew upgrade postgresql@9.6brew link postgresql@9.6 --forcegem install pg
看起来在Ubuntu中,标头是 (至少在以下Ubuntu版本中: (Natty Narwhal), (Lucid Lynx), (Oneiric Ocelot), (Precise Pangolin), ( Trusty Tahr)和 (Bionic Beaver)):
.../usr/include/postgresql/libpq-fe.h...
因此,请尝试为您的操作系统安装libpq-dev
或等效版本:
sudo apt-get install libpq-dev
yum install postgresql-devel
brew install postgresql
gem install pg -- --with-pg-config=/opt/local/lib/postgresql[version number]/bin/pg_config
zypper in postgresql-devel
pacman -S postgresql-libs
在我的情况下,它是软件包postgresql-server-dev-8.4
(我在 (Natty Narwhal)上,64位)。
我可以用另一种方式解决这个问题。 我没有在系统上找到该库。 因此,我使用PostgreSQL主网站上的应用程序安装了它。 就我而言(OS X),安装结束后,我在/Library/PostgreSQL/9.1/include/
下找到了该文件。 如果您已经安装了PostgreSQL,则可能还会在其他位置存储该文件,具体取决于您的系统。
多亏了这个有关链接,我可以使用以下命令将gem指向lib:
export CONFIGURE_ARGS="with-pg-include=/Library/PostgreSQL/9.1/include/"gem install pg
之后,它就可以工作了,因为它现在知道在哪里可以找到丢失的库。 只需将路径替换为libpq-fe.h的正确位置
我也尝试过执行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# orapt-get install postgres-server-dev-{pg.version}# for postgresql 9.4 on Ubuntu 14.04
那我就能做到
gem install pg
没有问题。
转载地址:http://feogj.baihongyu.com/