【问题标题】:Rails: Installing PG gem on OS X - failure to build native extensionRails:在 OS X 上安装 PG gem - 无法构建本机扩展
【发布时间】:2013-10-16 05:43:19
【问题描述】:

似乎很多其他人在安装 pg gem 时遇到了问题。为其他人提出的解决方案都不适合我。

我尝试安装 pg gem 和 postgres.app。 pg gem 不会安装。我得到的第一个错误是:

安装 pg (0.17.0) 时出错,Bundler 无法继续。 在捆绑之前确保gem install pg -v '0.17.0' 成功。

关于将我的 gem install 指向 pg 配置的安装建议失败并显示以下错误消息(此论坛上的许多其他人都遇到过):

Failed to build native extensions... Results logged to /Users/melanie/.rvm/gems/ruby-1.9.3-p448/gems/pg-0.17.0/ext/gem_make.out

我不知道如何找到或访问此日志文件以寻找更多线索。

当我尝试使用 sudo apt-get install 命令时,我还会收到一条错误消息(找不到命令)。在过去的 6 个小时里,我浏览了这个论坛,尝试了每条建议来让 pg 使用我的 rails 项目。

我找不到有关如何更改路径的建议,或者具体来说,找不到需要进行哪些更改的建议。我的which pg_config 返回一个文件源。我已经将它与使用该配置安装 pg 的命令一起使用。它失败了。

有很多人遇到过这个问题。许多答案建议自制。我不得不删除它,因为它引发了其他问题。

【问题讨论】:

  • 嘿,有几个问题可以帮助您解决问题: - 您使用的是 Mac,对吗?自制软件出错了吗? (ps,正如您所指出的,apt-get 仅适用于 Ubuntu(及其基于 Debian 的表亲))-您有什么 postgres 版本?尝试在你的 shell 中运行psql -v。 - 你正在运行什么红宝石版本?看起来像 1.9.3,但是ruby -v 给了你什么?
  • 我应该补充一点,我的 psql 被添加到: /Applications/Postgres-1.app/Contents/MacOS/bin/psql ;出口; psql (9.3.0) 但 psql 返回:usr/bin/psql
  • 您好,非常感谢您查看此内容。我的 psql 是 v 9.3.0 而 ruby​​ 是 v 1.9.3
  • 查看@paninapress 对 Postgres.app 的回答。它对我很有用,不需要安装另一个 Postgres 实例。

标签: ruby-on-rails postgresql macos rubygems


【解决方案1】:

我遇到了同样的问题,我解决了

gem update --system 3.0.6

【讨论】:

    【解决方案2】:

    运行brew update 然后brew install postgresql 为我工作,之后我能够运行pg gem 文件没问题。

    【讨论】:

    • 这至少是现代系统上的一个(例如 macOS Big Sur)。
    【解决方案3】:

    对于那些不感兴趣的人可以使用brew。

    1. 下载PostgreSQL应用程序。
    2. 按照 macOS 默认说明进行安装。
    3. 建议运行PostgreSQl。
    4. 运行gem install pg -- --with-pg-config=/path/to/postgress/in/your/applications/folder/`
      • 例如,在我的机器上是 /Applications/Postgres.app/Contents/Versions/12/bin/pg_config

    【讨论】:

      【解决方案4】:

      解决了! 我发现系统上缺少一些 PostgreSQL 库。 只需两步即可解决:

      brew install postgresql

      然后运行

      gem install pg

      【讨论】:

        【解决方案5】:

        在 /Applications 中安装了 Postgres 的 OSX 上,我只需运行以下命令(根据您的版本更改 0.20 和 9.4)

        gem install pg -v '0.20' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
        

        你应该有:

        构建原生扩展: '--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config' 这可能需要一段时间...已成功安装 pg-0.20。

        【讨论】:

        • 你能解释一下为什么我们必须在实际提供参数之前额外使用连字符 2 吗?
        【解决方案6】:

        我遇到了同样的错误,直到我下载了 OS X 10.9 (Mavericks) 才遇到它。唉,又是一个操作系统升级头疼的问题。

        这是我修复它的方法(使用自制软件):

        • 安装另一个构建的 Xcode 工具(在终端中输入 brew update 会提示您更新 Xcode 构建工具)
        • brew update
        • brew install postgresql

        在那之后gem install pg 为我工作。

        【讨论】:

        • 在 Mavericks 升级后尝试修复我的 Rails 数据库头痛两天后,这为我修复了,非常感谢。
        • 这对我也有用 - 在全新的 Mavericks 安装中。谢谢!
        • 感谢您拯救我的理智!
        • 仍在工作。项目在 Ruby 2.2.0 上以支持旧版应用程序,但还是一样,谢谢。
        • 1. brew update 2. brew install postgresql 3. gem install pg 4. bundle install
        【解决方案7】:

        我相信“正确”的答案是首先为 Postgres.app 正确配置 PATH,方法是将以下内容添加到 ~/.profile(.zshrc 或 ~/.zprofile,如果使用 ZSH):

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

        然后在终端中打开一个新选项卡或窗口并安装pg gem:

        ARCHFLAGS="-arch x86_64" gem install pg
        

        在此记录:

        【讨论】:

          【解决方案8】:

          简单的步骤

          1. brew install postgresql
          2. gem install pg -v 'your version'

          【讨论】:

            【解决方案9】:

            我花了一天时间解决了这个问题:

            我发现 build.pg 的全局值设置为:/opt/local/lib/postgresql91/bin/pg_config 这不是安装 postgres 的地方。

            我通过将 build.pg 的值替换为: bundle config build.pg --with-pg-config=/usr/local/Cellar/postgresql/9.4.4/bin/pg_config 这是我的 postgresql 安装位置。

            【讨论】:

              【解决方案10】:

              试试:

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

              【讨论】:

                【解决方案11】:

                我尝试了几个小时,但以下终于解决了它(我在 OS X 10.9.4 上):

                1. 安装 Xcode 命令行工具(Apple 开发者网站)
                2. brew 卸载 postgresql
                3. brew 安装 postgresql
                4. ARCHFLAGS="-arch x86_64" gem install pg

                【讨论】:

                • 谢谢。我在第 4 步中使用了 sudo,这是一件坏事吗?我该如何避免呢?
                • @Roy - 很高兴为您提供帮助 :) - 应该没问题,可能要避免使用 sudo 因为我相信它会为所有用户安装它,但如果您是系统上唯一的用户这可能没什么大不了的。
                • brew uninstall postgresql 和 brew install postgresql 在 OS X 10.10 和 10.11 上不是必需的步骤。只需gem uninstall pg(并删除所有版本),然后确保您再次bundle 或gem install pg,本机扩展将使用此 OS X 版本的新命令行工具重建。
                【解决方案12】:

                如果您使用的是 Ubuntu,请尝试安装以下 lib 文件

                sudo apt-get install libpq-dev
                

                然后

                gem install pg

                为我工作。

                【讨论】:

                • 也为我工作。我正在使用 ubuntu 13.10。
                • 只要确保输入正确即可。它不是libpg-dev;是Q不是P!我花了 10 分钟才弄清楚这一点。
                • 对于 Amazon Linux,它是 yum install postgres-devel
                • 在 Ubuntu 14 上为我工作!!
                • CentOS yum install postgresql-devel
                【解决方案13】:

                好的,我也遇到了这个问题(psql 是 v 9.3.0,ruby 是 v 2.1.2),对我有用的解决方案是首先设置捆绑配置设置:

                bundle config build.pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
                

                这个答案终于帮我弄清楚了:https://stackoverflow.com/a/9235107/3546680

                【讨论】:

                • 如果你使用 postgres.app,这个方法是首选。使用 Homebrew 可能会解决本机扩展问题,但拥有两个 postgres 应用程序会产生冲突(如端口分配)另见 Sayanees 的回答 stackoverflow.com/questions/19569031/…
                • 这绝对是 Postgres.app 的正确答案。
                • 在 Mojave 上运行良好,几分钟前尝试成功。
                【解决方案14】:

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

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

                解决方法是只使用brew uninstall postgresql,然后是brew install postgresql。之后我立即能够成功运行bundle update。

                【讨论】:

                  【解决方案15】:

                  我正在使用 OS X Mavericks(版本 10.9)

                  当我运行上述命令时,我收到以下消息:如果 PostgreSQL 9 的构建失败并且您安装了 8.x 版。

                  所以我运行以下命令:

                  ARCHFLAGS="-arch x86_64" gem install pg
                  

                  这对我有用,我希望这对某人有帮助:)

                  【讨论】:

                  • +1,我尝试了其他人,但最后我用这个解决方案通过 gem 安装了 pg。
                  • +1,同样,这也是我的解决方案,我的 postgresql 已经通过 brew 安装。感谢乔恩的帖子。
                  • n.b.如果以 root 身份安装(无论出于何种原因),sudo 会在 变量之前执行:sudo ARCHFLAGS="-arch x86_64" gem install pg
                  • 实际上,我每次运行bundle install 时都需要这个,所以我把它放在~/.bash_profile 中作为导出:)
                  猜你喜欢
                  • 2012-10-19
                  • 2013-11-01
                  • 2017-11-02
                  • 2017-01-31
                  • 2016-11-23
                  • 1970-01-01
                  • 2014-08-27
                  • 1970-01-01
                  • 2018-09-29
                  相关资源
                  最近更新 更多