【问题标题】:How to install PostgreSQL's pg gem on Ubuntu?如何在 Ubuntu 上安装 PostgreSQL 的 pg gem?
【发布时间】:2011-03-08 03:48:04
【问题描述】:

我正在尝试为 Ruby 安装 PostgreSQL 的 pg gem。

我发出以下命令:

gem install pg

我使用 RVM 安装了 Ruby 1.9.2。

上面的命令显示了以下错误。

错误是:

Building native extensions.  This could take a while...

ERROR:  Error installing pg:

ERROR: Failed to build gem native extension.

/home/User/.rvm/rubies/ruby-1.9.2-preview3/bin/ruby extconf.rb

checking for pg_config... yes
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.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
 --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/User/.rvm/rubies/ruby-1.9.2-preview3/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
 --enable-static-build
 --disable-static-build
 --with-pqlib
 --without-pqlib
 --with-libpqlib
 --without-libpqlib
 --with-ms/libpqlib
 --without-ms/libpqlib

Gem files will remain installed in /home/user/.rvm/gems/ruby-1.9.2-preview3/gems/pg-0.9.0 for inspection.

Results logged to /home/user/.rvm/gems/ruby-1.9.2-preview3/gems/pg-0.9.0/ext/gem_make.out

我不知道是什么错误...

【问题讨论】:

  • apt install postgresql-server-dev-all 用于 Ubuntu 18.04。

标签: ruby postgresql pg


【解决方案1】:

您需要安装带有 PostgreSQL 标头的 postgreSQL 开发包

​​>
sudo apt-get install libpq-dev

【讨论】:

  • 我按照您的建议这样做了...获取以下需要获取 0B 的档案。解压后 5378kB 将被释放。你想继续吗? [Y/n/?] Y 写入扩展状态信息...完成(正在读取数据库...当前安装的 166183 个文件和目录。)正在删除 bison ... 正在删除 libnss3-dev ... 正在删除 libnspr4-dev ... 正在删除libqt4-core ... 正在删除 libqt4-test ... 正在删除 libsqlite3-dev ... 处理 man-db 的触发器 ..
  • 对于那些像我一样对 Ubuntu 非常陌生,但真正新使用 sudo apt-get install aptitude 首先的人 :)
  • 尝试了各种组合。即使在重新安装 postgres 和 libpq 之后。没有运气..仍然是同样的问题
  • 对于 Cent/RedHat 风格的发行版,您需要的软件包是 yum install postgresql-devel
  • 我感觉这可能不适用于某些人,因为他们的 Ubuntu 版本。这对我来说在 13.04 上使用 Postgres 9.1 失败
【解决方案2】:

在阅读和折腾 2 天后,并尝试了其他注释中发现的许多东西后,以下单行是我在 Ubuntu Lucid 10.04 上与一些 Maverick 软件包和 RVM(ruby 1.9.2-p290,rvm 1.10 .2 ruby​​gems 1.8.15,rails 3.0.1,postgres 8.4.10):

gem install pg  --   --with-pg-lib=/usr/lib   

结果:

Building native extensions.  This could take a while...  
Successfully installed pg-0.13.1  
1 gem installed  
Installing ri documentation for pg-0.13.1...  
Installing RDoc documentation for pg-0.13.1...  

{是的 - 终于成功了}!! !请注意,运行 pg_config 的输出在我的 Ubuntu / Postresql 安装的 LIBS 变量中缺少项目 -lpq!

以及为什么在某些地方从 pq 切换到 pg - 让新手感到困惑??

我仍然不明白的是 -- 和 --with(option 但无论如何我都超出了我的深度

【讨论】:

  • '--' 常用来分隔第一个命令和第二个命令的参数,在这种情况下是 extmod 的配置脚本
  • 谢谢。您的解决方案非常完美。
  • 非常感谢分享这个解决方案。被困在这一天。很高兴我遇到了这篇文章。
【解决方案3】:

在 Ubuntu 中这对我有用,希望对您有所帮助:

sudo apt-get install libpq-dev

gem install pg  --   --with-pg-lib=/usr/lib 

【讨论】:

    【解决方案4】:

    我在 Ubuntu 12.10 上运行这个命令:

    apt-get install libpq-dev
    

    帮助了我 - 之后运行 gem install pg -v "0.14.1",现在一切都好

    【讨论】:

      【解决方案5】:

      安装 libpq-dev 对我不起作用。我还需要安装 build-essential

      sudo apt-get install libpq-dev build-essential
      

      【讨论】:

        【解决方案6】:

        需要添加包

        sudo apt-get install libpq-dev
        

        在 RoR 中安装 pg gem

        【讨论】:

          【解决方案7】:

          ubuntu 用户的简单解决方案...

          首先卸载所有 postgres 包,然后运行这些逗号...

          sudo apt-get install postgresql
          sudo apt-get install postgresql-client libpq5 libpq-dev
          
          # for rvm (single user)
          mv ~/.rvm/usr/lib ~/.rvm/usr/lib_rvm 
          
          # for rvm (multi-user)
          mv /usr/local/rvm/usr/lib /usr/local/rvm/usr/lib_rvm
          
          gem install pg  --   --with-pg-lib=/usr/lib
          

          然后运行“捆绑安装”。一切都会好起来的。祝你有美好的一天!

          【讨论】:

          • 如果人们对如何删除所有 postgres 包感到好奇,请使用 sudo apt-get remove --purge postgresql postgresql-9.3(或您拥有的任何 postgres 版本)。
          【解决方案8】:

          sudo apt-get install postgresql-client libpq5 libpq-dev 然后做gem install pg

          【讨论】:

          • 请在您的答案中添加一些上下文,说明为什么这样做。这也仅适用于基于 debian 的系统
          【解决方案9】:

          对于 .RVM 用户会更好:

          rvmsudo gem install pg -- --with-pg-lib=/usr/lib 
          

          它对我有用(在我看到 jdupont 版本之后)

          【讨论】:

            【解决方案10】:

            如果您安装了 libpq-dev 并且仍然遇到此问题,这可能是由于 OpenSSL 的 libssl 和朋友的版本冲突 - /usr/lib 中的 Ubuntu 系统版本(构建 libpq)和第二个版本 RVM安装在 $HOME/.rvm/usr/lib (或 /usr/local/rvm/usr/lib 如果它是系统安装)。您可以通过临时重命名 $HOME/.rvm/usr/lib 并查看“gem install pg”是否有效来验证这一点。

            要解决问题,请使用系统 OpenSSL 库重新构建 rvm(您可能需要从 rvm/usr/lib 目录中手动删除 libssl.* 和 libcrypto.*):

            rvm reinstall 1.9.3 --with-openssl-dir=/usr
            

            这终于解决了我在 Ubunto 12.04 上的问题。

            【讨论】:

            • 感谢您的回答! Ubuntu 越新,ruby 版本越旧,OpenSSL 不匹配的可能性就越大。
            • 除此之外没有其他工作!非常感谢@mike-blackwell。在你来救援之前,我几乎已经放弃了希望。
            【解决方案11】:

            试试这个

            sudo apt-get install postgresql postgresql-contrib libpq-dev
            

            您应该首先安装 PG 数据库服务器来安装客户端。然后,您安装客户端。

            See this blog post to know about setting up PostGresSQL for the first time for Ruby on Rails development.

            【讨论】:

              【解决方案12】:

              在此处的每个建议都失败后,这解决了我在 Ubuntu 12.04 上的问题。

              rvmsudo gem install pg -v '0.12.2' -- --with-pg-lib=/usr/include/postgresql
              

              【讨论】:

              • 我的解决方案几乎相同;我正在使用 rbenv,对我有用的是:` gem install pg -- --with-pg-lib=/usr/lib/postgresql/ --with-pg-include=/usr/include/postgresql/` ;我不需要指定版本。
              【解决方案13】:

              我试图在我新安装的 Ubuntu 16.04 中设置一个 Rails 项目。我在运行 bundle 时遇到了同样的问题。跑步

              sudo apt-get install aptitude
              

              紧随其后

              sudo apt-get install libpq-dev
              

              帮我解决了。

              【讨论】:

                【解决方案14】:

                对于尝试此页面上的所有答案后仍有问题的任何人,以下(最终)有效:

                sudo apt-get install libgmp3-dev
                gem install pg
                

                这是完成此页面上提到的所有其他操作之后。

                postgresql 9.5.8
                Ubuntu 16.10

                【讨论】:

                • 这是我在 Ubuntu 18.04 上所需要的
                【解决方案15】:

                这个问题的另一个解决方案是使用 Homebrew/linuxbrew 安装 PostgreSQL:

                brew install postgresql

                作为一个习惯,我不喜欢使用 sudo,除非我必须这样做。

                【讨论】:

                • Homebrew 仅适用于 Mac。
                • 有一个 Linux 分支。
                • 如果您不想安装完整的 PostgreSQL,以下对我有用:brew install libpq && brew link libpq --force
                【解决方案16】:

                对于那些尝试安装Redmine的人,在尝试了以上所有方法后,我错过了sudo apt-get install ruby-all-dev

                初始错误为mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h

                【讨论】:

                  【解决方案17】:

                  我遇到了同样的问题,并尝试了很多不同的变体。经过一些尝试,我能够sudo gem install,但在没有 sudo 的情况下安装它仍然有问题。
                  最后我找到了一个决定 - 重新安装 rvm 帮助了我。也许它可以节省其他人的时间。

                  【讨论】:

                    【解决方案18】:

                    apt-get install ruby-dev 为我工作。

                    【讨论】:

                      【解决方案19】:

                      另一种选择是使用在 Linux 和 macOS 上运行的 Homebrew 仅安装支持库:

                      brew install libpq

                      然后

                      brew link libpq --force

                      --force 选项是必需的,因为它与 postgres 公式冲突。)

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 2015-06-05
                        • 2013-01-06
                        • 2012-11-20
                        • 2012-09-20
                        • 2015-04-06
                        • 1970-01-01
                        相关资源
                        最近更新 更多