CPack文件列表与文件系统冲突

问题描述 投票:0回答:1

我尝试打包用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

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

set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION /usr/local /usr/local/etc /usr/local/bin /usr/local/include`
packaging cpack
1个回答
1
投票

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

所以,在看了CPackRPM文档(我在Debian Testing上使用cmake 3.10.2-1)之后,我意识到对于CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST选项,已经存在一个已经包含的默认列表:/etc; /etc/init.d /usr; /usr/bin; /usr/include; /usr/lib; /usr/libx32; /usr/lib64; /usr/share; /usr/share/aclocal; /usr/share/doc

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

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

如果您确实需要排除文件列表,请尝试使用qazxsw poi。

© www.soinside.com 2019 - 2024. All rights reserved.