在EC2上安装CodeDeploy Agent时遭遇Ruby类型错误求助
在EC2实例安装CodeDeploy Agent时触发Ruby类型错误
操作流程
我在EC2实例上安装CodeDeploy Agent时执行了以下命令:
sudo yum -y update sudo yum -y install ruby sudo yum -y install wget cd /home/ec2-user wget https://aws-codedeploy-us-east-1.s3.amazonaws.com/latest/install sudo chmod +x ./install sudo ./install auto
环境说明
install文件已成功下载- Ruby版本为3.2.1:
ruby --version => ruby 3.2.1 (2023-02-08 revision 31819e82c8) [x86_64-linux]
- 分别以root和ec2-user身份尝试安装,问题未解决
- 未运行任何自定义Ruby代码
错误日志
执行sudo ./install auto时出现如下报错:
/usr/share/ruby3.2/logger/log_device.rb:83:in `exist?': no implicit conversion of Array into String (TypeError) if File.exist?(path) ^^^^ from /usr/share/ruby3.2/logger/log_device.rb:83:in `set_dev' from /usr/share/ruby3.2/logger/log_device.rb:18:in `initialize' from /usr/share/ruby3.2/logger.rb:587:in `new' from /usr/share/ruby3.2/logger.rb:587:in `initialize' from ./install:43:in `new' from ./install:43:in `<main>'
解决步骤
这个错误是Ruby 3.2与CodeDeploy官方安装脚本不兼容导致的,推荐通过降级Ruby版本解决:
- 卸载当前Ruby 3.2:
sudo yum remove -y ruby ruby-devel
- 安装兼容的Ruby 2.7版本:
sudo amazon-linux-extras install ruby2.7 -y
- 确认Ruby版本:
ruby --version
- 回到
install文件所在目录,重新执行安装命令:
cd /home/ec2-user sudo ./install auto
内容的提问来源于stack exchange,提问作者Yusuf
相关产品推荐
相关产品推荐

