无法 vagrant 安装插件:尽管已安装 gem 依赖项,但仍失败

无法 vagrant 安装插件:尽管已安装 gem 依赖项,但仍失败

我正在尝试安装vagrant-vbguest在 cygwin 64 中在 Windows 7 中插件。

$ vagrant plugin install vagrant-vbguest
Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Bundler, the underlying system Vagrant uses to install plugins,
reported an error. The error is shown below. These errors are usually
caused by misconfigured plugin installations or transient network
issues. The error from Bundler is:

An error occurred while installing json (1.8.1), and Bundler cannot continue.
Make sure that `gem install json -v '1.8.1'` succeeds before bundling.

执行建议的步骤会导致:

$ gem install json -v '1.8.1'
Building native extensions.  This could take a while...
Successfully installed json-1.8.1
1 gem installed
Installing ri documentation for json-1.8.1...
Installing RDoc documentation for json-1.8.1...

然后运行第一个命令以同样的方式失败。

答案1

如果您将 Vagrant 安装在包含空格的文件夹中,则可能会发生这种情况。例如,C:\Program Files\HashiCorp\Vagrant而不是默认的C:\HashiCorp\Vagrant

有两种解决方案可供您使用:

  • 将 Vagrant 重新安装到没有任何空格的文件夹(例如默认安装文件夹)
  • 修改 PATH 环境变量,使用旧文件夹短名称代替带空格的文件夹。例如,Program FilesbecomesPROGRA~1Program Files (x86)become PROGRA~2(在大多数情况下,您应该自己验证这一点,方法是输入这些路径并验证这两个短名称是否映射到我指定的相同文件夹)。

要修改环境变量,请转到控制面板、系统、高级系统设置,单击高级选项卡,然后单击窗口底部的环境变量按钮。在系统变量框架中,选择 Path 变量,然后单击编辑。从那里,更改 Vagrant bin 的路径以使用短名称代替带空格的文件夹。就我而言,由于我在Program Files (x86)目录中安装了 Vagrant,所以我的 Path 变量如下所示:

[semi-colon delimited list of other paths];C:\PROGRA~2\HashiCorp\Vagrant\bin

完成此操作后,打开新的命令提示符并再次尝试安装插件。

答案2

您可以在本地安装该插件。

  • 从以下网址下载插件https://rubygems.org/并将其存储在某个地方(C:\somewhere
  • 在插件位置,执行以下命令:

    C:\somewhere>vagrant plugin install vagrant-vbguest-0.10.0.gem
    

答案3

Vagrant 自带嵌入式 ruby​​,不使用系统 ruby​​。因此,您需要使用嵌入式 gem 实用程序安装/重新安装 gem。

例如在我的 OS X 上:

~ ->  /Applications/Vagrant/embedded/bin/gem list

*** LOCAL GEMS ***

bigdecimal (1.2.0)
io-console (0.4.2)
json (1.7.7)
minitest (4.3.2)
psych (2.0.0)
rake (0.9.6)
rdoc (4.0.0)
test-unit (2.0.0.0)

找到 Vagrantgem并尝试再次运行安装。

相关内容