我如何使 "read" 命令在 RPM 规范文件中工作?
How would I make "read" command work in RPM spec file?
我写了一个 SPEC 文件来构建 RPM 包。我需要让最终用户确定 %pre
部分中变量的值。所以我在 %pre
部分使用 "read < my_variable >" 命令。但是,在安装时,"read" 命令似乎被系统忽略了,因为系统没有等待我输入值。为什么?有什么好的方法可以做上面的事情吗?
RPM 没有在您的包中嵌入 read
,而是有一个可以通过命令行参数使用的条件机制。 RPM 中条件语句的大部分使用测试系统 RPM 宏中定义的常量或进行简单的文件系统检查。您应该首先调查那些,因为它允许您的包在没有安装人员帮助的情况下安装。
这里有一些讨论 RPM 条件的有用页面:
- Passing conditional parameters into a rpm build (rpm.org)
- PackagerDocs/ConditionalBuilds (rpm.org)
- Conditionals(最大 RPM:将 Red Hat 包管理器发挥到极限)
- openSUSE:RPM conditional builds
从建议阅读中可以看出,这些是 构建时 而不是 安装时 功能。您不能进行 "interactive" RPM 安装。要了解更多相关信息,请参阅以下页面:
- Is it possible to get user's input during installation of rpm?
- RPM - Install time parameters
后者显然是开发者有意为之。顺便说一句,一个回复提到了 --relocate
选项,暗示这可以解决问题。然而,实际上是不同的。在此处阅读有关 that 的更多信息:
我写了一个 SPEC 文件来构建 RPM 包。我需要让最终用户确定 %pre
部分中变量的值。所以我在 %pre
部分使用 "read < my_variable >" 命令。但是,在安装时,"read" 命令似乎被系统忽略了,因为系统没有等待我输入值。为什么?有什么好的方法可以做上面的事情吗?
RPM 没有在您的包中嵌入 read
,而是有一个可以通过命令行参数使用的条件机制。 RPM 中条件语句的大部分使用测试系统 RPM 宏中定义的常量或进行简单的文件系统检查。您应该首先调查那些,因为它允许您的包在没有安装人员帮助的情况下安装。
这里有一些讨论 RPM 条件的有用页面:
- Passing conditional parameters into a rpm build (rpm.org)
- PackagerDocs/ConditionalBuilds (rpm.org)
- Conditionals(最大 RPM:将 Red Hat 包管理器发挥到极限)
- openSUSE:RPM conditional builds
从建议阅读中可以看出,这些是 构建时 而不是 安装时 功能。您不能进行 "interactive" RPM 安装。要了解更多相关信息,请参阅以下页面:
- Is it possible to get user's input during installation of rpm?
- RPM - Install time parameters
后者显然是开发者有意为之。顺便说一句,一个回复提到了 --relocate
选项,暗示这可以解决问题。然而,实际上是不同的。在此处阅读有关 that 的更多信息: