【问题标题】:Rails 3 - can't install pg gemRails 3 - 无法安装 pg gem
【发布时间】:2012-03-28 22:50:48
【问题描述】:

当我尝试运行捆绑(捆绑安装)时,我总是得到

Installing pg (0.13.2) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /Users/ryan/.rvm/rubies/ruby-1.9.2-p290/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/ryan/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
    --with-pg
    --without-pg
    --with-pg-dir
    --without-pg-dir
    --with-pg-include
    --without-pg-include=${pg-dir}/include
    --with-pg-lib
    --without-pg-lib=${pg-dir}/lib
    --with-pg-config
    --without-pg-config
    --with-pg_config
    --without-pg_config


Gem files will remain installed in /Users/ryan/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2 for inspection.
Results logged to /Users/ryan/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2/ext/gem_make.out
An error occured while installing pg (0.13.2), and Bundler cannot continue.
Make sure that `gem install pg -v '0.13.2'` succeeds before bundling.

我使用的是 Mac OS X 10.6,安装的 PostgreSQL 版本是 9.1。我发现问题出在 libpq-dev 中,我该如何安装/修复它?

【问题讨论】:

  • 你是如何在你的 mac 上安装 postgres 的?
  • this方式
  • on_click 安装程序?弗林克?还是 MacPort?
  • 我尝试通过这种方式安装它:sudo port install libpq-dev,但另一个问题 - Error: Port libpq-dev not found To report a bug, see <http://guide.macports.org/#project.tickets>。太可怕了,还有一些问题……
  • 看到这个问题:[这里][1] [1]:stackoverflow.com/questions/10321189/…

标签: ruby-on-rails macos postgresql-9.1 pg libpq


【解决方案1】:

如您的错误日志中所述,您需要将路径传递给 pg_config。尝试使用以下命令安装 gem:

gem install pg -- --with-pg-config= 'PATH_TO_YOUR_PG_CONFIG'

如果您不确定您的 pg_config 在哪里,并且假设您在 Linux 或 Mac 上,您可以运行以下命令:

which pg_config

根据您安装 postgres 的方式,您的 pg-config 可以位于不同的位置。

【讨论】:

  • 请注意,来自 Postgres 站点的二进制包不包含开发标头或 pg_config 程序。
  • 这里的二进制包:enterprisedb.com/products-services-training/pgdownload#osx 最肯定确实包含pg_config(例如,在/Library/PostgreSQL/9.1/bin/pg_config 用于9.1.x)和开发头文件。这是我用来测试开发中的pg gem。
  • which pg_config 不会比 find / -name pg_config 快吗?
  • 对你的命令行参数做了一个小的调整。用您当前的版本替换版本应该可以正常工作。这是我的命令行: sudo env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-include=/Library/PostgreSQL/9.1/include/ --with-pg-lib=/Library/PostgreSQL/9.1 /lib/
  • 在 OSX 上,您也可以使用 brew 通过brew install libpqxx 获取标头,一切都会好起来的。
【解决方案2】:

如果您在 Linux 上运行,您可能会对对我有用的东西感兴趣:

sudo apt-get install postgresql
sudo apt-get install libpq-dev

然后

gem install pg

然后

bundle install

源代码:http://wikimatze.de/installing-postgresql-gem-under-ubuntu-and-mac

【讨论】:

  • 谢谢,就我而言 - 无需运行 bundle gem install pg
  • 在 2013 年 11 月为我工作,运行 Ubuntu 13.04!
  • 当它显然是针对错误的操作系统时,为什么会有如此多的支持?
  • @sevenseacat 它清楚地说明了它应该使用的操作系统。很明显,很多使用 Linux 操作系统的人在研究这个问题时都会找到这个答案。
  • 如果您使用存储库,这应该可以工作。显然,如果您从源代码编译它将不起作用。但在使用存储库时,它在 Ubuntu 14.04 上运行良好。
【解决方案3】:

你只需要安装libpq-dev:

sudo apt-get install libpq-dev

那么 gem 应该可以正常安装了。

【讨论】:

  • 就我而言,只有这有帮助。谢谢!
【解决方案4】:

我遇到的问题是,由于某种原因,它试图使用 /usr/bin/gcc-4.2 进行编译。我通过更改 mkmf.rb(我在堆栈跟踪中看到)中的 try_cpp 来发现失败的编译行引发异常。

我将 gcc 软链接到 gcc-4.2 并且它起作用了:

sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2

为什么要尝试使用 gcc-4.2?不知道。

实际编译行:

/usr/bin/gcc-4.2 -E -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/x86_64-darwin11.4.0 -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/ruby/backward -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I/usr/local/Cellar/postgresql/9.1.4/include  -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration  -fno-common -pipe  conftest.c -o conftest.i (RuntimeError)

【讨论】:

    【解决方案5】:

    有关有效的 OSX 解决方案,请参阅本指南 http://krugerdavid.com/journal/how-to-install-xcode-homebrew-git-rvm-postgresql-ruby-1-9-3-on-snow-leopard/

    它将引导您使用自制软件安装 PostgreSQL。在 OSX 10.8.3、PostgreSQL 9.2.3 和 Ruby 2.0.0-p0 上测试并为我工作

    【讨论】:

      【解决方案6】:

      如果您使用的是Postgress.app,那么您需要访问它的command-line tools。在您的终端或PATH profile 中输入以下行:

       PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"
      

      gem install pg 现在应该可以工作了。 (这对我有用。)

      注意新版本路径如下:

      /Applications/Postgres.app/Contents/Versions/<version>/bin
      

      【讨论】:

      • 非常感谢!我花了半个小时浏览那些不起作用的东西,最后发现它被埋在这里。 :D
      • 不需要 brew 的绝佳解决方案。
      • 请注意 Postgre.app 补丁在 93 版本中发生了变化。现在是:/Applications/Postgres93.app/Contents/MacOS/bin
      • 这对我有用,虽然我的 bin 在一个非常不同的地方 -> /Library/PostgreSQL/9.3/bin
      • 如果你使用 Postgres.app,现在是 /Applications/Postgres.app/Contents/Versions/9.3/bin 9.3.5
      【解决方案7】:

      首先,卸载所有 Homebrew 版本。 --force 选项使其卸载所有版本。

      brew rm postgresql --force
      

      为您的版本相应地更改路径。

      sudo /sbin/SystemStarter stop postgresql-8.4
      sudo rm -rf /Applications/PostgreSQL\ 8.4
      sudo rm -rf /etc/postgres-reg.ini
      sudo rm -rf /Library/StartupItems/postgresql-8.4
      sudo rm -rf /Library/PostgreSQL/8.4
      sudo dscl . delete /users/postgres
      

      编辑 /etc/profile 并删除所有引用“postgres”的行。

      nano /etc/profile
      

      安装 PostgresSQL

      brew update
      brew install postgresql
      

      安装 PG GEM

      gem install pg
      

      就是这样。问候。

      【讨论】:

        【解决方案8】:

        我遇到了同样的问题,但我的 Postgres 安装在

        /Library/PostgreSQL/9.3

        更新了 ~/.bash_profile 添加:

        export PATH=/Library/PostgreSQL/9.3/bin:$PATH
        

        打开一个新终端,运行bundle update,它也对我有用。谢谢阿里。

        【讨论】:

        • 但我工作需要检查版本然后导出 PATH=/Applications/Postgres.app/Contents/Versions/9.4/bin:$PATH
        【解决方案9】:

        您可以首先通过转到 lib 文件来检查您的终端中是否有 postrgresql 文件。去 cd ~/opt/local/lib/ 然后输入 ls 和 enter 按钮。这将向您显示位于 lib 目录中的所有文件的列表。

        1.如果你没有postreseql,你可以通过macports 下载。 sudo port install postgresql93 @9.3.2_1

        现在 cd 回到您尝试捆绑安装的文件夹中

        1. 让您的 pg 与您已经或刚刚下载的 postgesql 文件一起工作 gem install pg -- --with-pg-config=/opt/local/lib/postgresql93/bin/pg_config

        现在运行 捆绑安装

        【讨论】:

          【解决方案10】:

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

          $ brew install postgresql

          如果你没有,下载在你的终端输入这个:

          ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

          【讨论】:

            【解决方案11】:

            您可以设置构建配置选项bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config 并使用gem install pg 而不使用任何选项(pg_config 的路径对您来说可能不同,此路径适用于 Postgresapp 9.3.5.0)

            【讨论】:

              【解决方案12】:

              按照安装后的说明进行操作:http://postgresapp.com/documentation/configuration-ruby.html

              要安装 pg gem,请确保您已正确设置 $PATH(在 http://postgresapp.com/documentation/cli-tools.html 中指定),然后运行

              sudo ARCHFLAGS="-arch x86_64" gem install pg

              强烈建议阅读这两页。只是略过它们,失去了我生命中的 1 小时。阅读它们,问题解决了。

              【讨论】:

              • 适用于 OSX 10.9.5,默认 ruby​​ 版本 2.0,rbenv 本地版本 1.9.3。
              • 适用于 OSX 10.11 谢谢
              • 适用于 OSX 10.11.4。谢谢!!
              【解决方案13】:

              我在我的 openSUSE13.1 KDE 机器上遇到了同样的问题。在遇到这个问题之前,我只使用zypper 命令安装了包postgresqlpostgresql-server。然后又安装了 2 个包:

              [arup@to_do_app]$ sudo zypper in postgresql-devel postgresql-contrib
              root's password:
              Loading repository data...
              Reading installed packages...
              Resolving package dependencies...
              #....
              

              然后,我又跑了bundle install,成功了!!!

              【讨论】:

                【解决方案14】:

                搜索 libpq:

                brew search libpq
                

                应该输出libpqxx

                然后尝试安装它:

                brew install libpqxx
                

                【讨论】:

                  【解决方案15】:

                  在 Fedora 上:

                  dnf install postgresql-devel
                  

                  【讨论】:

                    【解决方案16】:

                    在 El Capitan 上对我有用的是将 ruby​​ 从系统默认升级到 2.3.1 似乎找到了 pg gem 所需的正确库。

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2016-03-27
                      • 1970-01-01
                      • 2013-05-21
                      • 2013-02-20
                      • 2015-03-16
                      • 1970-01-01
                      相关资源
                      最近更新 更多