Amazon web services 美国焊接学会包装工;ec2 bundle vol:line 6:ruby:command not found";

Amazon web services 美国焊接学会包装工;ec2 bundle vol:line 6:ruby:command not found";,amazon-web-services,ec2-ami,packer,Amazon Web Services,Ec2 Ami,Packer,我使用的是packer,它位于安装ruby的provisioner之后的provisioners(至少是相关部分)中 { "type": "shell", "inline_shebang": "/bin/bash", "inline": [ "source ~/.bash_profile", "rbenv versions", "ruby -v", "ls /home/ubuntu/.rbenv/versions/", "ls /home/ubun

我使用的是packer,它位于安装ruby的provisioner之后的provisioners(至少是相关部分)中

{ "type": "shell",
  "inline_shebang": "/bin/bash",
  "inline": [
    "source ~/.bash_profile",
    "rbenv versions",
    "ruby -v",
    "ls /home/ubuntu/.rbenv/versions/",
    "ls /home/ubuntu/.rbenv/",
    "sudo apt-get update",
    "sudo apt-get -y install unzip",
    "sudo apt-get -y install libqt4-dev libsndfile1-dev",
    "wget http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.zip",
    "sudo mkdir -p /usr/local/ec2",
    "sudo unzip ec2-ami-tools.zip -d /usr/local/ec2"
}
rbenv版本见2.1.6

ruby-v说它是2.1.6

所以ruby肯定已经安装好了

然而,我在打包包的末尾得到了这个错误

==> amazon-instance: Bundling the volume...
    amazon-instance: /usr/local/ec2/ec2-ami-tools-1.5.7/bin/ec2-bundle-vol: line 6: ruby: command not found
我用于绑定卷的命令是

sudo -n env EC2_AMITOOL_HOME=/usr/local/ec2/ec2-ami-tools-1.5.7 /usr/local/ec2/ec2-ami-tools-1.5.7/bin/ec2-bundle-vol -k {{.KeyPath}}  -u {{.AccountId}} -c {{.CertPath}} -    r {{.Architecture}} -e {{.PrivatePath}}/* -d {{.Destination}} -p {{.Prefix}} --batch --no-filter"

我试图找到其他人使用ec2 ami工具得到这个错误的任何参考,但没有成功。任何关于我应该在何处查找信息的提示(已签出ec2 ami工具文档、引用ec2 bundle vol的打包器文档、其他打包器配置等,但可能遗漏了一些内容)都将不胜感激。

我猜这是因为您绑定了
sudo
。实际上我不知道什么是
rbenv
,但我怀疑只有
ubuntu
用户知道在哪里可以找到
ruby


因此,请查看
sudoruby-v
是否为您提供了正确的输出。如果没有,那就是你的问题。

我猜这是因为你正在捆绑
sudo
。实际上我不知道什么是
rbenv
,但我怀疑只有
ubuntu
用户知道在哪里可以找到
ruby


因此,请查看
sudoruby-v
是否为您提供了正确的输出。如果没有,那就是你的问题。

你用什么ami图像打包?您的意思是说在您设置之前已经安装了
rbenv
ruby
?我很好奇ruby是如何运行的?我的意思是,我通过脚本provisioner rbenv和ruby安装,然后运行上面的内联provisioner。我使用的是一个基本的AMI图像;最新的w/实例存储从这里开始()。没什么,所以这让我很困惑。如何在安装它们之前使用
rbenv
ruby-v
获得结果。我最后只是使用了一本刚刚安装了ruby的厨师烹饪书。至于你的问题,厨师有供应员。第一个provisioner通过脚本安装了rbenv和相关的ruby。然后这个供给者跑了。因为脚本已经安装了rbenv和ruby,所以这个provisioner可以访问它们。所以请与我们分享完整的故事和详细的代码。您使用什么ami图像来打包?您的意思是说在您设置之前已经安装了
rbenv
ruby
?我很好奇ruby是如何运行的?我的意思是,我通过脚本provisioner rbenv和ruby安装,然后运行上面的内联provisioner。我使用的是一个基本的AMI图像;最新的w/实例存储从这里开始()。没什么,所以这让我很困惑。如何在安装它们之前使用
rbenv
ruby-v
获得结果。我最后只是使用了一本刚刚安装了ruby的厨师烹饪书。至于你的问题,厨师有供应员。第一个provisioner通过脚本安装了rbenv和相关的ruby。然后这个供给者跑了。因为脚本已经安装了rbenv和ruby,所以这个provisioner可以访问它们。