Bugzilla – Bug 1220632
Package update of virtiofsd fails with 'File from package already exists as a directory'
Last modified: 2024-03-03 21:55:08 UTC
A 'sudo zypper dup' in the current Tumbleweed fails with > error: unpacking of archive failed on file /usr/libexec/virtiofsd; > 65e04e65: cpio: File from package already exists as a directory in system Old version on the system: virtiofsd-1.10.1-2.1.x86_64 New version to update to: virtiofsd-1.10.1-3.1.x86_64 Notice that I just recently had a catastrophic failure of the zypper update stack because of a very similar problem, at that time caused by an openssh update: That error, together with a 'sudo zypper dup -y', caused the whole 'zypper dup' to be aborted with libzypp and its dependent libs only half-installed. See also bug #1219562. I could recover from that problem with a lot of expert knowledge and manual work, but a lot of community users could not.
Created attachment 873110 [details] Screenshot: Directories of the old virtiofs package
New package unrpm'ed: tree . . └── usr ├── libexec │ └── virtiofsd └── share ├── doc │ └── packages │ └── virtiofsd │ └── README.md └── qemu └── vhost-user └── 50-virtiofsd.json So it looks like it's /usr/libexec/virtiofsd: ls -ld usr/libexec/virtiofsd -rwxr-xr-x 1 root root 2788952 Feb 27 22:55 usr/libexec/virtiofsd ls -ld /usr/libexec/virtiofsd drwxr-xr-x 2 root root 4096 Feb 27 16:16 /usr/libexec/virtiofsd
So this apears to be another case to handle in a post-uninstall or a pre-install script.
Manual workaround to get the new package on the system: cd /tmp sudo zypper download virtiofsd (notice the downlod path) sudo rm -f /usr/libexec/virtiofsd/virtiofsd sudo rmdir /usr/libexec/virtiofsd sudo rpm -Uhv /var/cache/zypp/packages/download.opensuse.org-oss/x86_64/virtiofsd*.rpm (use the download path from above)
or we could just revert the path change
Duplicate *** This bug has been marked as a duplicate of bug 1220592 ***
(In reply to Marcus Rückert from comment #5) > or we could just revert the path change Let's please not deviate from the rest of the world for no good reason. The path should be /usr/libexec/.
My solution to allow other packages to be updated was to set the `viriofsd` package to "Protected -- Do not modify" in the YaST Package Manager until this is resolved.