如何在 AWS EC2 实例上预安装 sbt(通过用户数据)?

How to pre-install sbt on an AWS EC2 instance (via user data)?

我在 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"

但这不起作用并且 returns 出现以下错误:

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 的帮助!

我不确定这是否对您有帮助,或者 not.I 认为您可以安装 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

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"