我正在尝试将我们在工作中的构建系统转换为 cmake,并且遇到了它生成的 RPM 的一个有趣问题(通过 cpack):它会自动将它认为您的 RPM 具有的所有依赖项添加到其所需列表中图书馆。
总的来说,这很好,但就我而言,这是灾难性的。不幸的是,我们构建的开发包最终安装了一个我们自己开发的工具,该工具使用 rpm 将它们安装在与系统一分开的 RPM 数据库中。这很愚蠢,但我无法改变它。这意味着任何普通库将依赖的所有系统库(如 libc 或 libpthread)都不在与我们的开发包一起使用的 RPM 数据库中。因此,如果我们的开发包之一的 RPM 列出了需要的系统库,那么我们就无法安装它,因为 rpm 会认为它们没有安装(因为它们列在普通数据库中而不是它被告知在安装我们的软件包时使用)。我们当前的构建东西处理得很好,因为它没有将任何系统库列为 RPM 中的依赖项,但 cpack 会自动填充 RPM 所需库的列表并将系统库放在那里。我需要一种方法来阻止它这样做。
我尝试设置CPACK_RPM_PACKAGE_REQUIRES
为""
,但这没有效果。RPM cpack 生成的最终仍会列出所需的系统库。在这一点上,我所能想到的就是复制 RPM cpack 生成器并将其修改为我想要的并使用它而不是标准的,但我宁愿避免这种情况。有谁知道如何让 cpack 停止使用所需的库填充 RPM?