【问题标题】:OS X Yosemite - Vagrant: Failed to install / update plugins (ruby invalid option -H)OS X Yosemite - Vagrant:无法安装/更新插件(ruby 无效选项 -H)
【发布时间】:2015-03-11 00:04:42
【问题描述】:

几天前,我在我的 Mac 上重新安装了 OS X Yosemite 和 Vagrant。问题是,每次我尝试更新所有插件或安装 vagrant 插件(vagrant-cachier)时,我都会收到以下错误:

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

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /opt/vagrant/embedded/bin/ruby extconf.rb 
/opt/vagrant/embedded/bin/ruby: invalid option -H  (-h will show valid options) (RuntimeError)

如果我在系统的二进制文件上安装 gem,它就可以工作。所以这似乎是内置的流浪二进制文件的问题。我也已经安装了命令行工具。我的 Vagrant 版本是 1.7.2

我已经用谷歌搜索了这个问题几个小时,但我没有发现这个问题。

我是否忘记了什么或有人有解决此问题的方法?

谢谢!

【问题讨论】:

    标签: ruby plugins gem vagrant osx-yosemite


    【解决方案1】:

    感谢您的帮助。我发现了问题。 问题是安装 Vagrant 的路径。我在 OS X 上的 SSD 分区称为“Macintosh SSD”,其中有一个空格。 我将它重命名为“MacintoshSSD”,现在它可以正常工作了。

    【讨论】:

      【解决方案2】:

      问题似乎是 ruby​​ 的“嵌入式”二进制文件对 JSON gem 中的一些旧代码不满意。或者别的什么...除了它是一种编程语言并且我安装它以使用指南针之外,我对 ruby​​ 一无所知。现在又是 Vagrant。

      无论如何,我将嵌入式 ruby​​ 移到一边,并将 OS X 的内置 ruby​​ 复制到 vagrant Embedded binaries 文件夹中。

      类似:

      sudo mv /opt/vagrant/embedded/bin/ruby /opt/vagrant/embedded/bin/ruby.2.0.0.p598
      sudo cp /usr/bin/ruby /opt/vagrant/embedded/bin/ruby.2.0.0.p481
      sudo ln -s /opt/vagrant/embedded/bin/ruby.2.0.0.p481 /opt/vagrant/embedded/bin/ruby
      sudo vagrant plugin install vagrant-vmware-fusion
      Installing the 'vagrant-vmware-fusion' plugin. This can take a few minutes...
      Installed the plugin 'vagrant-vmware-fusion (3.2.1)'!
      

      耶。

      【讨论】:

      • 也许没关系....它确实构建了插件。但现在它不会出现在我的盒子里,发出关于破碎的宝石之类的长篇大论的信息。我尝试恢复 ruby​​ 更改......将 Vagrant 的原始 p598 版本放回原处,然后它给出了一个错误,你猜怎么着...... JSON gem。
      【解决方案3】:

      直接来自 HashiCorp...这是故障排除清单:

      你好,

      非常抱歉您在安装 Vagrant 插件时遇到问题。我们知道这些问题,但我们无法将其缩小到特定原因,因为它只影响一小部分机器,我们还没有确定一个共同点。

      首先,请不要尝试使用 sudo 安装插件。这会篡改其他 Vagrant 插件的权限,导致 Vagrant 出错。

      其次,请确保您已安装 XCode 命令行工具。您可以通过运行来安装它们:

      sudo xcode-select --install
      

      并按照屏幕上的提示进行操作。

      完成这些步骤后,许多用户通过执行以下操作获得了成功:

      1. 完全卸载 Vagrant
      2. 删除 /opt/vagrant 和 /Applications/vagrant 目录。
      3. 删除 Vagrant 的存储目录 (~/.vagrant.d)。 警告:如果您 已安装其他 Vagrant 插件或 Vagrant 插件许可证, 他们将被删除!
      4. 从官方 Vagrant 安装程序重新安装 Vagrant: https://www.vagrantup.com/downloads.html
      5. 安装插件

      另外,请确保以下几点:

      • 如果 Vagrant 的路径中有特殊字符,则必须 选择不同的目录。这包括空格(如在 用户名或文件夹名称)和括号(如 C:/Program Files (x86))。不幸的是,Vagrant 使用的语言存在错误 写的是禁止在这些下编译本机扩展 情况。
      • 如果您使用的是 Mac,请确保您已接受 XCode 许可协议。在某些情况下,原生扩展将无法 编译,因为 XCode 禁止安装 未接受的许可协议。要接受许可协议,只需 打开 XCode - 系统会提示您是否需要接受 协议。

      如果执行这些步骤后问题仍然存在,请提供插件安装的debug 日志的输出。

      如果您有任何问题,请告诉我。

      最好, 赛斯

      【讨论】:

      • 我发现倒数第二个“子弹”是我的问题……我的 Mac 上的主文件夹的路径中有一个空格。因此,我将 VAGRANT_HOME 环境变量设置为指向系统上路径中没有空格的位置。我设置了合理的权限。并做了整个重新安装。之后完美运行。
      猜你喜欢
      • 1970-01-01
      • 2014-12-22
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 2015-12-06
      • 1970-01-01
      • 2014-07-24
      相关资源
      最近更新 更多