RPM 仅安装在 AWS ec2 redhat 实例上
RPM to be installed only on AWS ec2 redhat instances
我正在尝试构建一个 RPM,它只能安装在 AWS EC2 redhat 实例上,不能安装在其他环境上。
我目前不知道如何将其仅限于 aws ec2 实例。谁能帮忙分享一下如何处理这种情况的想法。
Red Hat 的 RPM 不允许依赖于环境属性。其他 RPM 变体可以。使用 YUM 插件也许可以实现类似的功能。
一般来说,这种依赖关系不是一个好主意,因为它会阻止在不具有目标系统的确切属性的暂存系统上创建系统映像(例如,暂存系统可能不是 AWS 系统)。
您必须找到该安装所特有的文件,然后将其添加到您的 Requires
标签中,例如/etc/redhat-release-aws
之类的。如果那个文件不存在,它就不会安装,但是像 yum
这样的东西也不能帮助你,它不会,例如,说 "This RPM requires AWS." 它只会告诉用户缺少文件。
如果不是特定文件,您可以 编写脚本并将其放入%pre
部分。没有 AWS,我会相信有一个命令可以 运行 调用 is_aws
;您可以将其替换为“grep -iq aws /etc/os-release
”之类的内容;任何 return true/false.
if is_aws; then
true # do nothing
else
echo "This RPM requires AWS!" 1>&2
false
fi
我 90% 确定 %pre
scriptlet 是 运行 在“set -e
”模式下 false
会导致安装失败。 STDOUT
在非详细模式下被忽略,因此您需要写入 STDERR
.
我正在尝试构建一个 RPM,它只能安装在 AWS EC2 redhat 实例上,不能安装在其他环境上。
我目前不知道如何将其仅限于 aws ec2 实例。谁能帮忙分享一下如何处理这种情况的想法。
Red Hat 的 RPM 不允许依赖于环境属性。其他 RPM 变体可以。使用 YUM 插件也许可以实现类似的功能。
一般来说,这种依赖关系不是一个好主意,因为它会阻止在不具有目标系统的确切属性的暂存系统上创建系统映像(例如,暂存系统可能不是 AWS 系统)。
您必须找到该安装所特有的文件,然后将其添加到您的 Requires
标签中,例如/etc/redhat-release-aws
之类的。如果那个文件不存在,它就不会安装,但是像 yum
这样的东西也不能帮助你,它不会,例如,说 "This RPM requires AWS." 它只会告诉用户缺少文件。
如果不是特定文件,您可以 编写脚本并将其放入%pre
部分。没有 AWS,我会相信有一个命令可以 运行 调用 is_aws
;您可以将其替换为“grep -iq aws /etc/os-release
”之类的内容;任何 return true/false.
if is_aws; then
true # do nothing
else
echo "This RPM requires AWS!" 1>&2
false
fi
我 90% 确定 %pre
scriptlet 是 运行 在“set -e
”模式下 false
会导致安装失败。 STDOUT
在非详细模式下被忽略,因此您需要写入 STDERR
.