无法在Windows上安装pg gem

时间:2010-12-02 13:58:28

标签: ruby-on-rails ruby windows postgresql gem

我有两个Ruby版本:1.8.7和1.9.2以及PostgreSQL 8.3。我不能在任何一个上安装pg gem。得到此错误:

C:/Development/Ruby187/bin/ruby.exe extconf.rb
checking for pg_config... yes
not recorded
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:/Development/Ruby187/bin/ruby
 --with-pg
 --without-pg
 --with-pg-config
 --without-pg-config
 --with-pg-dir
 --without-pg-dir
 --with-pg-include
 --without-pg-include=${pg-dir}/include
 --with-pg-lib
 --without-pg-lib=${pg-dir}/lib

我知道这是一个常见问题,但我还没有找到任何正常工作的解决方案......哦,我已经将C:\ Program Files(x86)\ PostgreSQL \ 8.3 \ bin添加到我的路径中。

16 个答案:

答案 0 :(得分:31)

您收到的消息清楚地表明您缺少正确安装该宝石的内容:

  

由于某种原因无法创建Makefile,可能缺少   必要的库和/或标题。检查mkmf.log文件以获取更多信息   细节。您可能需要配置选项。

昨天发布的最新版本的pg(0.10.0)没有Windows原生版本,但是如果安装0.9.0,它应该安装二进制版本。

无论如何,如果要安装gem,则需要安装构建环境。如果您使用的是RubyInstaller,则需要DevKit

安装gem只需要为gem安装提供额外的选项(如--with-pg-dir

subst X: "C:\Program Files (x86)\PostgreSQL\8.3"
gem install pg -- --with-pg-dir=X:
subst X: /D

答案 1 :(得分:27)

为Linux用户添加Ps。

我解决了安装libpq-dev的错误。

答案 2 :(得分:12)

我和他打了两天。我从msysgit提供的优秀的unixy命令窗口中执行我的rails命令行。我创建了一个包含

的postgresql-path.bat文件
@set PATH=%PATH%;C:\Progra~1\PostgreSQL\8.3\bin
@set PATH=%PATH%;C:\Progra~1\PostgreSQL\8.3\include
@set PATH=%PATH%;C:\Progra~1\PostgreSQL\8.3

在msys.bat文件的顶部我添加了

CALL postgresql-path.bat

一旦我从postgreSQL目录的PATH变量中获取空间,我安装'pg'的问题就消失了。希望这能为我节省一些问题。

答案 3 :(得分:8)

经过近两天的试验和错误(并且在很大程度上要归功于此主题和其他地方早期帖子的建议,我能够在Ruby 1.8.7中成功安装pg 0.10.0(对于我的两个) RubyInstaller和我的InstantRails版本。。如果有人再次遇到这个问题,我将总结我最后一次成功的安装过程。

首先,我必须按照安装说明安装DevKit。我必须复制(为了安全),然后删除\ Ruby187 \ lib \ ruby​​ \ site_ruby \ 1.8 \ ruby​​gems \ defaults文件夹中的operating_system.rb文件,以便安装成功运行。

其次,我安装了rake-compiler和rdoc gems。 gem install rake-compiler gem install rdoc (如果你遇到任何一个问题,我建议你自由使用--platform = win32配置选项)

成功安装后,pg本身的最终安装是:

gem install pg --platform = mswin32 --version = 0.9.0 - - with-pg = {Postgres目录短名称} \

e.g。 gem install pg --platform = mswin32 --version = 0.9.0 - - with-pg = C:\ PostgreSQL \

最终的'\'似乎是安装程序解析目录字符串的必要条件。我意识到我对配置选项的使用可能有点多,但显然成功安装了0.10.0版本(当我排除了--version选项时)并没有真正起作用。

再次感谢那个帮助我完成这个序列的人。

答案 4 :(得分:3)

首先安装ruby DevKit

在Windows XP和MSysGIT bash终端上,只需执行以下操作即可 根据我的安装路径

subst X:“D:/ Program Files / PostgreSQL / 9.0”

gem install pg - --with-pg = X:

我的宝石pg-0.10.1已成功安装。

答案 5 :(得分:3)

这看起来似乎没什么问题,但我有同样的错误,略有麻烦。在获取构建以查找标头后,它立即失败并声称无法找到libpq。我终于推断出我正在尝试构建一个带有32位ruby的64位postgres安装。安装32位postgres导致了即时修复。只是想我会添加这个以防其他任何有相同错误的人在这个线程中绊倒。

答案 6 :(得分:2)

消息“无法找到'libpq-fe.h标头'表示安装程序找不到标题

  • 检查Postgre安装是否包含开发工具(“include”文件夹)。如果缺席,请安装postgre开发工具。
  • 检查pg_config.exe的位置。您需要运行安装,如
    gem install pg -- --with-pg-config="C:/PROGRA~2/POSTGR~1/8.3/bin/pg_config.exe"
    请注意,您需要使用简短文件夹名称。

要为pg gem构建原生扩展,您需要一个ruby DevKit(http://rubyinstaller.org/downloads/

我遇到了另一个问题:

D:\app1>rake test
(in D:/app1)
rake aborted!
no such file to load -- 1.9/pg_ext

在这种情况下,您需要手动复制
的复制内容 C:\Ruby\192\lib\ruby\gems\1.9.1\gems\pg-0.10.0\lib\

C:\Ruby\192\lib\ruby\gems\1.9.1\gems\pg-0.10.0\lib\1.9

答案 7 :(得分:2)

“gem install pg”无效

取出:pg-0.17.0.gem(100%) 构建原生扩展。这可能需要一段时间...... 错误:安装pg时出错:     错误:无法构建gem原生扩展。

试试这个对我有用,我很确定它对你也有用::

#On Ubuntu
    $ sudo apt-get install postgresql-client libpq5 libpq-dev
    $ sudo gem install pg

这应该适用于“Windows上的Bash on Ubuntu”

答案 8 :(得分:1)

谢谢路易斯! pg 0.9.0安装得很好。

对于最新版本(0.10.0),您需要devkit和此命令“gem install pg - --with pg-dir = path / to / your / postgresql / dir”

当我离开附加的“ - ”时,它会给我一个错误: “gem install pg --with-pg-dir = C:/postgresql/9.0”

答案 9 :(得分:1)

我遇到了同样的问题。 在PostgreSQL之前,您很可能在路径中安装了perl。 Windows最常见的perl安装在其bin中有一个可执行文件名pg_config,会导致冲突。

只要你指定没有空格的路径(例如C:/ PROGRA~),

p0.10.0就可以安装rubyinstaller + devkit了 - 否则就是nmake chokes。

答案 10 :(得分:1)

Windows 7,PostgreSQL 8.4,Ruby 1.9.2:

subst X:\ "C:\Program Files\PostgreSQL\8.4"

gem install pg -- --with-pg=X:/

这已成功安装。

答案 11 :(得分:1)

其他简单方法,在Windows上

  1. 安装postgresql ODBC。

  2. 从pgqlODBC lib目录复制libpq.dll

  3. 将其粘贴到PostGreSQL lib目录

  4. 运行此命令(根据您的命令调整此命令中的 PostGreSQL路径):

    gem install pg -- --with-pg-config="C:\Dev\Databases\PostgreSQL\9.0\bin\pg_config.exe"
    

答案 12 :(得分:0)

我遇到了同样的问题。我想使用dbi访问postgres数据库并且必须安装Pg。 我花了一天的时间成功编译模块,其中包含类似于该线程其他帖子的说明。但是第二次我必须这样做,我找到了另一个解决方案:使用ODBC。

  1. 为postgresql(http://www.postgresql.org/ftp/odbc/versions/
  2. 安装ODBC驱动程序
  3. 配置数据源(http://www.xtuple.org/SettingUpPostgresAndOdbc
  4. 安装ruby dbi和odbc gems

    gem install dbi
    gem install ruby-odbc
    gem install dbd-odbc
    
  5. 连接到postgres

    require 'dbi'
    dbh = DBI.connect('dbi:ODBC:DSN_NAME', 'USER', 'PASS')
    
  6. 这对我在Windows XP 32位上使用ruby 1.9.1起作用了。 此外,如果您已使用DBI,则除了DBI.connect行之外,这不会更改代码中的任何内容。

答案 13 :(得分:0)

PostgreSQL 9.0:

gem install pg --platform=mswin32 --version=0.9.0 -- '--with-pg="C:\Progra~1\PostgreSQL\"'

注意单刻度封装。 (~1表示“Program Files”,如果PostgreSQL在Win64上的Program Files(x86)中,则更改为~2)

答案 14 :(得分:0)

0.13.0 gem的版本pg开始,您应该可以使用以下内容安装它:

subst X: "C:\Program Files\PostgreSQL\9.0"
gem install pg -- -- with-pg=X:
subst X: /D

然后您可以成功运行bundle install并在输出中看到以下行:

Using pg (0.13.0)

而不是错误。

答案 15 :(得分:0)

我明白了:

和魔法诀窍:

is that you do not have this installed -- > postgres-devel

所以去吧:

install postgresql-devel

多数人......不仅仅是宝石安装pg,它就在那里。