无法安装 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 7yum 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 install
和gem 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-client
libpq5
libpq-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