4

我正在尝试bundle在 Mavericks 的大型项目中做一些事情,尽管这是全新安装的 rbenv,但一些 gem 已损坏或我的环境出现问题。

$ gem install debugger -v '1.5.0'
Building native extensions.  This could take a while...
ERROR:  Error installing debugger:
    ERROR: Failed to build gem native extension.

        /Users/samat/.rbenv/versions/1.9.3-p448/bin/ruby extconf.rb
checking for rb_method_entry_t.called_id in method.h... no
checking for rb_control_frame_t.method_id in method.h... no
checking for rb_method_entry_t.called_id in method.h... no
checking for rb_control_frame_t.method_id in method.h... no
Makefile creation failed
**************************************************************************
No source for ruby-1.9.3-p448 provided with debugger-ruby_core_source gem.
**************************************************************************
*** 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.
    ...

不知道我需要什么配置选项

在 mkmf 我看到类似的东西

"gcc -I/Users/samat/.rbenv/versions/1.9.3-p448/include/ruby-1.9.1/x86_64-darwin13.0.0 -I/Users/samat/.rbenv/versions/1.9.3-p448/include/ruby-1.9.1/ruby/backward -I/Users/samat/.rbenv/versions/1.9.3-p448/include/ruby-1.9.1 -I. -I/Users/samat/.rbenv/versions/1.9.3-p448/include/ruby-1.9.1/ruby-1.9.3-p448 -I'/Users/samat/.rbenv/versions/1.9.3-p448/include'  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE  -I'/Users/samat/.rbenv/versions/1.9.3-p448/include'   -O3 -Wno-error=shorten-64-to-32  -pipe   -c conftest.c"
conftest.c:3:10: fatal error: 'method.h' file not found
#include <method.h>
         ^
1 error generated.
checked program was:
/* begin */
 1: #include "ruby.h"
 2: 
 3: #include <method.h>
    ...

我使用 rbenv,

$ rbenv version
1.9.3-p448 (set by /Users/samat/Documents/bm-git/.ruby-version)
4

6 回答 6

12

调试器页面上说,如果找不到 ruby​​ 源,它将尝试安装 debugger-ruby_core_source,这实际上对我来说是失败的。我用的是rbenv,所以我按照调试器gem的说明,把它指向了rbenv源码。

gem install debugger -- --with-ruby-include=~/.rbenv/versions/1.9.3-p484/include

于 2014-01-06T14:11:57.673 回答
5

您最好使用最新版本的调试器,因为您的 Ruby 版本的问题已解决。

于 2013-10-29T11:21:07.203 回答
1

Ruby gems 和 Mavericks 存在很多问题。我发现最好的办法是使用homebrew的 apple-gcc42 编译器

brew tap homebrew/versions
brew install apple-gcc42

然后在构建 gem 时强制使用该编译器系列。我将符号链接放在我的主目录中的 bin 文件夹中

cd $HOME/bin
ln -s /usr/local/bin/c++-4.2 c++
ln -s /usr/local/bin/g++-4.2 g++
ln -s /usr/local/bin/gcc-4.2 cc
ln -s /usr/local/bin/gcc-4.2 gcc

您需要在路径上有本地 bin 文件夹。

export PATH=$HOME/bin:$PATH

那么你应该很高兴。

于 2013-10-29T20:12:40.300 回答
0

可能这会帮助你gem install debugger-linecache -v '1.1.2' -- --with-ruby-include=$rvm_path/src/ruby-1.9.3-p286/

于 2013-10-29T12:07:58.283 回答
0

有时此问题与缺少软件包有关。大多数情况下,这些文件(例如method.h)属于名为libXXX-dev.

我们很难知道包中包含什么文件。我最近遇到了一个实用程序来处理这个烦人的问题(对于那些使用apt-get包管理器的人)。该工具是apt-file,您可以按如下方式使用它:

  1. 安装:sudo apt-get install apt-file
  2. 更新 apt-file 数据库:sudo apt-file update
  3. 看文件:sudo apt-file search 'method.h'

结果可能是:

...
libcxxtools-dev: /usr/include/cxxtools/constmethod.h
libcxxtools-dev: /usr/include/cxxtools/method.h
libcxxtools-dev: /usr/include/cxxtools/unit/testmethod.h
libgcj12-dev: /usr/include/c++/4.6/gcj/method.h
libgcj13-dev: /usr/include/c++/4.7/gcj/method.h
...

debuggergem 的特殊情况下,缺少的包是 `libcxxtools-dev`

我在 Debian 3.2.54-2 x86_64 GNU/Linux

于 2014-05-17T11:33:49.160 回答
0

对我来说,这是一个许可问题。

我能够解决这个问题

须藤宝石安装调试器

如果这没有帮助,您可能不得不参与依赖兔子洞。

于 2014-06-11T04:01:03.957 回答