我已经安装了包含一堆文件的自定义包。
第二次运行rpm --upgrade
出现很多错误:
File ABC from install of mypackage-1.0-0.i386 conflicts with file from package mypackage-1.0-0.i386
RPM 退出并显示错误代码 5。
但它是相同的软件包,具有相同的版本号!它不应该说“已经安装”之类的吗?我需要对spec文件或rpm升级命令做什么才能避免这个问题?
运行时rpm --upgrade --replacefiles
说“包mypackage-1.0-0.i386已安装”,退出代码为 5
(如果文件没有改变,我真的不想替换它们......
答案1
您有多种选择。最简单的方法是在构建新包时增加版本和/或发行版,以便rpm -U
(升级)命令正常工作。如果您不想这样做,可以使用rpm -U --replacefiles --replacepkgs
有效地重新安装该软件包。第三种选择是在安装“新”包之前删除该包。
在所有这些情况下,属于常规 paylod 的所有文件(即未标记为noreplace
配置文件)都将替换为较新的版本。这就是 RPM 的工作原理。如果您想只更新已更改的内容,则需要考虑生成 DRPM 包 (Delta RPM),它只包含与先前版本的差异。这将要求您在重建时增加版本和/或版本号。我从来没有做过增量 RPM 包,所以我无法提供任何关于它们的建议。