【发布时间】:2014-07-30 15:02:30
【问题描述】:
在构建 RPM 包时,如何使用 Requires 或类似的标签来指定 node.js 版本 0.10.28 或更高版本作为先决条件?它不在默认存储库中,用户可能从源代码构建它。我在网上看了一圈,看来我只能Require RPM 文件提供的“能力”。另外,我不想寻找 /usr/bin/node,因为它可能节点可以安装在其他地方。我宁愿使用which node 之类的东西来检测它。
【问题讨论】:
在构建 RPM 包时,如何使用 Requires 或类似的标签来指定 node.js 版本 0.10.28 或更高版本作为先决条件?它不在默认存储库中,用户可能从源代码构建它。我在网上看了一圈,看来我只能Require RPM 文件提供的“能力”。另外,我不想寻找 /usr/bin/node,因为它可能节点可以安装在其他地方。我宁愿使用which node 之类的东西来检测它。
【问题讨论】:
RPM Requires 行在which 的意义上不能是动态的)。它可以指定包名称、功能或文件(通过完整路径)。
您可以在 RPM 的 %pre 脚本中检测到 node.js,如果找不到它就退出(尽管我不推荐这样做)。
您可以在%post 期间检测到它,并在未找到时打印出警告,提醒用户他们需要安装它。
您可以在应用程序启动期间检测到它(假设您的应用程序是独立的)并在那里提醒它(可能除了在%post 期间提醒它)。
或者你可以Require我之前提到的事情之一,让用户来解决这个问题(或者--force他们已经解决了错误)。
【讨论】: