无法安装 pg gem

Posted

技术标签:

【中文标题】无法安装 pg gem【英文标题】:unable to install pg gem 【发布时间】:2011-06-17 03:49:37 【问题描述】:

我尝试使用gem install pg,但它似乎不起作用。

gem install pg 给出这个错误

Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
        ERROR: Failed to build gem native extension.

C:/Ruby/bin/ruby.exe extconf.rb
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** 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=C:/Ruby/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


Gem files will remain installed in C:/Ruby/lib/ruby/gems/1.8/gems/pg-0.10.1 for
inspection.
Results logged to C:/Ruby/lib/ruby/gems/1.8/gems/pg-0.10.1/ext/gem_make.out

【问题讨论】:

如果您使用的是 Mac,请按照本教程进行操作:matthew.mceachen.us/blog/… @NatchiQ 链接断开? 在我的情况下,错误日志显示libpq 未找到,所以我安装了sudo apt install postgresql postgresql-contrib libpq-dev pgadmin3 -y 尝试打开一个新的终端选项卡并重试。这对我有用。我刚刚安装了 psql,而我尝试安装 gem 的窗口的路径中没有 psql。 【参考方案1】:

我遇到了这个问题,这对我有用:

安装postgresql-devel包,这样可以解决pg_config缺失的问题。

sudo apt-get install libpq-dev

【讨论】:

apt-get install libpq-dev 为我工作。感谢您的提示。 对我来说在 ubuntu LTS 10 上安装 postgresql-server-dev-8.4 确认,来自pg gem Wiki homepage:“在 Ubuntu 上,/usr/bin/pg_config 由 libpq-dev 包提供。” @Fivell 迟到了,但如果你安装了 Homebrew,brew install postgresql 会给你你需要的包。 @Fivell 在 mac 上尝试brew install postgresql【参考方案2】:

问题是 gem 依赖,所以在安装 pg 之前确保你已经安装了“libpq-dev”

Ubuntu 系统:

sudo apt-get install libpq-dev

RHEL 系统:

yum 安装 postgresql-devel

苹果机:

brew 安装 postgresql

【讨论】:

Mac 的答案是正确的。只是因为我们机器上没有安装PostgreSQL。 在 Centos 7 yum install postgresql-devel 上解决了我与 pg_config 相关的错误,以安装 'pg' .gem。顺便说一句,我选择使用刚刚发布的 PostgreSQL 10【参考方案3】:

gem install pg -- --with-pg-config=/usr/pgsql-9.1/bin/pg_config

【讨论】:

这对我有帮助(在 Centos 6.2 上) 在 OS X 上为我工作,但路径为 /Applications/Postgres.app/Contents/MacOS/bin/pg_config(我有一个独立的 Postgres.app) gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config 使用 Postgres 应用程序在优胜美地 工作。但在 Mac 上,前面加上 env ARCHFLAGS="-arch x86_64" 对我来说改变了游戏规则。 我在 OSX 10.12 中使用了gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config【参考方案4】:

@Winfieldsaid it:

pg gem 需要 postgresql 客户端 libraries 来绑定。此错误通常意味着它找不到您的 Postgres 库。要么您没有安装它们,要么您可能需要将 --with-pg-dir= 传递给您的 gem 安装。

不仅如此,您只需要--with-pg-config= 即可安装它。

在 Mac 上

如果你有机会在 mac 上通过网站包安装了 postgres,它将位于 /Applications/Postgres.app/Contents/Versions/9.3/bin 之类的地方。

所以,要么在 gem 安装中传递它:

gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

或者你set the PATH properly。由于可能太多,暂时设置PATH:

export PATH=%PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin/

【讨论】:

具体版本:gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config 在 Postgres.app 内容文件夹中有一个名为 latest 的符号链接文件夹,在 9.3 不再发布时很有用。 gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config【参考方案5】:

我没有安装 postgresql,所以我只是使用它安装了它

sudo apt-get install postgresql postgresql-server-dev-9.1

在 Ubuntu 12.04 上。

这样就解决了。


更新:

使用最新版本:

sudo apt-get install postgresql-9.3 postgresql-server-dev-9.3

【讨论】:

为我解决了这个问题,但在 Mac 上(使用自制软件)我必须运行以下命令:brew install postgresql【参考方案6】:

这在我的情况下有效:

sudo apt-get install libpq-dev

我用过:

Ubuntu 14.04.2 LTS Ruby 2.2.2 Rails 4.2.1

【讨论】:

【参考方案7】:

在这里回答: Can't install pg gem on Windows

没有 Windows 原生版本的 pg (0.10.0) 最新版本发布 昨天,但如果你安装 0.9.0 它 应该安装二进制文件 问题。

【讨论】:

【参考方案8】:

如果您在 Mac 上使用 Postgres.app,您可以像这样一劳永逸地解决这个问题:

首先gem uninstall pg,然后编辑您的~/.bash_profile~/.zshrc 文件或等效文件并添加:

# PostgreSQL bin path
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin

那么bundle installgem install pg 应该都能按预期工作。

【讨论】:

谢谢,它也可以使用 brew installed postgreSQL # PostgreSQL bin path export PATH=$PATH:/usr/local/Cellar/postgresql/9.5.0/bin/ 谢谢!我从 brew 安装的 postgres 切换到 Postgress.app 并遇到了这个问题【参考方案9】:
$ PATH=$PATH:/Library/PostgreSQL/9.1/bin sudo gem install pg

将 9.1 替换为您系统上安装的版本。

【讨论】:

这对我在mac上有所帮助,有人知道默认路径是什么以及如何更改它吗? 适用于 OS X Maveric【参考方案10】:

在 macOS (El Capitan) 上。您可以简单地使用:brew install postgresql

【讨论】:

是的!这就是我所需要的!在干净的 OS X 上安装,没有 Postgres.app【参考方案11】:

pg gem 需要 postgresql 客户端库来绑定。此错误通常意味着它找不到您的 Postgres 库。要么您没有安装它们,要么您可能需要将 --with-pg-dir= 传递给您的 gem 安装。

【讨论】:

【参考方案12】:

对于 Mac 用户

PATH=$PATH:/Library/PostgreSQL/9.4/bin/ gem install pg

这应该可以解决问题

【讨论】:

【参考方案13】:

ARCH 标志一起使用。

sudo env ARCHFLAGS="-arch x86_64" gem install pg

这解决了您遇到的相同问题。

【讨论】:

【参考方案14】: Ubuntu 20.10 (pop!_os) Ruby 2.7.2 Rails 3.1.0 PostgreSQL 12

卸载然后重新安装postgresql-clientlibpq5libpq-dev

sudo apt remove postgresql-client libpq5 libpq-dev
sudo apt install postgresql-client libpq5 libpq-dev

然后再次安装pg gem 指向/usr/lib 以找到pg 库:

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

输出(上一条命令后你应该看到的):

Building native extensions with: '--with-pg-lib=/usr/lib'
This could take a while...
Successfully installed pg-1.2.3
Parsing documentation for pg-1.2.3
Installing ri documentation for pg-1.2.3
Done installing documentation for pg after 1 seconds
1 gem installed

Gem 应该安装,然后继续正常的bundle 安装或更新:

bundle
bundle install
bundle update

【讨论】:

【参考方案15】:

我在 Linux Mint (Maya) 13 上遇到过这个问题,我通过安装 postgresql 和 postgresql-server 解决了这个问题:

apt-get install postgresql-9.1 

sudo apt-get install postgresql-server-dev-9.1

【讨论】:

【参考方案16】:

不管你运行的是什么操作系统,看看"Makefile"的日志文件看看发生了什么,而不是盲目地安装东西。

在我的情况下,MAC OS,日志文件在这里:

/Users/za/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-15/2.3.0-static/pg-1.0.0/mkmf.log

日志显示无法创建 make 文件,原因如下:

Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers

在 mkmf.log 中,您会看到它找不到完成构建所需的库。

checking for pg_config... no
Can't find the 'libpq-fe.h header
blah blah

运行"brew install postgresql" 后,我可以看到所有需要的库都在那里:

za:myapp za$ cat /Users/za/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-15/2.3.0-static/pg-1.0.0/mkmf.log | grep yes
find_executable: checking for pg_config... -------------------- yes
find_header: checking for libpq-fe.h... -------------------- yes
find_header: checking for libpq/libpq-fs.h... -------------------- yes
find_header: checking for pg_config_manual.h... -------------------- yes
have_library: checking for PQconnectdb() in -lpq... -------------------- yes
have_func: checking for PQsetSingleRowMode()... -------------------- yes
have_func: checking for PQconninfo()... -------------------- yes
have_func: checking for PQsslAttribute()... -------------------- yes
have_func: checking for PQencryptPasswordConn()... -------------------- yes
have_const: checking for PG_DIAG_TABLE_NAME in libpq-fe.h... -------------------- yes
have_header: checking for unistd.h... -------------------- yes
have_header: checking for inttypes.h... -------------------- yes
checking for C99 variable length arrays... -------------------- yes

【讨论】:

【参考方案17】:

多年来,我一直在 PG 上遇到这个烦人的问题。我创建了这个要点来提供帮助。

以下命令总是对我有用。

# Substitute Postgres.app/Contents/Versions/9.5 with appropriate version number
sudo ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.5/bin/pg_config

要点:https://gist.github.com/sharnie/5588340cf023fb177c8d

【讨论】:

【参考方案18】:

我必须在 CentOS 5.8 上执行此操作。运行 bundle install 一直导致问题,因为我无法强制它使用特定的 PG 版本。

我也不能yum erase postgresql postgresql-devel,因为依赖问题(它会删除 php、http 等)

解决方案?暂时弄乱 $PATH 以优先考虑更新 pgsql 而不是默认的:

export PATH=/usr/pgsql-9.2/bin:$PATH
bundle install

基本上,使用上面的命令,它会在/usr/bin/pg_config中的那个之前查看/usr/pgsql-9.2/bin/pg_config

【讨论】:

【参考方案19】:

如果您使用 jruby 而不是 ruby​​,则在安装 pg gem 时会遇到类似的问题。相反,您需要安装适配器:

gem 'activerecord-jdbcpostgresql-adapter'

【讨论】:

【参考方案20】:

在 Mac 上 brew install postgres THEN bundle install

【讨论】:

【参考方案21】:

我在 Linux (Pop_OS) 20.10 上使用 Ruby(和其他)的版本管理器 (asdf) 并尝试了一百万种不同的方法对其进行排序,包括上述所有

TLDR

gem install pg -v '1.2.3' -- --with-pg-config='/home/username/.asdf/installs/postgres/12.6/bin/pg_config'

找到正确版本的PG安装并指向bin目录下的pg_config

【讨论】:

【参考方案22】:

你去here看看你的pg版本是否支持Win32平台,然后用这个命令安装:

gem install pg -v 0.14.1 --platform=x86-mingw32

【讨论】:

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

无法使用 Mavericks 在我的 Mac 上安装 PG gem

Rails:在 OS X 上安装 PG gem - 无法构建本机扩展

ARM64架构(M1芯片):无法安装pg gem(使用PostgresApp)

rails 4.2.0:无法在 ubuntu 14.04 上安装 pg gem

无法安装 pg gem (Rails 3 - Cygwin) - sh: : command not found

无法使用 Postgres.app 在 Mavericks 中安装 pg gem