linux - RPM - 安装时间参数

标签 linux unix build redhat rpm

我已将我的应用程序打包成一个 RPM 包,例如 myapp.rpm。在安装此应用程序时,我想接收用户的一些输入(输入示例可能是 - 安装应用程序的环境 - “dev”、“qa”、“uat”、“prod”)。根据输入,应用程序将安装适当的文件。有没有办法在安装应用时传递参数?

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

最佳答案

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

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

对于您的确切问题,如果您要安装不同的内容,您应该创建不同的包。如果您尝试以不同的方式做事,您最终会越来越多地与 RPM 系统作斗争。

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

关于linux - RPM - 安装时间参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8258647/

相关文章:

postgresql - 使用手册页构建 PostgreSQL

python - 用 python 自动化 firefox?

c - 从 ARP 条目获取给定 IP 的 MAC 地址(Linux 内核)

linux - 如何在shell的递归目录中列出特定类型的文件?

Linux - 如何只对包含特定文件的目录进行压缩?

deployment - Netlify Nitro 部署

linux - 发现 printf 无法打印换行符或回车符

c - 使用 pthread 我的应用程序内存使用量正在增长

bash - 设置动态创建的 bash 变量

android - sencha 包无法在 Release模式下运行 zipalign