我有一本Ansible剧本,它安装了Vagrant,然后指示Vagrant安装特定的插件。 Vagrant无法安装所需的宝石,并说:
安装nokogiri(1.6.6.2)时发生错误,并且Bundler无法继续。捆绑之前,请确保`sudo gem install nokogiri -v'1.6.6.2'`成功。标准输出:安装'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,但如果我手动告诉它安装插件,vagrant仍然会失败。
有没有一种方法可以更好地控制这些依赖关系,以使流浪汉不会失败并且我的剧本将会完成?
事实证明我缺少一些关键的依赖项:build-essential
,libxslt1-dev
,libxml2-dev
和zlib1g-dev
。我在这里找到此评论:https://github.com/mitchellh/vagrant-aws/issues/163#issuecomment-27603855非常有用。
我相信使用sudo安装ruby gem是一个问题。
我通过安装Ruby Version Manager解决了这个问题,该版本会在您的主目录中安装和管理gems。
安装RVM后,我可以不使用sudo来安装nokogiri,但是在重新安装vagrant之前,vagrant-aws仍然无法安装。如果您要使用Ansible构建全新的环境,则可以在首次安装流浪汉(或任何其他红宝石产品)之前先安装RVM。也有other ways to fix your gem permissions。
这是我采取的步骤:
安装Ruby版本管理器(https://rvm.io/rvm/install)
curl -sSL https://get.rvm.io | bash -s stable --ruby
不使用sudo安装nokogiri
gem install nokogiri
重新安装无业游民(http://www.vagrantup.com/downloads)