1

所以我正在尝试安装audite gem,但遇到 rbenv 问题:

$ bundle install
Fetching gem metadata from https://rubygems.org/...
Installing audite (0.3.0)
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /opt/boxen/rbenv/versions/1.9.3-p448/bin/ruby extconf.rb
checking for mpg123.h... no
*** 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=/opt/boxen/rbenv/versions/1.9.3-p448/bin/ruby
please install mpg123 headers


Gem files will remain installed in /opt/boxen/rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/audite-0.3.0     for inspection.
Results logged to /opt/boxen/rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/audite-0.3.0/ext/mpg123/gem_make.    out

An error occurred while installing audite (0.3.0), and Bundler cannot continue.
Make sure that `gem install audite -v '0.3.0'` succeeds before bundling.

我知道这些 gem 需要 c 扩展,我用 homebrew 安装了它们。如果我进入地窖寻找自制软件,我可以看到它正在寻找的文件(mpg123.h

/opt/boxen/homebrew/Cellar/mpg123/1.15.4/include/mpg123.h

那么,有没有一种方法可以将其添加到 rbenv 环境中,而不仅仅是 sim-linking 或直接将其复制到/opt/boxen/rbenv/versions/1.9.3-p448/

4

4 回答 4

2
xcode-select --install

为我解决了。

于 2014-07-02T21:50:28.950 回答
1

我在尝试安装 audite 时遇到了同样的问题。事实证明,mkmf 编写了一个名为 mkmf.log 的文件,以更具体地告诉您它如何确定标头是否可用:

 >>> cat mkmf.log
have_header: checking for mpg123.h... -------------------- no

"xcrun cc -E -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin12.0 -I.  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE     -g -Os -pipe -fno-common -DENABLE_DTRACE  -fno-common  -pipe -fno-common    conftest.c -o conftest.i"
xcode-select: Error: No Xcode is selected. Use xcode-select -switch <path-to-xcode>, or see the xcode-select manpage (man xcode-select) for further information.
checked program was:
/* begin */
1: #include <mpg123.h>
/* end */

--------------------

原来我还没有安装 xcode;安装并运行后

xcode-select --print-path

我看到现在已经设置了路径。然后我仍然必须运行一次xcrun以同意Apple 的许可协议,但是安装安装就好了!

于 2013-12-04T11:32:57.103 回答
0

将 homebrewinclude目录添加到您的路径中,rubygems 会找到它。这不是 rbenv 的真正问题。

在默认安装中,自制软件include将软件包的所有文件夹符号链接到/usr/local/include,在您的情况下,这些文件夹应该位于/opt/boxen/homebrew/include. 看看周围,应该有一个包含所有包含的文件夹。

于 2013-10-03T14:41:46.630 回答
0

所以最后以下事情之一为我修复了它,我不确定是哪一个,因为自从我遇到这个问题以来,我已经重建并更换了几次我的机器:

  • 切换到 Ruby 2.0.0
  • 升级到 Mavericks(我相信它确实用 xcode 的东西改变了一些东西)
  • 将我的 Boxen/Brew 更新到最新版本
于 2014-09-11T19:04:52.800 回答