![rpm spec 文件构建需要 packageX 或 packageY](https://linux22.com/image/667159/rpm%20spec%20%E6%96%87%E4%BB%B6%E6%9E%84%E5%BB%BA%E9%9C%80%E8%A6%81%20packageX%20%E6%88%96%20packageY%20.png)
rpm 规范文件中是否有办法将构建要求 packageX 或 packageY 指定为。
当前 nodejs 4.1 需要 g++>=4.8 或 clang++>=3.4 才能构建包。
这只是构建 rpm 的要求,而不是安装后软件包运行的要求。我不知道如何指定这一点,或者是否可以使用 BuildRequires 来指定。
答案1
无法使用 rpm 规范指定 X 或 Y。
但是,您可以指定的是文件路径的依赖关系,例如:
BuildRequires: /usr/bin/sudo
yum-builddeps 随后会查找提供特定文件的包。要实现此功能,X 和 Y 都必须提供具有相同路径的文件。
答案2
Node.js 依赖于某些库。在您的特定情况下,允许使用任何编译器构建 node.js 是非常不明智的 - 您会看到,node.js 和任何其他依赖库的软件一样,应该使用与其依赖的库相同的编译器系列构建。然而,这不是严格的规则 - 使用不同的编译器系列时,一切都可能没问题。但在许多情况下,由于不同的符号处理算法(例如,我曾见过这种情况),动态加载器将无法解析特定符号,因此除非您采取了所有必要的预防措施来排除这种可能性,否则您可能不应该依赖它。所以我想您的 spec 文件应该更具体,或者您可能应该为具有不同编译器的情况创建多个 srpm。
PS,我认为这个问题更适合SE门户。