首页 文章

用rbenv替换RVM --mkmf错误

提问于
浏览
2

我正在寻找用rbenv替换RVM,因为我使用bundle来管理我的gemfiles . 我相信rbenv在管理我的Ruby版本方面要轻松得多,所以我卸载了RVM并安装了rbenv . 我使用了安装bundler 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版本的组合,但它没有用 .

2 回答

  • 0

    我遇到了类似的问题 . 事实证明,即使我的路径前面有〜/ .rbenv / shims目录,zsh也会将bundle的位置缓存到/ usr / local / bin / bundle .

    解决方案只是在shell上运行 rehash (而不是 rbenv rehash ) . 这刷新了所有缓存的命令,包括bundle,之后一切顺利 .

  • 0

    我终于克服了这个问题 .

    我安装了错误版本的Ruby 1.8.7-p370 . 然后我运行了bundle,当捆绑包用于1.9.3软件包时,有一些宝石编译针对Ruby 1.8.7的本机扩展,所以即使我要切换到1.9.3版本并尝试再次运行bundle,它也会轰炸出来 .

    为了解决这个问题,我简单地删除了所有的gem,然后安装了正确版本的Ruby,然后重新运行了bundle .

相关问题