virtiofsd 升级报错及(临时)解决方案

最近在风滚草上每日 zypper dup 时碰到了这个报错:

error: unpacking of archive failed on file /usr/libexec/virtiofsd;65e1fe14: cpio: File from package already exists as a directory in system
error: virtiofsd-1.10.1-3.1.x86_64: install failed
error: virtiofsd-1.10.1-2.1.x86_64: erase skipped
(23/38) Installing: virtiofsd-1.10.1-3.1.x86_64 .......................................................................[error]
Installation of virtiofsd-1.10.1-3.1.x86_64 failed:
Error: Subprocess failed. Error: RPM failed: Command exited with status 1.

这里我用了比较粗暴的解决方案:将 /usr/libexec/virtiofsd 删除,之后再重新 zypper in virtiofsd ,之后便能重新成功完成安装,不过目前暂不清楚这是否是正确且完美的解决方案,故标题中暂时带有 (临时) 二字

目前推测可能是新版软件包组织软件的方式不同的缘故,原本 /usr/libexec/virtiofsd 是一个文件夹,其中有着一个 virtiofsd 可执行二进制文件;在重新进行安装之后 /usr/libexec/virtiofsd 便直接是一个二进制可执行文件,而没有使用额外的文件夹进行包裹

这种是包管理器无法处理的问题,问题应该出在 postrun 宏处理写的有问题了。目前一个比较稳妥的方式是先把 virtiofsd rm 掉再重新装回来