如何在 AWS EC2 实例上预安装 sbt(通过用户数据)?
Posted
技术标签:
【中文标题】如何在 AWS EC2 实例上预安装 sbt(通过用户数据)?【英文标题】:How to pre-install sbt on an AWS EC2 instance (via user data)? 【发布时间】:2022-01-01 22:09:43 【问题描述】:我在 AWS EC2 用户数据部分尝试了很多但没有成功:
#!/bin/bash
sudo curl -s "https://get.sdkman.io" | bash
#!/bin/bash
sudo curl --output-dir "/home/ec2-user/" -s "https://get.sdkman.io" | bash
问题是上述情况下的.sdkman 文件夹 没有存储在/home/ec2-user/.sdkman 中,而是始终存储在根文件夹中 下/.sdkman 用于使用用户数据自动启动 EC2 实例。 (另一方面,通过 cmd 手动安装也可以)
以下命令无法通过用户数据安装 sbt:
source "/home/ec2-user/.sdkman/bin/sdkman-init.sh"
(接受 .sdkman 文件夹存储在根文件夹中)我也尝试使用:
source ".sdkman/bin/sdkman-init.sh"
source "/.sdkman/bin/sdkman-init.sh"
但这不起作用并返回以下错误:
find: ‘/home/ec2-user/.sdkman/src’: No such file or directory
find: ‘/home/ec2-user/.sdkman/ext’: No such file or directory
touch: cannot touch ‘/home/ec2-user/.sdkman/var/delay_upgrade’: No such file or directory
-bash: /home/ec2-user/.sdkman/var/candidates: No such file or directory
-bash: __sdkman_echo_debug: command not found
就像使用源命令一样,我无法进入 /home/ec2-user/ 下面,因为它总是被添加回路径中。
更多资源: https://sdkman.io/install
AWS EC2 实例:Amazon Linux 2 AMI (HVM) - 内核 5.10 // t3a.xlarge
非常感谢任何有关如何通过用户数据自动在 AWS EC2 实例上安装 sbt 的帮助!
【问题讨论】:
【参考方案1】:Ec2 UserData 将作为 root 用户执行。如果您想以非 root 用户身份执行用户数据,请遵循以下格式。 p.s - 所有命令必须嵌套在单个命令下,如果分成多行,则下一行将在 root 用户下执行。
#!/bin/bash
su ec2-user bash -c "curl -s "https://get.sdkman.io" | bash; source "/home/ec2-user/.sdkman/bin/sdkman-init.sh"
【讨论】:
【参考方案2】:我不确定这是否对你有帮助。我认为你可以安装 vim yum。以下命令可能适用于用户数据。
#!/bin/bash
curl https://bintray.com/sbt/rpm/rpm | sudo tee /etc/yum.repos.d/bintray-sbt-rpm.repo
sudo yum install sbt
link 以上步骤
文档:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-software.html
【讨论】:
非常感谢您的回复。据我所知,Bintray 自 2021 年 5 月 1 日起不再提供服务,通过输入上述命令导致:“...以上是关于如何在 AWS EC2 实例上预安装 sbt(通过用户数据)?的主要内容,如果未能解决你的问题,请参考以下文章
在 AWS 中的 SUSE Linux EC2 实例上安装 SSM 代理和角色确保启动