cpack生成具有与RPM规范冲突的%文件条目的RPM.怎么修?

 Sn_杀手_451 发布于 2022-12-31 20:38

最近,我需要确保我们的软件可以使用cpackRHEL 7及其免费重建(例如CentOS 7)进行打包.尽管如此,我一直遇到RHEL 6.x及其免费重建所不存在的问题:cpack生成的RPM 都在其%files部分系统目录条目中具有如下内容:

%dir %attr(0755, root, root) "/"
%dir %attr(0755, root, root) "/usr"
%dir %attr(0755, root, root) "/usr/bin"
%dir %attr(0755, root, root) "/usr/share"
%dir %attr(0755, root, root) "/usr/share/applications"
%dir %attr(0755, root, root) "/usr/share/doc"
%dir %attr(0755, root, root) "/usr/share/icons"
%dir %attr(0755, root, root) "/usr/share/icons/hicolor"
%dir %attr(0755, root, root) "/usr/share/icons/hicolor/scalable"
%dir %attr(0755, root, root) "/usr/share/icons/hicolor/scalable/apps"enter code here

不应该由包声明.

AFAIK,这个要求多年来一直在RPM规范中,但仅在RPM的最新版本(即比4.8.0更新)中强制实施.由于RHEL 7与RPM 4.11.1捆绑在一起,因此在下列期间cpack生成的内容filesystem-3.2-18.el7.x86_64与下面的错误冲突yum install ...:

file / from install of tunesviwer-1.4-2.noarch conflicts with file from package filesystem-3.2-18.el7.x86_64
file /usr/bin from install of tunesviewer-1.4-2.noarch conflicts with file from package filesystem-3.2-18.el7.x86_64
[...]

我试图使用一个cmake由以下组成的小模块:

set(CPACK_RPM_SPEC_MORE_DEFINE "%define ignore \#")
set(CPACK_RPM_USER_FILELIST "%ignore /" "%ignore /usr" "%ignore /usr/bin" "%ignore /usr/share" "%ignore /usr/share/applications" "%ignore /usr/share/doc" "%ignore/usr/share/icons" "%ignore /usr/share/icons/hicolor" "%ignore /usr/share/icons/hicolor/scalable" "%ignore /usr/share/icons/hicolor/scalable/apps")

和包括它的前右CMakeLists.txtinclude(CPack).但生成的RPM仍然包含这些系统目录:(

作为一个临时的复制,我一直在使用文件冲突中给出的提示来安装带有"Filesystem"的包,即使用该rpmrebuild实用程序删除该%files部分中的这些系统目录条目.显然,这根本不是解决方法.

有人找到了更好的方法吗?

1 个回答
  • 我等不起了.因此,查看最新的cmake3.0.0版本,CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST新版本支持具有合理默认值的变量

    [编辑]在查看2.8.12的文档时,该对也受到旧版本的支持.

    由于cmake源自带CMakeLists.txt文件,并可以生成包开箱即用的,包括RPM(虽然我需要调整,以适应RHEL的包命名规则的设置,但是这并不难做到),所以我只是说干就干第一自举cmake-3.0.0cmake 2.8.11,rpmrebuild -pe修复所产生的cmake3.0 .0 RPM,yum安装它,然后用它来做第二个bootstrap.现在一切都很好.问题解决了.

    我的离别思想是kitware应该更好地编写文档.描述很多变量的方式是密集甚至令人困惑的 - 缺乏示例是一个明显的缺陷.

    此外,kitware应该吃自己的dogfood:提供使用cmake构建cmake的说明,而不是使用autotools x-(

    2022-12-31 20:40 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有