我已经将我的应用程序打包到一个RPM软件包中,例如 myapp.rpm 。在安装此应用程序时,我希望收到用户的一些输入(输入示例可能是- 安装该应用程序的环境-“ dev”,“ qa”,“ uat”,“ prod”)。根据输入,应用程序将安装适当的文件。在安装应用程序时是否可以传递参数?
PS:一个可能的解决方案是为每个环境创建一个RPM包。但是,在我们的方案中,这不是一个可行的选择,因为我们有大约20个环境,并且我们不希望为同一应用程序提供20个不同的软件包。
通常,RPM软件包不应要求用户交互。RPM人士一次又一次地表示,没有交互式安装是RPM的明确设计目标。对于在首次使用前需要某种输入的软件包,通常会在首次使用时询问此信息,我们将它们全部放入带有宏或其他内容的配置文件中,并告诉用户在使用该应用程序之前必须对其进行配置。 。
即使传递某种参数也算作最终用户交互。我认为您想要的是让您的pre脚本或安装脚本以某种方式自动检测环境,也许是将文件放在可以检查的位置。我还将指出,从RPM用户的角度来看,拥有名为* -qa.rpm的软件包比传递一些随机参数要直观得多。
对于您的确切问题,如果要安装其他内容, 则应 创建其他程序包。如果您尝试以不同的方式做事,那么最终您将越来越多地与RPM系统抗争。
创建一个可以吐出20个以上几乎都是相似的软件包的构建系统并不难。我已经完成了一个模板规范文件,并通过make运行了一些脚本,这些脚本将创建各种规范文件并构建RPM。在不知道具体细节的情况下,听起来您甚至可能拥有所有20多个环境软件包都依赖的核心软件包,然后特定于环境的软件包将安装针对其目标环境的特定软件包。