Red Hat Bugzilla – Bug 11362
XFree86 3.3.6 -> 4.0 upgrade fails in all sorts of egregious ways
Last modified: 2008-05-01 11:37:55 EDT
I attempted to upgrade the XFree86 3.3.6 on my machine to XFree86 4.0-0.8,
and I had all kinds of terrible problems. I finally had to blow away all
of /etc/X11 and /usr/X11R6, tell rpm to remove the old packages from the
database without running any scripts or triggers, install the new ones, and
then reinstall all the other packages which had had files in those
directories. Here are some of the problems I encountered:
* The upgrade of the base XFree86 package failed, apparently because it
attempted to uncpio symbolic links which had the same names as existing
directories. I got errors about bad file descriptors from cpio until I
moved the old directories out of the way.
* Despite the fact that the upgrade of the base XFree86 package failed, it
went ahead with upgrading the other XFRee86 packages. I'm pretty certain
that they should depend on the base package so that if it can't be
upgraded, they won't be upgraded. I don't know whether this is a
dependency error in the RPMs or a bug in "rpm".
* I did not know that the name of the package for my X server changed from
XFree86-Mach64 to XFree86-ATI, so I didn't download the latter.
Nevertheless, it let me do the upgrade. It should have told me I couldn't
do the upgrade because XFree86-Mach64 depended on files which were being
replaced by the upgrade.
* For some reason during the upgrade process, either the old packages'
uninstall scripts or the new packages' install scripts thought it would be
a good idea to copy my entire filespace, starting with /, to the directory
/etc/state/xkb or something like that. This filled up my disk. Because of
this problem, as I mentioned above, I couldn't get all of the XFree86
packages to go away from the RPM database without specifying --notriggers
I experienced similar problems as well. Basically I would get cpio failing in
places like bad file descriptor while unpacking /usr/X11R6/bin/xterm even if the
file did not exost prior to install. In order to fully install the package I
had to convert the rpm to a cpio archive, decompress it in my /tmp with the
--make-directories flag on and then moved the files to the appropriate location
by hand in order to get the package installed. Then I had just did an rpm -ivh
XFree86-4* --justdb to install the other packages. The HD filling thing I did
not encounter personally, but on mailing-lists and in bugzilla it has recently
been well documented. A type in a script executed tar in such a manner that it
would start taring /. I believe a fix for that is mentioned somewhere, if you
goto the query page and search for things like XFree86 and tar you should find
Hope that helps a bit,
This should all be fixed as of pinstripe.