linux - RPM - 安装时间参数

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

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

最佳答案

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

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

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

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

https://stackoverflow.com/questions/8258647/

相关文章:

macos - 如何在 mac 上安装 build-essential?

gradle - 如何更改使用 shadowjar 创建的 jar 的名称

android - 仅使用 armeabi 构建的应用程序能否在 armeabi-v7a 设备上运行

java - Eclipse Gradle 构建 "Could not find tools.jar

linux - 使用 Jenkins 的嵌入式 Linux 开发模型

build - 将 Gradle 脚本从根目录导入子项目

c++ - Visual Studio 2010 - 在不同的构建配置之间保留项目属性?

javascript - grunt-concat 分隔符选项?

c# - 构建失败。有关详细信息,请参阅构建日志

build - Sublime Text 2 通过简单的批处理文件构建