关于ruby on rails:不可能在Mavericks上安装PG gem

Impossible to Install PG gem on my mac with Mavericks

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

Building native extensions. This could take a while... ERROR: Error
installing pg: ERROR: Failed to build gem native extension.

1
/Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/bin/ruby 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=/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 files will remain installed in
/Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0/gems/pg-0.17.0
for inspection. Results logged to
/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,我会得到以下警告:

Warning: postgresql-9.2.4 already installed, it's just not linked

如果我尝试链接

brew link postgresql Linking /usr/local/Cellar/postgresql/9.2.4...
Warning: Could not link postgresql. Unlinking...

Error: Could not symlink file:
/usr/local/Cellar/postgresql/9.2.4/share/man/man7/WITH.7
/usr/local/share/man/man7 is not writable. You should change its
permissions.

请帮忙

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

如果使用自制卸载并再次尝试安装,则会出现以下错误:

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

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

==> Patching patching file src/pl/plpython/Makefile patching file 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
==> Caveats

Build Notes

If builds of PostgreSQL 9 are failing and you have version 8.x
installed, you may need to remove the previous version first. See:
https://github.com/mxcl/homebrew/issues/issue/2510

Create/Upgrade a Database

If this is your first install, create a database with: initdb
/usr/local/var/postgres -E utf8

To migrate existing data from a previous major version (pre-9.2) of
PostgreSQL, see:
http://www.postgresql.org/docs/9.2/static/upgrading.html

Loading Extensions

By default, Homebrew builds all available Contrib extensions. To see a
list of all available extensions, from the psql command line, run:
SELECT * FROM pg_available_extensions;

To load any of the extension names, navigate to the desired database
and run: CREATE EXTENSION [extension name];

For instance, to load the tablefunc extension in the current database,
run: CREATE EXTENSION tablefunc;

For more information on the CREATE EXTENSION command, see:
http://www.postgresql.org/docs/9.2/static/sql-createextension.html For
more information on extensions, see:
http://www.postgresql.org/docs/9.2/static/contrib.html

Other

Some machines may require provisioning of shared memory:
http://www.postgresql.org/docs/9.2/static/kernel-resources.html#SYSVIPC
When installing the postgres gem, including ARCHFLAGS is recommended:
ARCHFLAGS="-arch x86_64" gem install pg

To install gems without sudo, see the Homebrew wiki.

To have launchd start postgresql at login:
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents Then to load postgresql now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist Or, if you don't
want/need launchctl, you can just run:
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start Warning: Could not link
postgresql. Unlinking... Error: The brew link step did not complete
successfully The formula built, but is not symlinked into /usr/local
You can try again using `brew link postgresql'
==> Summary ?? /usr/local/Cellar/postgresql/9.2.4: 2831 files, 38M, built in 4.9 minutes

解决方案:

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

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

然后

brew link postgresql Linking /usr/local/Cellar/postgresql/9.3.1... 421
symlinks created

最后:

sudo ARCHFLAGS="-arch x86_64" gem install pg

Fetching: pg-0.17.0.gem (100%) Building native extensions. This could
take a while... Successfully installed pg-0.17.0


如果您想避免使用MacPorts,可以下载Postgres应用程序并将其放到应用程序目录中。

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

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

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

1
gem install pg -- --with-pg-include='/Applications/Postgres.app/Contents/Versions/latest/include/'


使用BREW获取postgresql

1
brew install postgresql

检查安装的BREW中是否有pg_配置。我找到了我的

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

检查通过:

1
2
$ ls /usr/LOCAL/Cellar/postgresql/9.3.3/bin/pg_config
> /usr/LOCAL/Cellar/postgresql/9.3.3/bin/pg_config

完成后,用

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


我无法通过MacPorts安装Postgres。相反,我安装了postgres.app。并称之为

1
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


这是另一种选择,以防您想直接使用PostgreSQL安装程序。在升级到小牛队之后,你必须先跳过几个圈。我是这样做的:

首先安装xcode命令行工具:

1
xcode-SELECT --install

下载并安装最新版本的PostgreSQL(9.3.1),在我的例子中,我只是使用了图形安装程序。以下是下载页面的链接:

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

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

1
/Library/PostgreSQL/9.3

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

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

如果您将Postgres安装到其他位置,那么您需要修复pg_配置文件的路径。

如果它抱怨在安装pg gem时丢失了"libpq.5.dylib"文件,则需要创建指向此文件实际位置的符号链接。Postgres正在您的/usr/local/lib/目录中查找它,因此在其中创建一个符号链接,并将其重定向到实际位置。在我的案例中,我必须运行:

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

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


如果您有自制啤酒,只需键入:

$ brew install postgresql


对于我来说,在约塞米蒂,我不需要指定pg_config路径。下面完成了。

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

似乎架构标志是关键。


把丢失的--with-pg-config放在bundler的配置文件:/Users//.bundle/config中,让你的生活更轻松。

1
2
3
4
---
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


那对我有用!(Postgres 93,Mac OX 10.9.1)1.下载@http://postgresapp.com/和

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

在我的例子中(我需要Mavericks上的pg 0.16.0),我通过MacPorts安装了PostgreSQL

1
sudo port install postgresql90

然后

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

对于最新版本,您需要扣除-v"0.16.0"

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

如果安装了自制,请在阅读有关MacPorts共存的内容之前不要安装MacPorts。


在我的例子中,如果不指定arch标志、OS X 10.10.3和PostersApp 9.4,它就不起作用。

1
sudo env ARCHFLAGS="-arch x86_64" gem install pg -- \--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config

我被困在捆绑安装上3天了。尝试了所有方法,比如添加env archflags="-arch x86_64"gem install pg---with pg config=/usr/local/cell/postgresql/9.3.5_1/bin/pg_config

我可以看到pg gem在这个命令之后被安装,但它仍然不是从bundle安装中安装的,这是一个痛苦的过程,因为我不知道在gemfile中写什么,gem'pg'除外。

最终对我起作用的是发现我的pg_config在/library/postgresql/9.3/bin/pg_config中,默认情况下,gemfile bundle安装在/usr/local/bin/pg_config中。

我刚执行了以下命令,魔法就发生了。bundle config build.pg——使用pg config=/library/postgresql/9.3/bin/pg_config


在我的例子中,我卸载了通过自制安装的版本,并切换到postgres.app(在编写时为v9.3.4.2)。

它似乎只在预先准备环境体系结构标志并指定到pg_config的路径时才起作用。您的里程可能会有所不同,所以这个答案可以帮助您改变pg_config的位置。

下面是对我有用的最后一个完整的命令:

1
2
env ARCHFLAGS="-arch x86_64" gem install pg -- \
--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

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


这就是它对我的作用:

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


《我的路easiest RESOLVE这是两个使用IP postgres.app和env vars,我看到的只是gem install pg渣厂(而不是要求的--with-pg-config标志)。

利用自制的桶

1
2
3
4
5
6
7
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

在运行关于pg gem的bundle安装时(使用mac os x mavericks),我也遇到了同样的错误。经过数小时的研究,我找到了解决办法。我用自制啤酒安装了Postgres

1
brew install postgres

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

1
bundle install

无效(错误与问题相同)。我用过

1
which psql

为了找出Postgres的安装位置,它返回

1
/usr/LOCAL/bin/psql

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

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

然后我再次运行bundle安装程序,瞧!我用的是BREW安装的Postgres。


在Xcode 5.1.1的10.9.3中,我的工作是:

1
2
3
brew UPDATE
brew install postgresql
gem install pg -v '0.17.1'

我需要0.17.1页


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

1
env ARCHFLAGS="-arch x86_64" gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config

任何outthere迷失的灵魂,还是有这个问题没有解决与鸭有一个鸭brew安装Postgres的红宝石。这里的两个确保以下步骤:

  • 确保你的版本ruby不是安装与--universal旗。
    • 这两件事是最恨的身影了,--universal是最终的根的问题。
  • 确保你有initialized postgresql恰当与initdbcreatedbcommands(看elsewhere为步这样做)。
  • 确保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/postgresrespectfully。
  • 在终端运行:

    • 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误差


我也有同样的问题,这就是我找到的解决方案。

如果您运行brew doctor,它将告诉您,您可能安装了一些没有BREW的设备,这些设备已更改了某些文件夹的权限,因此,您需要将该文件夹的权限改回给您。

/usr/local/share/man中,您可以做的是:

sudo chown [yourusername] man7

然后:

brew link postgres

希望它有帮助!


1
sudo su

然后

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

工作时间:10.10.2


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


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

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

就是这样。


第一部全_ config找到PG位置

1
sudo find / -name"pg_config" -print

答案/图书馆/冰淇淋/ 9.1 PostgreSQL /斌/在我的_ pg config配置MAC(小牛)

那么试试下面的installing之类的东西

隐藏安装PG -和- config = PG /图书馆/工作/ 9.3 /斌/ PG _ CONFIG

如果这个工作不那么试图检查PostgreSQL的路你安装了什么

布鲁门/设置/ Mac

那么你必须尝试相关期权两个一样的。

谢谢你。

RAM


同样,在安装Mavericks的"bundle update"之后,在pg gem上抛出了一个错误,该错误仅用于生产,而不是本地。

我使用BREW管理我的软件包,PostgreSQL已经安装,但我仍然收到"no pg_config"错误。

修复方法是"brew uninstall postgresql",然后"brew install postgresql"。之后,我立即成功地运行了"bundle update"


邮政9.4:

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


Postgres也为我工作。(Postgres 93,Mac OX 10.9.1)1.下载@http://postgresapp.com/,然后

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

确保在Postgres文件夹名中正确地获取版本号是非常重要的。

另外,我在另一个应用程序中尝试了这个修复方法,我不断地得到一个错误,需要一个特定版本的pg(在我的例子中是0.16.0),所以我必须在命令中添加-v"0.16.0"。