【发布时间】:2015-10-05 08:44:28
【问题描述】:
最近,我正在构建一个 rpm 包。我跑了sudo rpm -ivh A.rpm,但是得到了一个错误file _binary_ from install of A conflicts with file from package B,我之前遇到过这个问题,是因为我制作的_binary_不同。现在我查看了两个rpm中的_binary_,有相同的,想问一下rpm安装过程中是否还有其他具体原因导致冲突?
我转储了一个已安装的包,它的输出类似于
$rpm -ql --dump khotfix-g4hk4hzq-2.6.32-220.23.2.ali878.el6.x86_64-1.0-1.el6.x86_64
...
/usr/local/sbin/ksplice-undo 6436 1428483796 f3dbddfb7820413cc4d97cda2df9388a 0100755 root root 0 0 0 X
...
ksplice-undo 是 md5 是 f3dbddfb7820413cc4d97cda2df9388a
我转储了一个要安装的包,它的输出类似于
$rpm -qlp --dump khotfix-35692936-2.6.32-220.23.2.ali878.el6.x86_64-1.0-1.el6.x86_64.rpm
...
/usr/local/sbin/ksplice-undo 6436 1437038808 a6dc8be59d4a2627b73240adcca41716d8ea0001d9d5cd973694e8779ef9d6b1 0100755 root root 0 0 0 X
...
ksplice-undo md5 是 a6dc8be59d4a2627b73240adcca41716d8ea0001d9d5cd973694e8779ef9d6b1
然后我运行$cat /usr/local/sbin/ksplice-undo | md5sum,输出为f3dbddfb7820413cc4d97cda2df9388a。
我解压了要安装的包,运行$rpm2cpio khotfix-35692936-2.6.32-220.23.2.ali878.el6.x86_64-1.0-1.el6.x86_64.rpm | cpio -div
和$cat ./usr/local/sbin/ksplice-undo | md5sum,输出为f3dbddfb7820413cc4d97cda2df9388a
所以,我猜是转储输出中的 md5 导致了冲突,并且哈希值比 md5 输出长。高版本 rpm 使用 sha256 对文件内容进行哈希处理,而低版本 rpm 使用 md5 对文件内容进行哈希处理。
【问题讨论】: