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


103

我正在尝试安装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 ...否找不到'libpq-fe.h标头 * extconf.rb失败*由于某些原因(可能缺少必要的库和/或标头)而无法创建Makefile。检查mkmf.log文件以获取更多详细信息。您可能需要配置选项。

提供的配置选项:--with-opt-dir --without-opt-dir --with-opt-include --without-opt-include = $ {opt-dir} / include --with-opt-lib-没有-opt-lib = $ {opt-dir} / lib --with-make-prog --without-make-prog --srcdir =。--curdir --ruby = /用户/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} /

宝石文件将保留安装在/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链接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是不可写的。您应该更改其权限。

请帮助

注意:我已经安装了特立独行的命令行工具。


如果我使用自制软件卸载并尝试重新安装,则会收到此错误:

==>下载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的gem,请参阅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:内置4.9分钟建立2831个文件,38M


解:

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

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

然后

brew链接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

Answers:


251

如果要避免使用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/'

11
请注意,您仍然可以通过设置config env变量来使用捆绑程序:export CONFIGURE_ARGS="with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config"
film42 2013年

8
如果您使用的是Postgres 9.3(今天是最新的),则可以执行以下操作: gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
cavneb 2013年

使用Postgres93.app可以工作,但是必须将bin路径添加到PATH env变量以捆绑安装。
mkhatib

5
必须使用gem install pg -- --with-pg-config=/Applications//Postgres.app/Contents/Versions/9.3/bin/pg_config
StevenNunez,2014年

1
谢谢!我收到警告:无法链接postgresql。取消链接...错误:无法符号链接文件:...是不可写的。您应该更改其权限。在我brew install / link postgresql之后,一切都是brew错误。安装转到:链接/usr/local/Cellar/postgresql/9.3.4 ...在我的情况下,这是一个非常确定的文件夹,使用以下命令下载pg和gem安装它解决了问题,谢谢!!!!
d1jhoni1b 2014年

74

使用brew获得 postgresql

brew install postgresql

检查已安装的brew中是否包含pg_config。我发现我的

/ usr / local /地窖/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

完成后,pg使用

env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/Cellar/postgresql/9.3.3/bin/pg_config

2
在尝试了许多不同的事情之后为我工作。我只需要确保使用正确的版本号(就我而言为9.3.5_1)!
2014年

1
使用ls /usr/local/Cellar/postgresql/9.*/bin/pg_config找到真正的路径和组合env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=$(ls /usr/local/Cellar/postgresql/9.*/bin/pg_config)
加斯帕Grann劳尔森

关于此处发生的情况的更详细描述deveiate.org/code/pg/README-OS_X_rdoc.html
朱莉娅·乌萨诺瓦

35

我无法通过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


2
这可行,但是请注意,有时Postgres.app被安装为Postgres <NN> .app,其中NN是版本号。
nimrodm

11

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

$ brew安装postgresql


1
这对我gem install pg
有用

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,并希望它能以与对我相同的方式为您工作。


9

对我来说,在优胜美地上,我不需要指定pg_config路径。以下完成了它。

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

似乎架构标志是关键。


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 的共存信息,然后再安装MacPorts


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再次运行。


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

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,但仍然无法通过捆绑安装进行安装,这很痛苦,因为我不知道在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


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

3

解决此问题最简单的方法是使用Postgres.app并设置我的env var,这样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

2

这对我有用:

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

2

就我而言,我卸载了通过homebrew安装的版本,并切换到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 

2

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


这对于捆绑安装也很有效,例如:ARCHFLAGS="-arch x86_64" bundle install
d4n3

1

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

brew install postgres

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

bundle install

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

which psql

弄清楚我的postgres的安装位置,它返回了

/usr/local/bin/psql

在再次运行捆绑安装之前,我必须通过运行以下命令将全局路径更改为build.pg。

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

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



1

Xcode 5.1.1在10.9.3上对我有用的是:

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

我需要pg 0.17.1


1

对于任何迷失的灵魂,仍然存在无法解决的问题,并brew安装了红宝石postgres。请按照以下步骤进行操作:

  • 确保ruby未安装带有该--universal标志的版本。
    • 这是最困难的事情,我认为--universal这是问题的最终根源。
  • 确保已postgresql使用initdb和正确初始化createdb命令(在其他位置查找执行此操作的步骤)。
  • 确保Xcode(可选)并且command line tools已安装;在终端上:
    • xcode-select --install
    • sudo xcodebuild -license (如果已安装Xcode)或打开应用程序并接受许可协议。
    • 重新启动电脑
  • which rubywhich gemwhich 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 错误

1

首先找到pg_config的位置

sudo find / -name "pg_config" -print

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

然后尝试安装以下内容

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

如果这不起作用,则尝试检查以哪种方式安装了postgresql

brew / mac端口/设置

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

谢谢。

内存


0

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

如果您运行brew doctor,它将告诉您,可能您安装了某些未安装brew的东西,从而更改了某些文件夹的权限,因此,您需要将权限更改回该文件夹。

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

sudo chown [yourusername] man7

然后:

brew link postgres

希望能帮助到你!


0

同样,在安装Mavericks之后,“捆绑更新”在pg gem上引发了错误,该错误仅在生产环境中使用,而不在本地使用。

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

解决方法是先“ brew卸载postgresql”,然后“ brew安装postgresql”。之后,我立即能够成功运行“捆绑更新”



0

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


0

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

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

而已。


-1

Postgres 9.4:

gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/Versions/9.4/bin/pg_config

稍作解释将是很好的选择,以避免在其他19个答案中泛滥成灾。
布拉德·科赫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.