I seem to have broken my update system on OpenSuSe 12.3. Whenever I try to update I get this message:
( 1/23) Installing: libsolv-tools-0.3.2-2.14.1 .....................................[error]
Installation of libsolv-tools-0.3.2-2.14.1 failed:
(with --nodeps --force) Error: Subprocess failed. Error: RPM failed: error: unpacking of archive failed on file /usr/bin/dumpsolv: cpio: rename failed - Input/output error
error: libsolv-tools-0.3.2-2.14.1.x86_64: install failed
error: libsolv-tools-0.3.2-2.10.1.x86_64: erase skipped
Abort, retry, ignore? [a/r/i] (a):
When looking at for program dumpsolv in /usr/bin
, I get this:
# ls | grep "dumpsolv"
dumpsolv
dumpsolv;528134c9
dumpsolv;528134d2
dumpsolv;528134da
dumpsolv;528134ec
dumpsolv;5281350e
dumpsolv;52813523
dumpsolv;52828c89
dumpsolv;52880d1a
dumpsolv;52880d44...
followed by many more lines like this. One for every failed installation of libsolv-tools-0.3.2-2.14.1
When looking at dumpsolv I get these errors:
# stat /usr/bin/dumpsolv
stat: cannot stat ‘/usr/bin/dumpsolv’: Input/output error
and (of cause)
# lsattr /usr/bin/dumpsolv
lsattr: Input/output error while trying to stat /usr/bin/dumpsolv
I already tried out the following commands:
zypper ve
rpm --rebuilddb
And this: https://joshua.hoblitt.com/rtfm/2013/05/dealing_with_rpm_cpio_rename_package_installupdate_errors/
Here is the tool that is causing the update issue: http://rpmfind.net//linux/RPM/opensuse/updates/12.3/x86_64/libsolv-tools-0.3.2-2.14.1.x86_64.html
And my uname
# uname -a
Linux linux-3hbw.site 3.7.10-1.16-desktop #1 SMP PREEMPT Fri May 31 20:21:23 UTC 2013 (97c14ba) x86_64 x86_64 x86_64 GNU/Linux
I am really at a loss here. I already posted in there forums, but without any luck, they seem to be as puzzled as I am:
Also, I cannot reinstall the currently installed libsolv-tools
, as I get the same error that I get when trying to upgrade.
Ok, I fixed it, It was a problem with my file-system. Here is what I did:
First I saw that stat
returned an input/output error. That seemed strange to me, so I checked the whole directory:
# stat /usr/bin/* | grep "Input/output error"
And got a whole list of errors. Thus I knew that it was not a problem with dumpsolv, but rather something with a bit more impact. This lead me to search the web and I found out that it could in fact be an error in the file-system. To repair the root file-system in OpenSuse they offer some really great advice: http://www.novell.com/documentation/suse91/suselinux-adminguide/html/ch12s05.html
Thus I booted up the installation-DVD, canceled the installation to get my command-prompt as root and used e2fsck
on my root partition, which is /dev/sdb1
like so:
# e2fsck /dev/sdb1
After this I got a really long list of different inode errors, which I read carefully and fixed whatever could be fixed (which was everything, I guess). After this I rebooted my system from harddrive and the problem was solved. I can install my updates and everything is running fine now.
But if you try this: be extremely careful! You are messing with your root partition here and you should read everything it tells you and verify it. Best have a second computer running to check in case you are not sure about something. If you get a bad superblock (which I did not have) you can use dumpe2fs <partition>
in order to see which block it is and then use e2fsck -b <block> <partition>
to restore the file-system from backup.
Everything is explained well in the link I posted above plus there are a lot of websites on the internet containing information about the use of e2fsck
and dumpe2fs
, you should consult these first if you have any doubts.
I do hope that this can help someone else.