如何在 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 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 的配置脚本 谢谢。您的解决方案非常完美。 非常感谢分享这个解决方案。被困在这一天。很高兴我遇到了这篇文章。【参考方案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? [关闭]
如何在Ubuntu 16.04和14.04 LTS中安装PostgreSQL 9.5