2012-09-21 75 views
8

我想在本地使用PostgreSQL在Ruby on Rails中开发,所以我试图安装pg gem。在Ubuntu 12.04上。在终端,我输入:无法安装pg gem,在-lpq中检查PQconnectdb()... no

gem install pg -v '0.12.2' 

会抛出以下错误:

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

     /home/troyshu/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb 
checking for pg_config... yes 
Using config values from /usr/bin/pg_config 
checking for libpq-fe.h... yes 
checking for libpq/libpq-fs.h... yes 
checking for pg_config_manual.h... yes 
checking for PQconnectdb() in -lpq... no 
checking for PQconnectdb() in -llibpq... no 
checking for PQconnectdb() in -lms/libpq... no 
Can't find the PostgreSQL client library (libpq) 
*** 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 
    --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/troyshu/.rvm/rubies/ruby-1.9.3-p194/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 
    --with-pqlib 
    --without-pqlib 
    --with-libpqlib 
    --without-libpqlib 
    --with-ms/libpqlib 
    --without-ms/libpqlib 


Gem files will remain installed in /home/troyshu/.rvm/gems/ruby-1.9.3-p194/gems/pg-0.14.1 for inspection. 
Results logged to /home/troyshu/.rvm/gems/ruby-1.9.3-p194/gems/pg-0.14.1/ext/gem_make.out 

有趣的是,增加了sudo来命令作品:

$ sudo gem install pg -v '0.12.2' 
Building native extensions. This could take a while... 
Successfully installed pg-0.12.2 
1 gem installed 

顺便说一句,我不得不跑“ sudo apt-get install ruby​​1.9.1-dev“来获得上述命令的工作。但我仍然无法做任何开发,因为“捆绑安装”将不起作用(并一直告诉我运行'gem install pg -v'0.12.2')

我有一种感觉,“gem install pg”是越来越绊倒在

checking for PQconnectdb() in -lpq... no 
checking for PQconnectdb() in -llibpq... no 
checking for PQconnectdb() in -lms/libpq... no 

但是,作为一个完整的小白到Ubuntu和RoR的,我不知道为什么。也许我的搜索技能也很糟糕,因为我一直无法找到解决方案,我的个案。希望有一个修复?

谢谢!

+0

你确定'的libpq-dev'安装?我已经发布了解释如何这样做的答案。 –

+0

您安装了哪些版本的PostgreSQL和'libpq-dev'? –

+0

因此,我只是安装了一个Ubuntu 12.04 Vagrant框,并以非root用户身份运行以下命令:'$ sudo apt-get update','$ sudo apt-get install postgresql libpq-dev build-essentials git-core curl' ,'$ curl -L https://get.rvm.io | bash -s stable --ruby'和'$ gem install pg -v'0.12.2'没有错误(另外,我安装了最新版本的'pg' gem,v0.14.1,没有错误;你可能想要看看你是否可以使用最新版本,而不是它必须解决你的问题)。 –

回答

-2

当你做sudo gem install pg只要安装红宝石和PostgreSQL安装宝石;当你做gem install pg时,gem会安装在你的主目录中(请参阅你的消息!)。所以,你需要为你在当地工作的方式为你所有的宝石做sudo bundle install blah-blah-blah。当然还有其他选择,比如我不使用的RVM。

+0

谢谢,每天都在学习新东西。虽然我有点困惑。 Ruby安装在我的主目录中:'ruby'返回'/ home/troyshu/.rvm/rubies/ruby​​-1.9.3-p194/bin/ruby​​'。因此,“捆绑安装”正确的命令运行(这不工作,每个我原来的帖子中的错误)? – user1686439

+0

啊,你使用rvm。太棒了!许多人觉得它很有用。在rvm网站有一个完整的文档页面,可以解释如何做你正在做的事情。你想要像'rvm exec gem install blah'或类似的东西。 – thisfeller

+0

好的。我试过'rvm 1.9.3 gem install pg -v'0.12.2'',但它会抛出与我原来的帖子中一样的错误。我认为这可能是一个pg版本的错误,所以我试着只是'rvm 1.9.3 do gem install pg',它给出了同样的错误。 – user1686439

1

根据您发布的错误信息,它看起来像你没有安装libpq-dev做。尝试apt-get install libpq-dev(如果您不是root,则使用sudo),然后安装gem。

由于您使用RVM,如果你有使用sudo安装一个宝石,你这样做是错误的。 sudo安装使用系统的Ruby的gem,而不是使用RVM安装的Ruby。

+0

很酷。我想我已经运行过这个命令了。我得到了'libpq-dev已经是最新的版本了.'我也得到了一堆其他的输出,不知道它是否有任何相关的:'以下软件包已被自动安装并且不再需要: libsdl-ttf2.0- 0 libboost-filesystem1.46.1蟒-numpy的蟒-pygame的 洪水-GTK libsdl-mixer1.2 libboost-system1.46.1 libboost-python1.46.1 蟒-libtorrent libportmidi0洪水共用libmikmod2 libboost-thread1.46.1 libtorrent-rasterbar6 libsmpeg0 '运行'gem install pg -v'0.12.2''后仍然出现同样的错误:(: – user1686439

+0

是的,已安装。没有区别。 – JosephK

0

如果sudo的工作和一个标准的用户不,这表明要么是发现了一些集未发现与其他用户或实际上是那里没有得到正确权限问题库和头文件的某处在其他地方处理。如果你愿意,你可以使用strace来找出问题的根源。

不过,我认为更稳健的解决方案是要认识到,你可能需要root权限才能安装反正很多事情就是这样,所以如果它是我的系统我会接受它。

4

相关:gem install pg can not bind to libpq。请检查您的mkmf日志并使用libssl查找错误。我有同样的问题。我已经安装了libpq-dev并且双重检查了pg_config。看起来gem找到了libpq-dev头文件,但没有和libpq链接​​。事实证明,rvm为ssl安装的软件包以某种方式干扰了通过libssl-dev安装的软件包。

+0

你可以填写一下吗?你是如何解决问题的 - 摆脱“干扰”软件包? – JosephK

1

我发现一个奇怪的解决方案,但它为我工作,而不是所有其他建议:

mv ~/.rvm/usr/lib ~/.rvm/usr/lib_rvm 
0

我也有类似的问题,有一个失败的bundle install

Installing pg 0.17.1 with native extensions 

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. 

...

An error occurred while installing pg (0.17.1), and Bundler cannot continue. 
Make sure that `gem install pg -v '0.17.1'` succeeds before bundling. 

但是与gem install pg -v '0.17.1'

我可以成功安装gem,但捆绑包仍然会失败。

  1. 检查PG CONFIGS:

    $ which pg_config回报:

    /usr/local/bin/pg_config

  2. 检查电流束构建选项为pg

    我通过改变PG束配置固定它

$ bundle config build.pg

  • 如果不是由which pg_config返回的值,
  • $ bundle config build.pg --with-pg-config=/usr/local/bin/pg_config

    现在尝试bundle install !!!!

    0

    对我来说,唯一有效的工作是通过rvm网站上的说明安装rvmhttps://rvm.io。我能够在Ubuntu 14.04上运行它。

    在此日期的完整命令列表:
    sudo gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

    确保你是在一个可下载的目录,然后运行:
    \curl -sSL https://get.rvm.io | bash -s stable