我一直在尋找用rbenv替換RVM,因爲我正在使用bundle來管理我的gemfiles。我相信,rbenv在管理我的Ruby版本方面輕了很多,所以我卸載了RVM並安裝了rbenv。我使用使用rbenv替換RVM --mkmf錯誤
gem install bundler
因爲我們需要它到處都安裝了捆綁軟件gem。然後我打開了一個項目,並使用rbenv安裝所需版本的Ruby:
rbenv install 1.9.3-p194
rbenv local 1.9.3-p194
rbenv rehash
我進入ruby -v
,以確保它是使用Ruby版本是正確的,它是,所以我試圖運行包和它跑,直到它試圖安裝RedCloth和再失敗:
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/usr/bin/ruby1.9.1 extconf.rb --with-cflags=-w
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError)
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from extconf.rb:1:in `<main>'
,提示我綁定前安裝RedCoth,所以我安裝RedCloth:
gem install RedCloth
WH ich成功了。然後我跑ruby -v
,只是爲了確保它仍然是正確的,那麼試圖運行bundle update
和同樣的錯誤發生:
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/usr/bin/ruby1.9.1 extconf.rb --with-cflags=-w
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError)
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from extconf.rb:1:in `<main>'
Gem files will remain installed in /home/ruberto/.bundler/tmp/7551/gems/RedCloth-4.2.9 for inspection.
Results logged to /home/ruberto/.bundler/tmp/7551/gems/RedCloth-4.2.9/ext/redcloth_scan/gem_make.out
An error occurred while installing RedCloth (4.2.9), and Bundler cannot continue.
Make sure that `gem install RedCloth -v '4.2.9'` succeeds before bundling.
然後我嘗試安裝不同版本的Ruby,但沒有成功有兩種。
有沒有人有想法?
我後來嘗試在我的其他項目中做同樣的事情,它似乎工作得很好。我有一個使用1.8.7的版本,就像將rbenv設置爲正確的版本,然後運行捆綁包一樣簡單。我嘗試了幾乎所有Ruby版本的組合,但它不起作用。
而不是刪除並重新安裝寶石,你可以使用'gem pristine --all',這通常可以解決更新Ruby版本時編譯問題的問題。然而,rbenv的工作方式應該爲安裝的每個Ruby版本安裝不同的gem安裝,在安裝Ruby之後應該通過'bundle install'修復。 –