ChatGPT解决这个技术问题 Extra ChatGPT

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

我正在尝试为 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。

J
Jonah

您需要安装带有 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 失败了
S
StackExchange User

在阅读和折腾 2 天后,并尝试了在其他笔记中发现的许多东西后,以下单行是我在 Ubuntu Lucid 10.04 上与一些 Maverick 软件包和 RVM(ruby 1.9.2-p290,rvm 1.10.2 rubygems 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 的配置脚本
谢谢你。您的解决方案非常完美。
非常感谢分享这个解决方案。被困在这一天。很高兴我遇到了这篇文章。
M
Marcos Riveros

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

sudo apt-get install libpq-dev

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

f
fotanus

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

apt-get install libpq-dev

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


T
Tunaki

需要添加包

sudo apt-get install libpq-dev

在 RoR 中安装 pg gem


p
philwhln

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

sudo apt-get install libpq-dev build-essential

M
Maruf Hasan Bulbul

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 版本)。
G
Gotey

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


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

对于 .RVM 用户来说会更好:

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

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


M
Mike Blackwell

如果您安装了 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。在你来救援之前,我几乎已经放弃了希望。
i
illusionist

尝试这个

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.


o
olafurg

在此处的每个建议都失败后,这解决了我在 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/` ;我不需要指定版本。
b
bishal

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

sudo apt-get install aptitude

其次是

sudo apt-get install libpq-dev

为我解决了。


m
marksiemers

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

sudo apt-get install libgmp3-dev
gem install pg

这是在完成此页面上提到的所有其他内容之后。

PostgreSQL 9.5.8 Ubuntu 16.10


这就是我在 Ubuntu 18.04 上所需要的
B
Braden Mugg

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

brew install postgresql

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


Homebrew 仅适用于 Mac。
有一个Linux fork。
如果您不想安装完整的 PostgreSQL,以下对我有用:brew install libpq && brew link libpq --force
M
Matthieu

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

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


R
RaskolnikOFF

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


s
ssss4world

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


A
Andrew

另一种选择是使用适用于 Linux 和 macOS 的 Homebrew 来仅安装支持库:

brew install libpq

然后

brew link libpq --force

(需要 --force 选项,因为它与 postgres 公式冲突。)