关于rails上的ruby:无法使用Postgres.app在Mavericks中安装pg gem

Cannot install pg gem in Mavericks with Postgres.app

我正在尝试安装pg gem以便在我的本地机器上使用Postgres.app。 我正在经营小牛队。

Postgres.app安装并运行正常,但我无法让宝石工作。 我做了以下事情:

  • 使用Postgres.app文档中的命令'env ARCHFLAGS =" - arch x86_64"gem install pg - --with-pg-config = / Applications / Postgres.app / Contents / MacOS / bin / pg_config'
  • 更新了Homebrew并安装了Apple GCC 4.2
  • 安装了Xcode开发人员工具
  • 更新了我的$ PATH以引用Postgres.app bin和lib目录
  • 一切都没有成功。 这是我收到的具体错误消息:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Building native extensions WITH: '--with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config'
    This could take a while...
    ERROR:  Error installing pg:
        ERROR: Failed TO build gem native extension.

        /Users/Brian/.rvm/rubies/ruby-2.0.0-p353/bin/ruby extconf.rb --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config
    USING config VALUES FROM /Applications/Postgres.app/Contents/MacOS/bin/pg_config
    sh: /Applications/Postgres.app/Contents/MacOS/bin/pg_config: No such file OR directory
    sh: /Applications/Postgres.app/Contents/MacOS/bin/pg_config: No such file OR directory
    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
        --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/Brian/.rvm/rubies/ruby-2.0.0-p353/bin/ruby
        --with-pg
        --without-pg
        --with-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}/

    我很感激您提供的任何帮助。 谢谢!


    你可能有--with-pg-config的错误路径,检查它是否真的存在。

    您可以使用以下命令找到pg_config的正确路径:

    1
    find /Applications -name pg_config

    在最新的Postgres.app版本中,路径是:

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


    在我的情况下(运行Postgres.app v9.3.4.2)它似乎只在前置环境架构标志时工作:

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


    在一个全新的Mac上,这就是我必须做的事情:

  • 从应用商店安装Xcode工具
  • 打开Xcode工具并接受许可
  • 现在运行(希望是一个面向未来的命令):

    version=$(ls /Applications/Postgres.app/Contents/Versions/ | tail -1)
    gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/$version/bin/pg_config .

  • 如果遇到问题,可以通过查看mkmf.log中的实际错误来解决问题,你可以通过运行找到它(如果使用rvm):

    1
    cd ~/.rvm ; find . -name mkmf.log | grep pg


    我能用这个命令安装pg

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

    我跑步找到了自己的道路

    1
        sudo find / -name"pg_config"

    我成功安装了pg-0.17.1


    将postgress bin dir添加到路径中也可以解决问题。只需像这样添加垃圾箱。在最近的安装中,最新的符号链接确保此路径应该"稳定"以用于将来的版本升级。

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


    要解决此问题,我在终端窗口中使用以下命令使用自制软件安装了postgres:

    1
    brew install postgres

    Homebrew可以在这里找到

    http://brew.sh


    为了将来参考,我们很多人都在为新版本号发布新路径:

    目前我在/Applications/Postgres.app/Contents/Versions/中看到一个名为latest的符号链接。

    你应该能够做到:

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

    并忘记版本号。这可能不适用于每个(较旧的)版本,但我自己正在寻找可以保存和重用的代码段。


    这对我有用:

    1
    gem install pg -- --with-pg-config=`which pg_config`