Ruby

繼續捆綁器安裝

  • January 18, 2014

我正在嘗試在 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.

在這個特定範例中,我能夠通過更改給定目錄中的源來修復建構錯誤。(我從 github 複製了最新的原始碼,它解決了問題https://github.com/brianmario/escape_utils/issues/42)。

然後我成功執行了*“make && make install && ~/.rvm/rubies/ruby-2.1.0/bin/ruby extconf.rb”*。

修復 gem 後如何繼續我的“捆綁安裝”?當我重新執行“捆綁安裝”時,gem 只是重新獲取並重新編譯,當然會出現相同的錯誤,完全放棄我的更改。

到目前為止我嘗試了什麼:

  • 使用“bundle package”生成記憶體並執行“bundle install –local”
  • 將編譯好的 gem 複製到 gitorious 目錄。
  • 在固定源上執行“gem install”。

在此類錯誤之後繼續“捆綁安裝”的正確方法是什麼?

注意:對於更具體的答案,您應該發布錯誤消息。你剛才提到

在這個特定範例中,我能夠通過更改給定目錄中的源來修復建構錯誤。

沒有指定錯誤是什麼以及您如何臨時修復它。

檢查錯誤日誌。gem 擴展編譯可能會因為一些不兼容而失敗。

如果 gem 已經安裝在您的環境中,則 bundler 不會嘗試重新安裝它。但是我看到您使用 RMV,因此如果您更改 gemset 或 Ruby 版本,問題將再次發生。

你能做的最好的想法是檢查錯誤。如果您認為錯誤是錯誤,請送出報告並提供您修復它所遵循的步驟。

如果錯誤取決於您的環境,那麼您需要修復它,否則問題將再次出現,正如我所解釋的那樣。

引用自:https://serverfault.com/questions/568188