通过Ansible控制Vagrant插件依赖

3
我有一个Ansible playbook,安装了Vagrant并指示Vagrant安装特定插件。 Vagrant安装所需的gem遇到问题,并显示以下消息:
An error occurred while installing nokogiri (1.6.6.2), and Bundler cannot continue.
Make sure that `sudo gem install nokogiri -v '1.6.6.2'` succeeds before bundling.
stdout: Installing the 'vagrant-aws --version '0.5.0'' plugin. This can take a few minutes...
虽然我也有使用以下命令无法像vagrant一样安装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安装插件,它仍然会失败。
是否有方法控制这些依赖关系,以便vagrant不会失败,我的playbook完成?
2个回答

1

0

我认为这是使用sudo安装ruby gem的问题。

我通过安装Ruby版本管理器来解决了这个问题,它可以在您的主目录中安装和管理gems。

安装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

在不使用sudo的情况下安装nokogiri

gem install nokogiri

重新安装 Vagrant(http://www.vagrantup.com/downloads

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接