110

我正在尝试安装 pg gem,以便再次使用我的 rails 项目。但我得到这个错误:

构建原生扩展。这可能需要一段时间... 错误:安装 pg 时出错:错误:无法构建 gem 原生扩展。

/Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/bin/ruby extconf.rb checking for pg_config... no No pg_config... trying anyway. If

构建失败,请再试一次 --with-pg-config=/path/to/pg_config 检查 libpq-fe.h... 否 Can't find the 'libpq-fe.h header * extconf.rb failed *由于某种原因无法创建 Makefile,可能缺少必要的库和/或头文件。检查 mkmf.log 文件以获取更多详细信息。您可能需要配置选项。

提供的配置选项: --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=/Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/bin/ruby --with-pg --without-pg --with-pg-config --without-pg -config --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}/

Gem 文件将继续安装在 /Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0/gems/pg-0.17.0 以供检查。结果记录到 /Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0/gems/pg-0.17.0/ext/gem_make.out

我尝试了在 stackoverflow 上找到的所有内容,但仍然出现此错误。

如果我尝试使用 brew 安装 postgresql,我会得到以下警告:

警告:postgresql-9.2.4 已经安装,只是没有链接

如果我尝试链接

brew link postgresql 正在链接 /usr/local/Cellar/postgresql/9.2.4... 警告:无法链接 postgresql。正在取消链接...

错误:无法符号链接文件:/usr/local/Cellar/postgresql/9.2.4/share/man/man7/WITH.7 /usr/local/share/man/man7 不可写。您应该更改其权限。

请帮忙

注意:我已经为 Mavericks 安装了命令行工具。


如果我使用自制软件卸载并尝试再次安装,我会收到以下错误:

==> 下载http://ftp.postgresql.org/pub/source/v9.2.4/postgresql-9.2.4.tar.bz2

################################################# ################ 100.0%

==> 打补丁文件 src/pl/plpython/Makefile 打补丁文件 contrib/uuid-ossp/uuid-ossp.c ==> ./configure --prefix=/usr/local/Cellar/postgresql/9.2.4 -- datadir=/usr/local/Cellar/postgresql/9.2.4/share/postgresql --docdir=/usr/local/Cellar/p ==> make install-world ==> 注意事项

构建说明

如果 PostgreSQL 9 的构建失败并且您安装了 8.x 版本,您可能需要先删除以前的版本。见:
https ://github.com/mxcl/homebrew/issues/issue/2510

创建/升级数据库

如果这是您的第一次安装,请使用以下命令创建数据库:initdb /usr/local/var/postgres -E utf8

要从 PostgreSQL 以前的主要版本(9.2 之前)迁移现有数据,请参阅:
http ://www.postgresql.org/docs/9.2/static/upgrading.html

加载扩展

默认情况下,Homebrew 构建所有可用的 Contrib 扩展。要查看所有可用扩展的列表,请从 psql 命令行运行:
SELECT * FROM pg_available_extensions;

要加载任何扩展名,请导航到所需的数据库并运行:CREATE EXTENSION [extension name];

例如,要在当前数据库中加载 tablefunc 扩展,运行: CREATE EXTENSION tablefunc;

有关 CREATE EXTENSION 命令的更多信息,请参阅:
http ://www.postgresql.org/docs/9.2/static/sql-createextension.html有关扩展的更多信息,请参阅:
http ://www.postgresql.org/ docs/9.2/static/contrib.html

其他

某些机器可能需要提供共享内存:
http ://www.postgresql.org/docs/9.2/static/kernel-resources.html#SYSVIPC 安装 postgres gem 时,建议使用 ARCHFLAGS:ARCHFLAGS="-arch x86_64"宝石安装 pg

要在不使用 sudo 的情况下安装 gems,请参阅 Homebrew wiki。

在登录时启动 postgresql:ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents 然后现在加载 postgresql:launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist 或,如果你不想/不需要launchctl,你可以运行:pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start 警告:无法链接postgresql。取消链接... 错误:该brew link步骤未成功完成 公式已构建,但未符号链接到 /usr/local 您可以使用 `brew link postgresql' ==> 摘要 /usr/local/Cellar/postgresql/9.2 再试一次。 4:2831个文件,38M,4.9分钟建成


解决方案:

我执行此命令以更改文件夹的权限:

sudo chown jeanosorio /usr/local/share/man/man7

然后

brew link postgresql 链接 /usr/local/Cellar/postgresql/9.3.1... 创建了 421 个符号链接

最后:

sudo ARCHFLAGS="-arch x86_64" gem install pg

获取:pg-0.17.0.gem (100%) 构建原生扩展。这可能需要一段时间... 成功安装 pg-0.17.0

4

27 回答 27

267

如果你想避免使用 MacPorts,你可以下载Postgres App并将其放入 Application 目录。

然后,指定新下载的位置pg_config

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

如果您遇到缺少标题的问题,请尝试指定include应用程序的目录:

gem install pg -- --with-pg-include='/Applications/Postgres.app/Contents/Versions/latest/include/'
于 2013-11-08T01:58:16.447 回答
78

使用 brew 获取postgresql

brew install postgresql

检查已安装的 brew 中是否有 pg_config。我在

/usr/local/Cellar/postgresql/9.3.3/bin/pg_config

通过以下方式检查:

$ ls /usr/local/Cellar/postgresql/9.3.3/bin/pg_config
> /usr/local/Cellar/postgresql/9.3.3/bin/pg_config

完成后,安装pggem

env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/Cellar/postgresql/9.3.3/bin/pg_config
于 2014-03-07T19:49:05.113 回答
37

我无法通过 MacPorts 安装 postgres。相反,我安装了Postgress.app。并打电话给

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

注意:在较新的版本中(至少在 9.3 中),路径实际上是: /Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

于 2013-11-03T19:58:18.707 回答
12

如果您有自制软件,只需键入:

$ brew install postgresql

于 2014-02-11T13:22:34.660 回答
11

对我来说,在优胜美地,我不需要指定pg_config路径。下面就搞定了。

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

似乎架构标志是关键。

于 2014-12-26T16:08:47.987 回答
10

如果您想直接使用 postgresql 安装程序,这是另一种选择。在更新到小牛队之后,您必须先跳过几个箍。这是我所做的:

先安装xcode命令行工具:

xcode-select --install

下载并安装最新版本的 PostgreSQL (9.3.1),就我而言,我只是使用了图形安装程序。这是下载页面的链接:

http://www.enterprisedb.com/products-services-training/pgdownload#osx

只需选择它为您提供的所有默认值。在我的情况下,它将 postgres 安装到以下目录,如果您将其安装到不同的目录,请记住您选择的路径,因为您很快就会需要它。

/Library/PostgreSQL/9.3

如果您现在尝试安装最新的 pg gem (0.17.0),您需要在命令行上传递几个选项。这是我使用的:

ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config

如果您将 postgres 安装到其他位置,则需要修复 pg_config 文件的路径。

如果它在尝试安装 pg gem 时抱怨缺少“libpq.5.dylib”文件,则需要创建一个指向该文件实际位置的符号链接。Postgres 正在您的 /usr/local/lib/ 目录中查找它,因此在其中创建一个符号链接并将其重定向到其实际位置。就我而言,我必须运行:

sudo ln -s /Library/PostgreSQL/9.3/lib/libpq.5.dylib /usr/local/lib/libpq.5.dylib

完成此操作后,再次尝试安装 gem,希望它能像对我一样为您工作。

于 2013-11-21T10:30:25.137 回答
5

就我而言(我需要 Mavericks 上的 PG 0.16.0),我通过MacPorts安装了 postgresql

sudo port install postgresql90

接着

gem install pg -v '0.16.0' -- --with-pg-config=/opt/local/lib/postgresql90/bin/pg_config

最新版本需要扣除 -v '0.16.0'

gem install pg -- --with-pg-config=/opt/local/lib/postgresql90/bin/pg_config

如果您安装了 Homebrew,请在阅读有关它们的共存信息之前不要安装 MacPorts

于 2013-10-31T12:47:57.030 回答
5

这对我行得通!(Postgres 93,mac ox 10.9.1)1。下载@http: //postgresapp.com/然后

gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
于 2013-12-27T21:49:27.073 回答
5

将缺少的部分--with-pg-config放在 Bundler 的配置文件中:/Users/<your_user>/.bundle/config让您的生活更轻松。

---
BUNDLE_BUILD__PG: --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
BUNDLE_BUILD__EXAMPLE_GEM: --other-configs
BUNDLE_BUILD__OTHER_EXAMPLE_GEM: --other-configs

然后bundle install再次运行。

于 2013-12-19T14:10:19.547 回答
4

我被困在我的捆绑安装上 3 天。尝试了一切,比如添加env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/Cellar/postgresql/9.3.5_1/bin/pg_config

我能够看到在这个命令之后安装了 pg gem,但它仍然没有从 bundle install 安装,这很痛苦,因为我不知道在 Gemfile 中写什么,除了 gem 'pg'

最终对我有用的是发现我的 pg_config 在/Library/PostgreSQL/9.3/bin/pg_config中,默认情况下 Gemfile 包安装在/usr/local/bin/pg_config

我刚刚运行了以下命令,神奇的事情发生了。 捆绑配置 build.pg --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config

于 2014-12-26T06:15:06.310 回答
4

在我的情况下,如果您不指定拱标志、OS X 10.10.3 和 postersApp 9.4,它就不起作用

sudo env ARCHFLAGS="-arch x86_64" gem install pg -- \--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
于 2015-05-18T06:26:04.513 回答
3

我解决这个问题的最简单方法是使用Postgres.app并设置我的环境变量以便gem install pg正常工作(而不是需要--with-pg-config标志)。

使用自制木桶

brew cask install postgres
echo 'export PG_HOME=/Applications/Postgres.app/Contents/Versions/latest' >> ~/.bash_profile
echo 'export PATH="$PATH:$PG_HOME/bin"' >> ~/.bash_profile
source ~/.bash_profile

# now it just works
gem install pg
于 2017-10-31T19:47:00.020 回答
2

就我而言,我卸载了通过自制软件安装的版本并切换到Postgres.app(在撰写本文时为 v9.3.4.2)。

它似乎只在预先设置环境架构标志并指定pg_config. 您的里程可能会有所不同,因此此答案可能有助于pg_config' 位置的变化。

这是对我有用的最终完整命令:

env ARCHFLAGS="-arch x86_64" gem install pg -- \
--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config 
于 2014-07-22T20:49:07.910 回答
2

sudo ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/bin/pg_config

于 2014-11-19T01:43:10.400 回答
2

这对我有用:

gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config
于 2014-02-18T08:58:46.643 回答
2

我在mac上使用自制软件安装了postgres。使用以下命令查找位置

which postgres
/usr/local/opt/postgresql@12/bin/postgres

使用以下命令安装 gem。在上面的路径中,只需将 postgres 替换为 pg_config,因为命令需要 pg_config 的路径。

gem install pg -- --with-pg-config=/usr/local/opt/postgresql@12/bin/pg_config
于 2020-12-24T06:44:46.603 回答
1

使用 Xcode 5.1.1 在 10.9.3 上对我有用的是以下内容:

brew update
brew install postgresql 
gem install pg -v '0.17.1'

我需要 pg 0.17.1

于 2014-05-27T15:01:49.740 回答
1

在运行有关 pg gem 的 bundle install 时,我遇到了同样的错误(使用 Mac OS X Mavericks)。经过数小时的研究,我找到了解决方案。我使用自制软件安装了 postgres

brew install postgres

安装之后,我使用 postgres 创建了一个新的 rails 应用程序。我跑了

bundle install

无济于事(得到与问题相同的错误)。我用了

which psql

找出我的 postgres 安装在哪里,它返回

/usr/local/bin/psql

在再次运行 bundle install 之前,我必须通过运行以下命令来更改 build.pg 的全局路径

bundle config build.pg --with-pg-config=/usr/local/bin/pg_config

然后我再次运行捆绑安装,瞧!我使用了 brew 安装它的 postgres。

于 2014-03-19T07:06:16.597 回答
1

在具有最新 Postgres 应用程序的 OS X Mavericks 上,使用 sudo 权限执行以下操作

env ARCHFLAGS="-arch x86_64" gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config
于 2014-08-24T11:08:52.403 回答
1

首先找到 pg_config 位置

sudo find / -name "pg_config" -print

答案是我的配置中的 /Library/PostgreSQL/9.1/bin/pg_config (MAC Maverick)

然后尝试安装类似下面的东西

gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config

如果这不起作用,请尝试检查您安装 postgresql 的方式

冲泡/mac 端口/设置

那么你必须尝试相同的相关选项。

谢谢你。

内存

于 2017-08-04T08:45:27.197 回答
1

对我来说,错误消息如下所示:

Installing pg 0.18.4 with native extensions

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

...

checking for pg_config... no

No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config

如错误消息所示,它正在尝试执行命令/脚本“pg_config”。因此,只需将其添加到 Postgres 安装所在的路径即可。就我而言,我做了:

export PATH=/Applications/Postgres.app/Contents/Versions/9.5/bin:$PATH

然后

bundle

而已。

于 2016-06-03T17:27:11.900 回答
1

对于任何迷失的灵魂仍然有这个问题没有解决并且brew安装了ruby​​ 和postgres。以下是确保以下步骤的步骤:

  • 确保您的版本ruby没有与--universal标志一起安装。
    • 这是最难弄清楚的事情,我知道--universal这是问题的最终根源。
  • 确保您已使用和命令postgresql正确初始化(在别处查找执行此操作的步骤)。initdbcreatedb
  • 确保Xcode(可选)并command line tools已安装;在终端上:
    • xcode-select --install
    • sudo xcodebuild -license(如果安装了 Xcode)或打开应用程序并接受许可协议。
    • 重新启动计算机
  • which rubywhich gem并且which postgres应该表现出来/usr/local/bin/ruby/usr/local/bin/gem并且/usr/local/bin/postgres尊重。
  • 在终端运行:

    • gem install pg -- --with-pg-config=/usr/local/bin/pg_config
    • 或者
    • env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/bin/pg_config
  • 确保所有这些步骤都得到满足,我能够解决以下错误:

    • ruby.h标头错误
    • developer tools installed first错误
于 2016-07-08T02:56:42.177 回答
0

Postgres 9.4:

gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/Versions/9.4/bin/pg_config
于 2015-04-25T22:11:51.760 回答
0

我遇到了同样的问题,这是我找到的解决方案。

如果你运行brew doctor,它会告诉你可能你已经安装了一些没有 brew 的东西,这些东西已经改变了某些文件夹的权限,因此,你需要将那个文件夹的权限改回给你。

在内部/usr/local/share/man,您可以执行以下操作:

sudo chown [yourusername] man7

接着:

brew link postgres

希望能帮助到你!

于 2014-02-22T13:25:41.640 回答
0

同样,在安装 Mavericks 后,'bundle update' 会在 pg gem 上引发错误,该错误仅用于生产而不是本地。

我使用 Brew 管理我的软件包,并且已经安装了 postgresql,但我仍然收到“no pg_config”错误。

解决方法是“brew uninstall postgresql”,然后“brew install postgresql”。之后我立即能够成功运行“捆绑更新”

于 2014-04-21T17:49:47.253 回答
0
sudo su 

然后

ARCHFLAGS="-arch x86_64" gem install pg -v '0.18'

在 10.10.2 工作

于 2015-05-14T22:38:27.030 回答
0

如果在这里尝试了所有操作后仍然无法安装,请尝试打开 Xcode 并接受许可协议。

于 2015-10-16T08:28:09.167 回答