如何在 Ubuntu 上安装 PostgreSQL 的 pg gem?

Posted

技术标签:

【中文标题】如何在 Ubuntu 上安装 PostgreSQL 的 pg gem?【英文标题】:How to install PostgreSQL's pg gem on Ubuntu? 【发布时间】: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。 【参考方案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】:

对于 .RVM 用户会更好:

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

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

【讨论】:

【参考方案4】:

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

sudo apt-get install libpq-dev build-essential

【讨论】:

【参考方案5】:

在此处的每个建议都失败后,这解决了我在 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/` ;我不需要指定版本。【参考方案6】:

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

apt-get install libpq-dev

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

【讨论】:

【参考方案7】:

如果您安装了 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。在你来救援之前,我几乎已经放弃了希望。【参考方案8】:

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

【讨论】:

【参考方案9】:

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 版本)。【参考方案10】:

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

brew install postgresql

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

【讨论】:

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

需要添加包

sudo apt-get install libpq-dev

在 RoR 中安装 pg gem

【讨论】:

【参考方案12】:

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

sudo apt-get install aptitude

紧随其后

sudo apt-get install libpq-dev

帮我解决了。

【讨论】:

【参考方案13】:

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

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

【讨论】:

【参考方案14】:

试试这个

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.

【讨论】:

【参考方案15】:

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

sudo apt-get install libgmp3-dev
gem install pg

这是完成了本页提到的所有其他事情之后。

postgresql 9.5.8 Ubuntu 16.10

【讨论】:

这是我在 Ubuntu 18.04 上所需要的【参考方案16】:

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

sudo apt-get install libpq-dev

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

【讨论】:

【参考方案17】:

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

【讨论】:

【参考方案18】:

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

brew install libpq

然后

brew link libpq --force

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

【讨论】:

【参考方案19】:

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

【讨论】:

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

以上是关于如何在 Ubuntu 上安装 PostgreSQL 的 pg gem?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ubuntu 上彻底清除并重新安装 postgresql? [关闭]

PostgreSQL在Ubuntu上安装指南

无法在Ubuntu 19.04上安装Postgresql

如何在Ubuntu 16.04和14.04 LTS中安装PostgreSQL 9.5

sh 在Ubuntu 16.04上安装PostgreSQL客户端10

如何在ubuntu上去更新postgresql