【问题标题】:CPack filelist conflicts with filesystemCPack 文件列表与文件系统冲突
【发布时间】:2018-02-22 02:43:13
【问题描述】:

我尝试打包我用 C++ 编写的项目并使用 cmake 作为构建工具。我可以创建一个 rpm 包,但我无法安装它。错误信息是:

file /usr/local from install of myapp.x86_64 conflicts with file from package filesystem-3.3-3.fc27.x86_64
file /usr/local/include from install of myapp.x86_64 conflicts with file from package filesystem-3.3-3.fc27.x86_64
file /usr/local/bin from install of myapp.x86_64 conflicts with file from package filesystem-3.3-3.fc27.x86_64
file /usr/local/etc from install of myapp.x86_64 conflicts with file from package filesystem-3.3-3.fc27.x86_64

我尝试在CMakeList.txt 中设置CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION,但它不起作用。

set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION /usr/local /usr/local/etc /usr/local/bin /usr/local/include`

【问题讨论】:

    标签: packaging cpack


    【解决方案1】:

    我在 C++ 项目中遇到了同样的问题,因此,当尝试在 CentOS 上安装生成的 RPM 时,yum 会引发与现有文件或目录(例如 /usr/bin 目录)的冲突错误。

    因此,在查看 CPackRPM 文档(我在 Debian 测试中使用 cmake 3.10.2-1)之后,我意识到对于 CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST 选项,已经存在一个默认列表,其中已经包含:@987654322 @。

    我实际上在做的是用相同的选项覆盖。不确定 cpack 是否会丢失或类似的情况,但是在从我的 CMakeLists.txt 中删除我自己的 set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST) 并保持默认后,效果很好。

    我刚刚删除了构建目录,再次运行cmakecpack -G RPM,一切正常。只需使用rpm -qpl yourpackage.rpm 检查新的 RPM 生成文件,看看它是否正常。

    如果您确实需要排除文件的列表,请尝试改用CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-24
      • 2016-01-12
      • 2016-09-21
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      相关资源
      最近更新 更多