通过安装了 Vagrant sudo apt-get install vagrant
,每次我尝试运行某些 vagrant 命令时,例如vagrant init precise32 http://files.vagrantup.com/precise32.box
我收到以下错误:
/home/novito/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- log4r (LoadError)
from /home/novito/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
from /usr/bin/vagrant:2:in `<main>'
不确定为什么 rvm 会参与到这里,但是好吧,我希望你们能指导我如何解决这个问题。
答案1
当您使用 Vagrant 安装时,apt-get
它会为标准 Ubuntu 打包的 Ruby 版本安装所有必需的依赖项。但您的错误消息表明,当您运行时,vagrant
它试图使用由 RVM 管理的 Ruby 版本(及其 Gems),而不是系统版本,并且您的 Ruby 版本至少缺少一个依赖项log4r
。
我认为您有以下几种选择:
- 通过运行类似默认重置 RVM 的程序恢复使用系统(标准 Ubuntu)版本的 Ruby
rvm use system --default
,并且仅在需要时更改 Ruby 版本。 - 运行Vagrant的时候就切换回系统版本,所以在同一个shell中
rvm use system
运行之前先运行一下。vagrant
- 确定 Vagrant 所依赖的所有 Ruby Gems,并手动将它们安装在 RVM 管理的 Ruby 安装中。不过,这种方法比较麻烦。以前可以将 Vagrant 本身安装为 Ruby Gem,因此您可以将其安装在 RVM 管理的 Ruby 安装中,但现在不再支持这种方法。
查看RVM 命令选项有关控制您正在使用的 Ruby 版本的更多详细信息,请参阅文档。
答案2
在我从下载页面错误消失。
答案3
我也遇到过这个问题。事实证明,显然你需要 ruby 1.9.3。我已从 2.0.0 源代码安装了 Vagrant,并且发生了上述错误,直到我使用 ruby 1.9.3 重新安装了 gem。
答案4
我在家里安装了一个旧的自定义 ruby 环境 ( ~/.rbenv
),这显然会覆盖所有默认的系统 Ruby 包。当我删除该文件夹时,Vagrant 开始正常工作。