首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用rbenv替换RVM --mkmf错误

用rbenv替换RVM --mkmf错误
EN

Stack Overflow用户
提问于 2012-09-03 21:23:08
回答 2查看 1.1K关注 0票数 2

我正在考虑用rbenv替换RVM,因为我正在使用bundle来管理我的gemfiles。我相信rbenv在管理我的Ruby版本时要轻量级得多,所以我卸载了RVM并安装了rbenv。我使用以下命令安装了bundler gem

代码语言:javascript
复制
gem install bundler

因为我们到处都需要它。然后我打开一个项目,并使用rbenv安装了所需的Ruby版本:

代码语言:javascript
复制
rbenv install 1.9.3-p194
rbenv local 1.9.3-p194
rbenv rehash

我进入ruby -v以确保它使用的是正确的Ruby版本,所以我尝试运行捆绑包,它一直运行到尝试安装RedCloth,然后失败:

代码语言:javascript
复制
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:

代码语言:javascript
复制
gem install RedCloth

它成功了。然后我运行了ruby -v,只是为了确保它仍然正确,然后尝试运行bundle update,同样的错误发生了:

代码语言:javascript
复制
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版本的组合,但它不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-05 16:29:03

我终于克服了这个问题。

我安装了错误版本的Ruby 1.8.7-p370。然后我运行了bundle,它有一些gem在Ruby 1.8.7上编译本地扩展,而bundle是针对1.9.3包的,所以即使我切换到1.9.3版本并再次尝试运行bundle,它也会崩溃。

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

票数 0
EN

Stack Overflow用户

发布于 2014-01-21 06:43:08

我也遇到过类似的问题。结果是,尽管我的路径前面有~/.rbenv/shims目录,但zsh将bundle的位置缓存在/usr/local/bin/bundle中。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12248765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档