我正试图在Debian Wheezy上安装Gitorious。 gitorious使用捆绑器进行自动安装。
当我运行“捆绑安装”(不仅在安装gitorious时,也redmine例如)我有时会得到如下错误:
Gem::Ext::BuildError: ERROR: Failed to build gem native extension. ~/.rvm/rubies/ruby-2.1.0/bin/ruby extconf.rb creating Makefile make "DESTDIR=" clean make "DESTDIR=" compiling houdini_js_e.c compiling houdini_xml_e.c compiling houdini_html_u.c compiling houdini_html_e.c compiling houdini_uri_u.c compiling escape_utils.c escape_utils.c: In function 'rb_eu_escape_html_as_html_safe': escape_utils.c:126:2: error: assignment of read-only member 'klass' make: *** [escape_utils.o] Error 1 make failed, exit code 2 Gem files will remain installed in ~/.rvm/gems/ruby-2.1.0/gems/escape_utils-0.3.2 for inspection. Results logged to ~/.rvm/gems/ruby-2.1.0/extensions/x86_64-linux/2.1.0/escape_utils-0.3.2/gem_make.out An error occurred while installing escape_utils (0.3.2), and Bundler cannot continue. Make sure that `gem install escape_utils -v '0.3.2'` succeeds before bundling.
在这个特定的例子中,我能够通过更改给定目录中的源来修复构build错误。 (我从github中复制了最新的源代码,修复了这个问题https://github.com/brianmario/escape_utils/issues/42 )。
然后我执行“make && make install &&〜/ .rvm / rubies / ruby-2.1.0 / bin / ruby extconf.rb” 。
修好gem后怎样才能继续“捆绑安装”? 当我重新执行“bundle install”时,gem只是被重新编译和重新编译,当然也有相同的错误,完全抛弃我的修改。
我到目前为止所尝试的是:
在这样的错误之后继续“捆绑安装”的正确方法是什么?
注意:对于更具体的答案,您应该发布错误消息。 你刚刚提到
在这个特定的例子中,我能够通过更改给定目录中的源来修复构build错误。
没有指定什么是错误,以及如何暂时修复它。
检查错误日志。 由于某些不兼容性,gem扩展编译可能会失败。
如果gem已经安装在您的环境中,那么bundler将不会尝试重新安装它。 但是我看到你使用RMV,所以如果你改变gemset或Ruby版本,问题会再次发生。
最好的想法是检查错误。 如果您认为错误是一个错误,那么请提交一份报告,并提供您遵循的步骤来解决问题。
如果错误取决于您的环境,那么您需要修复它,否则问题将再次呈现,正如我所解释的。