Amazon web services RPM仅安装在AWS ec2 redhat实例上

Amazon web services RPM仅安装在AWS ec2 redhat实例上,amazon-web-services,amazon-ec2,redhat,rpm,rpm-spec,Amazon Web Services,Amazon Ec2,Redhat,Rpm,Rpm Spec,我正在尝试构建一个RPM,它应该只能安装在AWS EC2 redhat实例上,而不能安装在其他环境中 我目前还不知道如何将其仅限于aws ec2实例。有人可以帮助分享如何处理这种情况的想法。红帽的RPM不允许依赖环境属性。其他RPM变体也可以。使用YUM插件也可以实现类似的功能 一般来说,这种依赖性不是一个好主意,因为它阻止在不具有目标系统确切属性的登台系统上创建系统映像(例如,登台系统可能不是AWS系统)。Red Hat的RPM不允许依赖于环境属性。其他RPM变体也可以。使用YUM插件也可以实

我正在尝试构建一个RPM,它应该只能安装在AWS EC2 redhat实例上,而不能安装在其他环境中


我目前还不知道如何将其仅限于aws ec2实例。有人可以帮助分享如何处理这种情况的想法。

红帽的RPM不允许依赖环境属性。其他RPM变体也可以。使用YUM插件也可以实现类似的功能


一般来说,这种依赖性不是一个好主意,因为它阻止在不具有目标系统确切属性的登台系统上创建系统映像(例如,登台系统可能不是AWS系统)。

Red Hat的RPM不允许依赖于环境属性。其他RPM变体也可以。使用YUM插件也可以实现类似的功能


一般来说,这种依赖关系不是一个好主意,因为它会阻止在不具有目标系统确切属性的登台系统上创建系统映像(例如,登台系统可能不是AWS系统)。

您必须找到该安装所特有的文件,然后将其添加到您的
Requires
标记中,例如,
/etc/redhat发布aws
或其他东西。如果该文件不存在,它将不会安装,但是类似于
yum
的东西也无法帮助您,例如,它不会说“此RPM需要AWS”。它只会告诉用户缺少一个文件

如果它不是一个特定的文件,您可以编写一个脚本并将其放入
%pre
部分。没有AWS,我会假装有一个命令可以运行,名为
is_AWS
;您可以用类似“
grep-iqaws/etc/os-release
”的东西来代替它;任何将返回真/假的内容

if is_aws; then
  true # do nothing
else
  echo "This RPM requires AWS!" 1>&2
  false
fi

我90%确信
%pre
脚本在“
set-e
”模式下运行,
false
将导致安装失败
STDOUT
在非详细模式下被忽略,因此您需要写入
STDERR
您必须找到该安装所特有的文件,然后将其添加到
Requires
标记中,例如
/etc/redhat release aws
或其他内容。如果该文件不存在,它将不会安装,但是类似于
yum
的东西也无法帮助您,例如,它不会说“此RPM需要AWS”。它只会告诉用户缺少一个文件

如果它不是一个特定的文件,您可以编写一个脚本并将其放入
%pre
部分。没有AWS,我会假装有一个命令可以运行,名为
is_AWS
;您可以用类似“
grep-iqaws/etc/os-release
”的东西来代替它;任何将返回真/假的内容

if is_aws; then
  true # do nothing
else
  echo "This RPM requires AWS!" 1>&2
  false
fi
我90%确信
%pre
脚本在“
set-e
”模式下运行,
false
将导致安装失败
STDOUT
在非详细模式下被忽略,因此您需要写入
STDERR