RPM - 安装时间参数

sar*_*_pc 13 unix linux redhat build rpm

我已将我的应用程序打包到RPM包中,比如myapp.rpm.在安装此应用程序时,我希望收到用户的一些输入(输入的示例可能是 - 安装应用程序的环境 - "dev","qa","uat","prod").根据输入,应用程序将安装相应的文件.有没有办法在安装应用程序时传递参数?

PS:可能的解决方案是为每个环境创建一个RPM包.但是,在我们的场景中,这不是一个可行的选择,因为我们有大约20个环境,我们不希望为同一个应用程序提供20个不同的包.

kby*_*yrd 19

通常,RPM包不应要求用户交互.一次又一次,RPM人员已经表示RPM的明确设计目标是没有交互式安装.对于在首次使用之前需要某种输入的软件包,您通常会在首次使用时询问此信息,我们将其全部放入带有宏的配置文件中,并告诉用户他们必须在应用程序可用之前对其进行配置.

即使传递某种参数也算作最终用户交互.我想你想要的是让你的pre或安装脚本以某种方式自动检测环境,也许是通过在他们可以检查的地方放置一个文件.我还要指出,从RPM用户的角度来看,拥有一个名为*-qa.rpm的包比传递一些随机参数更直观.

对于确切的问题,如果要安装不同的内容,则应创建不同的包.如果你尝试以不同的方式做事,那么你将会越来越多地与RPM系统作斗争.

创建一个可以吐出20多个大部分相似的软件包的构建系统并不难.我已经完成了一个模板-theh规范文件和一些由make运行的脚本,它们将创建各种规范文件并构建RPM.在不知道细节的情况下,听起来您甚至可能拥有所有20多个环境包所依赖的核心包,然后特定于环境的包安装特定于其目标环境的任何内容.

  • 我将其视为用户交互。我认为你想要的是让你的预置或安装脚本以某种方式自动检测环境,也许通过在他们可以检查的地方放置一个文件。我还要指出,从 RPM 用户的角度来看,拥有一个名为 *-qa.rpm 的包比传递一些随机参数直观得多。 (2认同)
  • 可以通过转义“$”在“%pre”和“%post”中引用环境变量,如下所示:“\$MY_SPECIAL_VARIABLE”...此外,变量“\$RPM_INSTALL_PREFIX”引用传入的位置`--前缀 $MY_CUSTOM_INSTALL_PATH` (2认同)