我正在考虑用 rbenv 替换 RVM,因为我正在使用 bundle 来管理我的 gemfile。我相信 rbenv 在管理我的 Ruby 版本方面要轻松得多,所以我卸载了 RVM 并安装了 rbenv。我使用安装了捆绑器 gem
gem install bundler
因为我们到处都需要它。然后我打开了一个项目并使用 rbenv 安装了所需的 Ruby 版本:
rbenv install 1.9.3-p194
rbenv local 1.9.3-p194
rbenv rehash
我输入ruby -v
以确保它使用的是正确版本的 Ruby,而且确实如此,所以我尝试运行 bundle,它一直运行,直到它尝试安装 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
成功了。然后我跑了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 设置为正确的版本然后运行 bundle 一样简单。我尝试了几乎所有 Ruby 版本的组合,但它不起作用。