【问题标题】:Rails - Gem Error while installing pg (1.1.3), and Bundler cannot continueRails - 安装 pg (1.1.3) 时出现 Gem 错误,并且 Bundler 无法继续
【发布时间】:2018-09-14 21:08:40
【问题描述】:

我对 Rails 还是很陌生。我正在尝试推送到 Heroku,但我遇到了错误。

第一个错误是当我运行 Bundle Install 时收到以下错误消息:

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

我已尝试运行此命令

gem install pg -v '1.1.3'

但它失败并给了我这个错误信息:

"错误:安装 pg 时出错: 错误:无法构建 gem 原生扩展。”

有没有人可以解决这个问题?

【问题讨论】:

  • 您使用的是哪个版本的 Rails?我记得,并非所有版本的 pg gem 都与所有版本的 Rails 兼容。
  • 确保你的机器上安装了 postresql
  • 您使用的是什么操作系统?如果您使用的是 mac,那么您可能需要更新 XCode。
  • 您可能还需要停止并重新启动 Postgres,或者卸载并重新安装它
  • 我使用的是 Rails 5.1.4

标签: ruby-on-rails


【解决方案1】:

我遇到了完全相同的问题,并通过运行 sudo apt install postgresql-contrib libpq-dev 解决了它。然后 bundle 工作得很好。

【讨论】:

  • 这对我有用!我应该注意我正在使用 Windows 子系统 for Linux (WSL) - 所以对于任何面临 WSL 类似问题的人来说,这确实有助于解决它! :)
  • 这对我来说也适用于带有 Rails 6 的 Ubuntu 18.04。非常感谢。
  • 像魅力一样工作!
  • sudo apt install libpq-dev 对我来说已经足够了
【解决方案2】:

如果你使用的是 OSX,你可以尝试运行

brew install postgresql

然后安装 gem

【讨论】:

    【解决方案3】:

    我遇到了同样的问题。我正在使用 Ubuntu。我使用这个Ubuntu guide 安装了 Postgres。安装 Postgres 后,我运行此代码 sudo apt install postgresql-contrib libpq-dev 然后捆绑安装。

    【讨论】:

      【解决方案4】:

      TL;DR;如果您使用 PostgresAPP 而不是 BREW 安装 Postgres,那么问题可能是您的 $APTH 中没有 postgres bin 文件夹

      解决方案是找到 Posgres 应用程序安装文件夹并在其中的 /bin 文件夹中。

      在我的情况下,如果我运行 which postgres 不起作用,这意味着我的 $PATH 中没有它,所以我所做的就是导航到:cd /Applications/Posgres.app,然后到 Contents,然后到 @ 987654324@ 直到找到latest 文件夹:

      /Applications/Postgres.app/Contents/Versions/latest/bin

      现在,我可以通过提供我的 Postgres 应用程序安装的 bin 文件夹的路径来安装 PG GEM

      最后,在我运行的 Rails 项目根目录的终端中,我提供了 GEM 安装程序的 postgres 配置文件路径:

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

      【讨论】:

      • 谢谢,这对我有用!
      【解决方案5】:

      尝试像这样使用 pg-config 进行安装:
      gem install pg -v 1.1.3 -- --with-pg-config=/usr/pgsql-9.X/bin/pg_config

      在 pg-config 路径中​​提及安装在您系统中的 posgtres 版本。

      【讨论】:

      • 我有10.0版本,我可以再问你一个问题吗? 10.0 的正确命令是 gem install pg -v 1.1.3 -- --with-pg-config=/usr/pgsql-10.0.X/bin/pg_config ?
      • gem install pg -v 1.1.3 -- --with-pg-config=/usr/pgsql-10.0/bin/pg_config 没有 X
      • 使用which 将路径直接传递到命令中的变体:gem install pg -v 1.1.3 -- --with-pg-config=$(which pg_config) 注意:您也可以使用反引号代替$(),但很难尝试格式化SO 上带有反引号的代码块(因为代码标记使用反引号)
      【解决方案6】:

      接受的答案不正确。如果您安装了 Cesar Faria 回答中提到的 postgresql-contrib 和 libpq-dev ,并且仍然遇到相同的错误,则很可能您错过了被认为对构建 Debian 软件包至关重要的软件包列表。 build-essential 包中包含的所有包。因此,您需要做的就是消除该错误是下面的命令。

      sudo apt install libpq-dev build-essential
      

      【讨论】:

        【解决方案7】:

        以下内容仅适用于您的本地环境:

        注意:更新以下命令以匹配您的版本postgresql/13.2/...

        > brew install postgres
        > sudo gem install pg -v '1.1.4' --source 'https://rubygems.org/' -- --with-pg-config=/usr/local/Cellar/postgresql/13.2/bin/pg_config
        

        另外,请确保启动您的服务器 > pg_ctl -D /usr/local/var/postgres start

        【讨论】:

          【解决方案8】:

          Postgresql 需要在本地才能安装 gem pg。试试这个

          brew install postgresql
          

          以及重新安装包

          bundle install
          

          或 如果你使用的是 yum。试试这个

          sudo yum install postgresql-devel
          

          【讨论】:

            猜你喜欢
            • 2014-01-12
            • 2018-04-05
            • 2020-05-07
            • 2021-05-13
            • 2017-01-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多