Ruby
繼續捆綁器安裝
我正在嘗試在 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 版本,問題將再次發生。
你能做的最好的想法是檢查錯誤。如果您認為錯誤是錯誤,請送出報告並提供您修復它所遵循的步驟。
如果錯誤取決於您的環境,那麼您需要修復它,否則問題將再次出現,正如我所解釋的那樣。