【发布时间】:2014-12-21 16:19:22
【问题描述】:
我正在尝试将我的 node-js 应用程序打包到单个 rpm 包中。
首先想到的是:添加nodejs 和npm 作为包依赖项。
Requires: node npm
这样的 rpm 在 Fedora 上运行良好。但是在 CentOS rmp 安装在依赖解析步骤上失败了。问题是在 CentOS 上,nodejs 和 npm 不在默认的软件包存储库中,但它们在 EPEL 存储库中。
我曾尝试将epel-release 包添加到requires,但没有帮助。
那么,将 node-js 应用程序打包到 rpm 的最佳选择是什么?我应该从源而不是从 repo 安装它吗?或者EPEL这个问题可以解决吗?
【问题讨论】:
-
为什么首先要使用 RPM?您是否有理由不通过注册表发布它?对 EPEL 的依赖不起作用,因为将安装 EPEL,但由于其他要求在 EPEL 中,因此在安装过程中无法解决。然而,像
yum install epel-release && yum localinstall /path/to/your.rpm这样的单个命令行并没有向用户提出太多要求。如果你想让它真的很方便,你可以提供一个引导脚本。 -
我完全同意你的观点,但是单体 rpm 是客户的要求。他想要“双击安装”并且没有终端。如果我找不到合适的解决方案,我会尝试说服他。
-
元数据包也无济于事。同样的问题。您可以做的是拥有一个引导脚本或一个包含您的 RPM 的自解压 shell 脚本,它会在解压之前安装 epel-release 并“本地安装”解压后的 RPM。另一种选择是省略所需字段的 NPM 和节点,并通过 %preinst 脚本安装 epel-release、node 和 npm。丑陋的黑客,但应该可以工作。
-
谢谢。自解压 shell 脚本是非常有趣的选择。
标签: node.js centos rpm rpm-spec