我有一个 Ansible 剧本,它安装了 Vagrant,然后指示 Vagrant 安装一个特定的插件。流浪者在安装所需的宝石时遇到问题,并说:
安装 nokogiri (1.6.6.2) 时出错,捆绑程序无法继续。在捆绑之前,请确保"sudo gem install nokogiri -v '1.6.6.2'"成功。stdout:安装'vagrant-aws --version '0.5.0''插件。这可能需要几分钟时间...
虽然我在使用以下命令安装Nokogiri时遇到问题:
$ sudo gem install nokogiri -v '1.6.6.2'
就像流浪汉一样,我发现我可以使用以下命令手动安装 Nokogiri:
$ sudo gem install nokogiri -v 1.6.6.2 -- --use-system-libraries --with-xml2-include=/usr/include/libxml2
即使在我手动安装 gem 之后,如果我手动告诉它安装插件,流浪者仍然会失败。
有没有办法更好地控制这些依赖项,以便流浪者不会失败并且我的剧本会完成?
事实证明我缺少一些关键的依赖项:build-essential
、libxslt1-dev
、libxml2-dev
和 zlib1g-dev
。我在这里找到了这条评论:https://github.com/mitchellh/vagrant-aws/issues/163#issuecomment-27603855 非常有帮助。
我相信这是使用 sudo 安装 ruby gem 的问题。
我通过安装 Ruby 版本管理器解决了这个问题,它在您的主目录中安装和管理 gem。
安装RVM 后,我可以在没有 sudo 的情况下安装 nokogiri,但 vagrant-aws 仍然无法安装,直到我重新安装 vagrant。如果您正在使用 Ansible 构建全新的环境,那么您可能可以在第一次安装 vagrant(或任何其他 ruby 内容)之前安装 RVM。还有其他方法可以修复您的 gem 权限。
以下是我采取的步骤:
安装 Ruby 版本管理器 (https://rvm.io/rvm/install)
curl -sSL https://get.rvm.io | bash -s stable --ruby
在没有须藤的情况下安装野子尻
gem install nokogiri
重新安装流浪汉 (http://www.vagrantup.com/downloads)