【问题标题】:Installing Ruby 1.9.3 or later on EC2 - Ubuntu在 EC2 上安装 Ruby 1.9.3 或更高版本 - Ubuntu
【发布时间】: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


【解决方案1】:

不要按照 cmets 中的建议使用 RVM。它不是安装 Chef 的首选方式。安装 Chef 的首选方式是使用 Omnibus 安装程序:

curl -L https://www.opscode.com/chef/install.sh | bash

这将自动为您安装 Chef、嵌入式 Ruby 和所有 Chef 的依赖项。

参考:

【讨论】:

  • require_relative 需要 Ruby 1.9.3+ 的问题怎么办?嵌入式版本似乎是 1.8.7。
  • 嵌入式版本是1.9.3,很快就会是2.1。
  • 原来如此...我没有意识到我使用的是cloud-images.ubuntu.com/vagrant/precise/current/…。在我通过内联 shell 配置程序在我的 vagrantfile 中运行上面的 curl 命令并通过 ssh 进入我看到 1.8.7 的框后。如果需要的话,如果它对其他人有帮助,我通过在 curl chef 安装后运行另一个 shell 配置程序来构建 ruby​​ 1.9.3(如 gist.githubusercontent.com/bartimaeus/2845824/raw/…)来缓解这种情况。
猜你喜欢
  • 1970-01-01
  • 2012-02-22
  • 1970-01-01
  • 2013-01-05
  • 2018-01-03
  • 1970-01-01
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多