无法安装pg gem

我尝试使用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
164567 次浏览
< p >回答: 不能在Windows上安装pg gem < / p >

没有Windows本机版本 pg的最新版本(0.10.0)已经发布 昨天,但如果你安装了0.9.0它 是否应该安装二进制文件 问题。< / p >

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

我有个问题,这个方法对我很管用:

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

sudo apt-get install libpq-dev

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

$ PATH=$PATH:/Library/PostgreSQL/9.1/bin sudo gem install pg

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

我没有安装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

我必须在CentOS 5.8上这样做。运行bundle install一直导致问题,因为我不能强制它使用特定的PG版本。

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

解决方案?临时打乱$PATH以优先更新pgsql而不是默认pgsql:

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

基本上,使用上述命令,它将在/usr/bin/pg_config中的命令之前查看/usr/pgsql-9.2/bin/pg_config

你只需要去在这里看看你的pg版本是否支持Win32平台,然后使用这个命令来安装:

Gem install pg -v 0.14.1——platform=x86-mingw32

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

apt-get install postgresql-9.1


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

@Winfield 说它:

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

不仅如此,你只需要--with-pg-config=来安装它。

在Mac上

如果你碰巧也通过mac上的website bundle安装了postgres,它会在/Applications/Postgres.app/Contents/Versions/9.3/bin这样的地方。

所以,你要么在gem install中传递它:

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

正确设置PATH。因为这可能太多了,临时设置PATH:

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

Mac用户

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

这应该能奏效

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

Ubuntu系统:

Sudo apt-get安装libpq-dev

RHEL系统:

Yum安装postgresql-devel

麦克:

编译安装postgresql

这对我来说很管用:

sudo apt-get install libpq-dev

我使用:

  • Ubuntu 14.04.2 LTS
  • 2.2.2红宝石
  • Rails 4.2.1

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

gem 'activerecord-jdbcpostgresql-adapter'

如果你在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都应该正常工作。

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

ARCH标志一起使用。

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

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

在Mac上brew install postgres然后bundle install

不管你运行的是什么操作系统,都要查看"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

多年来,我一直在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

  • Ubuntu 20.10 (pop!_os)
  • Ruby 2.7.2
  • Rails 3.1.0
  • Postgresql 12

卸载并重新安装postgresql-client libpq5 libpq-dev

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

然后再次安装指向/usr/libpg gem,以找到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

我在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

如果你使用asdf来安装postgres,只需要像这样安装pg gem:

asdf global postgres <version>
gem install pg