RPM (both versions 3.0.3 from Redhat 6.1 distribution and 3.0.4 from Redhat
6.2 distribution) will fail to upgrade a package if the new version has a
symlink where the old version had a directory.
Package foo version 1 has a directory /foo
Package foo version 2 puts its stuff in /bar, and has a symlink /foo ->
/bar for compatibility.
If foo-1.whatever.rpm is installed, "rpm -U foo-2.whatever.rpm" will fail.
With rpm 3.0.4 the error message is "unpacking of archive failed on file
/foo: cpio: unlink failed - Bad file descriptor". Version 3.0.3 gives a
slightly better message, "unpacking of archive failed on file /foo: cpio:
unlink failed - Is a directory".
rpm -e foo followed by rpm -U foo works correctly, but foo cannot be
upgraded from version 1 to version 2 by rpm unless you erase it completely
No version of rpm has ever supported the ability to replace a directory with a
problem is starting to be addressed in rpm-4.0, but ...
I'd suggest you consider some other way to package, because it's gonna be a
rpm can/will support the ability to replace a directory with a symlink.
*** Bug 23265 has been marked as a duplicate of this bug. ***
*** This bug has been marked as a duplicate of 3979 ***