无法安装 pg gem (Rails 3 - Cygwin) - sh: : command not found

Posted

技术标签:

【中文标题】无法安装 pg gem (Rails 3 - Cygwin) - sh: : command not found【英文标题】:Unable to install pg gem (Rails 3 - Cygwin) - sh: : command not found 【发布时间】:2013-06-14 21:31:23 【问题描述】:

当我跑步时

$ gem install pg

我得到以下信息

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

        /usr/bin/ruby.exe 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=/usr/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 /usr/lib/ruby/gems/1.9.1/gems/pg-0.15.1 for inspection.
Results logged to /usr/lib/ruby/gems/1.9.1/gems/pg-0.15.1/ext/gem_make.out

当我跑步时

$ gem install pg -- --with-pg-config= /cygdrive/c/Program Files/PostgreSQL/9.0/bin/pg-config

我得到以下信息

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

        /usr/bin/ruby.exe extconf.rb --with-pg-config= /cygdrive/c/Program Files/PostgreSQL/9.0/bin/pg-config
Using config values from
sh: : command not found
sh: : command not found
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=/usr/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


Gem files will remain installed in /usr/lib/ruby/gems/1.9.1/gems/pg-0.15.1 for inspection.
Results logged to /usr/lib/ruby/gems/1.9.1/gems/pg-0.15.1/ext/gem_make.out

sh: : command not found”是什么意思?

这是安装失败的原因吗?

背景:

我正在使用 Cygwin 我用的是PostgreSQL的一键安装器 pg_config.exe 文件位于 C/Program Files/PostgreSQL/9.0/bin/pg-config.exe libpq-fe.h 文件位于 C/Program Files/PostgreSQL/9.0/include/libpq-fe.h

【问题讨论】:

感谢您编写了一个很好、清晰、详细的问题,让您立即清楚地知道出了什么问题以及为什么。如果可以的话,我会 +5。 【参考方案1】:

您不能混合和匹配本机 Windows 代码和 Cygwin 代码。如果您想链接到libpq,您需要cygwin 构建libpq,并且您需要确保在PATH 上找到的pg_config 版本是cygwin 版本.来自本机 Windows 构建的 pg_config 将产生 Cygwin 工具无法理解的输出,即使可以,它们也无法成功链接到本机库并使用它运行。

由于我不再使用 Cygwin,我无法就当前安装 libpq 的方式提供任何建议。大概在 Cygwin 的包管理中有一个 lib,它会被称为 postgresql-clientlibpq 等。

在这一点上,Cygwin 是 PostgreSQL 的低优先级平台。鉴于 Ruby+Rails 和 PostgreSQL 都有本机 Windows 版本,您在这方面会遇到困难,我建议您使用这两种工具的本机版本。您仍然可以使用 msys bash 在类 unix 的 shell 环境中工作,如果不能选择 MSVC++,您还可以使用 MinGW 的 gcc 生成本机 Windows 可执行文件和库。

【讨论】:

您要查找的包是libpq-devel。但是您应该知道,Rails 3.2 已经在 Cygwin Ports 存储库中以 ruby-rails 的形式提供。【参考方案2】:

这对我有用:

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

然后

gem install pg

【讨论】:

是cgywin相关的问题,所以是windows机器,不是Debian之类的

以上是关于无法安装 pg gem (Rails 3 - Cygwin) - sh: : command not found的主要内容,如果未能解决你的问题,请参考以下文章

rails 4.2.0:无法在 ubuntu 14.04 上安装 pg gem

安装 pg gem;错误:无法构建 gem 原生扩展

无法使用 Mavericks 在我的 Mac 上安装 PG gem

ARM64架构(M1芯片):无法安装pg gem(使用PostgresApp)

在 CentOS 6 上安装 pg gem

Rails:不能包含 pg_search Gem 提供的 PgSearch 模块