【发布时间】:2014-07-30 04:46:03
【问题描述】:
我正在尝试在 EC2 上使用 chef 进行部署。我正在使用 Knife ec2 引导 t1.micro 与 Ubuntu 12.04 和 LAMP 堆栈。当厨师尝试根据其角色安装软件包时出现以下错误。
Recipe Compile Error in /var/chef/cache/cookbooks/mysql/libraries/provider_mysql_service_rhel.rb
================================================================================
NoMethodError
-------------
undefined method `require_relative' for main:Object
Cookbook Trace:
---------------
/var/chef/cache/cookbooks/mysql/libraries/provider_mysql_service_rhel.rb:3
显然是因为引导期间EC2上的ruby版本是1.8.7,它没有上面提到的方法。我尝试了数十个网络页面将其升级到 1.9.3 或更高版本,但问题在几个方面仍然存在。我在执行 sudo rubo -v 时会看到旧的 ruby 版本,但在执行 ruby -v 时会看到最新版本。即使我在 EC2 上以 root 身份登录后执行 sudo,问题也是一样的。尝试使用 Chef 安装时,有人遇到过这个问题吗?任何安装 ruby 的指针,我都可以在 sudo 之后看到 udpate 版本。我花了一整天的时间试图找出正确的解决方案,但没有成功。
【问题讨论】:
-
考虑使用RVM,这是首选方式。
-
我也试过 rvm 方法。那是我在 sudo 和 root 中遇到不同版本的问题。
标签: ruby chef-infra