我有2个Ruby版本:1.8.7和1.9.2和PostgreSQL 8.3。 我不能在任何安装PGgem。 得到这个错误:
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
我知道这是一个常见的问题,但我还没有find任何工作的解决scheme呢…哦,我已经添加C:\ Program Files文件(x86)\ PostgreSQL \ 8.3 \ bin到我的path。
您收到的消息清楚地表明您缺少正确安装该宝石的东西:
由于某种原因无法创建Makefile,可能缺少必要的库和/或头文件。 检查mkmf.log文件以获取更多详细信息。 您可能需要配置选项。
没有Windows最新版本的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
ps为Linux用户添加。
我解决了这个错误安装libpq-dev。
我打了两天。 我从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
只要我从我的PATH变量的postgreSQL目录的空间,我安装'pg'的问题就消失了。 希望这可以帮助我解决问题。
经过近两天的试验和错误(并在很大程度上感谢在这个线程和其他地方的早期文章的建议,我能够成功地在Ruby 1.8.7安装pg 0.10.0(为我的RubyInstaller和我的InstantRails版本)。如果再次遇到这个问题,我将总结我最后的成功安装过程。
首先,我必须按照安装说明安装DevKit 。 我必须复制(为了安全),然后删除\ Ruby187 \ lib \ ruby \ site_ruby \ 1.8 \ rubygems \ defaults文件夹中的operating_system.rb文件,以便安装成功运行。
其次,我安装了rake编译器和rdoc宝石。 gem install rake-compiler gem install rdoc(如果你有任何问题,我建议大家自由使用–platform = win32配置选项)
一旦安装成功,pg本身的最终安装是:
gem install pg –platform = mswin32 –version = 0.9.0 – – with-pg = {Postgres目录简称} \
例如gem install pg –platform = mswin32 –version = 0.9.0 – – with-pg = C:\ PostgreSQL \
最后的'\'似乎是安装程序分析目录字符串的方式所必需的。 我意识到我对配置选项的使用可能超过了必要的一点,但是显然成功安装了0.10.0版本(当我排除–version选项时)实际上并不工作。
再次感谢那些帮助我完成这个序列的人。
首先安装ruby DevKit
在Windows XP和MSysGIT bash终端上,根据我的安装路径执行以下操作
subst X:“D:/ Program Files / PostgreSQL / 9.0”
gem install pg – –with-pg = X:
我的宝石PG-0.10.1安装成功。
这看起来似乎没有什么意思,但是我也有这个轻微的转折。 得到构建找到头后,立即失败,声称无法找到libpq。 我终于推断,我试图建立一个32位的红宝石64位postgres安装。 安装32位postgres导致即时修复。 只是想我会添加这个以防其他人有相同的错误绊倒在这个线程。
消息“无法找到'libpq-fe.h头'意味着安装程序找不到头
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
谢谢路易斯! 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”
我有同样的问题。 在PostgreSQL之前,你很可能在你的路径上安装了perl安装。 Windows最常见的perl安装在其bin中有一个可执行文件名称pg_config
,这会导致冲突。
只要你指定没有空格的路径(比如C:/ PROGRA〜),pg v0.10.0就可以正常安装rubyinstaller + devkit,否则就是nmake扼流圈。
Windows 7,PostgreSQL 8.4,Ruby 1.9.2:
subst X:\ "C:\Program Files\PostgreSQL\8.4" gem install pg -- --with-pg=X:/
这安装成功。
其他简单的方法,在Windows上
安装postgresql ODBC。
从pgqlODBC lib目录复制libpq.dll
将其粘贴到PostGreSQL lib目录中
运行这个命令(根据你的命令修改这个命令中的PostGreSQL路径 ):
gem install pg -- --with-pg-config="C:\Dev\Databases\PostgreSQL\9.0\bin\pg_config.exe"
我遇到了同样的问题。 我想用dbi访问postgres数据库,必须安装Pg。 我花了一天的时间成功地编译模块,指令类似于这个线程的其他帖子。 但是第二次我必须这样做,我发现了另一个解决方案:使用ODBC。
安装ruby dbi和odbc宝石
gem install dbi gem install ruby-odbc gem install dbd-odbc
连接到postgres
require 'dbi' dbh = DBI.connect('dbi:ODBC:DSN_NAME', 'USER', 'PASS')
这对我使用Windows XP 32位红宝石1.9.1。 此外,这不会更改您的代码中的任何东西,除了DBI.connect
行,如果您已经使用DBI。
PostgreSQL 9.0:
gem install pg --platform=mswin32 --version=0.9.0 -- '--with-pg="C:\Progra~1\PostgreSQL\"'
注意单刻度封装。 (〜1表示“程序文件”,如果PostgreSQL在Win64上的程序文件(x86)中则更改为〜2)
从pg
gem的版本0.13.0
,你应该可以使用类似下面的方法安装它:
subst X: "C:\Program Files\PostgreSQL\9.0" gem install pg -- -- with-pg=X: subst X: /D
然后,您可以成功运行bundle install
并在输出中看到以下行:
Using pg (0.13.0)
而不是错误。
我知道了:
和魔术技巧:
is that you do not have this installed -- > postgres-devel
所以去得到它:
install postgresql-devel
多数民众赞成在所有…不仅仅是宝石安装pg,它在那里。