Error: Protected multilib versions
Did I say that I don't like yum? I think I did and others did, too.
So this yum upgrade
failed due to insufficient diskspace and yum
exited with:
/usr/sbin/build-locale-archive: cannot add to locale archive: No such file or directory
could not write to ts_done file: [Errno 28] No space left on device
[...]
Error unpacking rpm package imsettings-libs-1.2.6-1.fc16.x86_64
error: gtk2-2.24.8-2.fc16.x86_64: install failed
error: unpacking of archive failed on file \
/usr/lib64/libimsettings.so.5.2.0;4ed44d97: cpio: write
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/yum/rpmtrans.py", line 444, in callback
self._instCloseFile( bytes, total, h )
File "/usr/lib/python2.7/site-packages/yum/rpmtrans.py", line 507, in _instCloseFile
self._scriptout(txmbr.po)
File "/usr/lib/python2.7/site-packages/yum/rpmtrans.py", line 246, in _scriptout
self.base.history.log_scriptlet_output(data, msgs)
File "/usr/lib/python2.7/site-packages/yum/history.py", line 871, in log_scriptlet_output
self._commit()
File "/usr/lib/python2.7/site-packages/yum/history.py", line 640, in _commit
return self._conn.commit()
sqlite3.OperationalError: database or disk is full
error: python callback
OK, no big deal. Just resized the root partition so that enough space is available now and try again:
$ yum upgrade [...] There are unfinished transactions remaining. You might consider running \ yum-complete-transaction first to finish them. [...] Error: Protected multilib versions: glibc-2.14.90-19.x86_64 != glibc-2.14.90-14.i686This didn't go so well. Let's try
yum-complete-transaction
then, as suggested:
$ yum-complete-transaction Loaded plugins: langpacks, presto, refresh-packagekit There are 1 outstanding transactions to complete. Finishing the most recent one The remaining transaction had 87 elements left to run Package glibc-common-2.14.90-19.x86_64 already installed and latest version [...] --> Processing Dependency: libc.so.6()(64bit) for package: elfutils-0.152-1.fc16.x86_64 --> Processing Dependency: /bin/sh for package: kernel-3.1.2-1.fc16.x86_64 [....]This goes on for quite a while, hours even. I went to bed at this time, only to see the next morning that
yum
got killed by the out-of-memory killer:
Out of memory: Kill process 1457 (yum-complete-tr) score 782 or sacrifice child Killed process 1457 (yum-complete-tr) total-vm:1643616kB, anon-rss:830884kB, file-rss:0kBThe VM has 1 GB RAM and 512 MB swap - not too much, but certainly enough for doing an upgrade, I assumed. OK, so how to go on from here? With
yum-complete-transaction
failing, I decided to cleanup any old transactions and start from scratch:
$ yum-complete-transaction --cleanup-only Cleaning up unfinished transaction journals $ yum-complete-transaction No unfinished transactions left.But now the upgrade would stop with:
$ yum upgrade [...] Error: Protected multilib versions: glibc-2.14.90-19.x86_64 != glibc-2.14.90-14.i686Using
--setopt=protected_multilib=false
(and --skip-broken
) brought us only little further:
$ yum upgrade --setopt=protected_multilib=false --skip-broken [...] Transaction Check Error: file /usr/share/doc/glibc-2.14.90/NEWS conflicts between attempted installs of glibc-2.14.90-14.i686 and glibc-2.14.90-19.x86_64Moving
/usr/share/doc/glibc-2.14.90/NEWS
out of the way did not help in this case. What did help was to "remove" the conflicting package from the package database. Of course, we could not really delete glibc
, since it's needed for pretty much everything:
$ rpm --erase --nodeps --noscripts --justdb glibc-2.14.90-14.x86_64 $ yum upgrade --setopt=protected_multilib=false --skip-broken [...]This went through successfully and the system is now properly updated and even survived a reboot. Just in case that it's still not clear from these notes: I find it unacceptable that
yum
is having such a hard time finding out how to do the Right ThingTM after a failed transaction. And yes, I've been using apt-get for years now - never had anything remotely similar to this mess. Incredible, I cannot understand how people can work with that. I mean, really work. I'm using Fedora only for playing around and while I really like some of the approaches Fedora is going for, this yum
crap is a major show stopper for me to ever adopt any rpm-based distribution. I'd rather do ports :-\Oh, apparently there's still one thing left to clean up:
$ yum check Loaded plugins: changelog, langpacks, presto, refresh-packagekit glibc-common-2.14.90-14.x86_64 has missing requires of glibc = ('0', '2.14.90', '14') glibc-common-2.14.90-19.x86_64 is a duplicate with glibc-common-2.14.90-14.x86_64In my case,
"package-cleanup --cleandupes"
solved this one. Sigh...