如何在 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 日起不再提供服务,通过输入上述命令导致:“...403 Forbidden.. ." jfrog.com/blog/…如果您在上面找到了解决此问题的其他方法,请告诉我

以上是关于如何在 AWS EC2 实例上预安装 sbt(通过用户数据)?的主要内容,如果未能解决你的问题,请参考以下文章

在 AWS 中的 SUSE Linux EC2 实例上安装 SSM 代理和角色确保启动

如何设置从 AWS EC2 实例到 *** 的连接?

AWS SSH 访问密钥生成过程并安装在 EC2 上

我们如何在aws ec2 linux实例的不同端口安装多个apache服务器

通过 AWS Lambda 函数访问 EC2 实例服务

如何在 AWS EC2 Linux 2 上安装 NGINX [关闭]