我似乎在OpenSuSe 12.3上破坏了我的更新系统。每当我尝试更新时,我都会收到此消息:
( 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):
在/usr/bin
查看程序dumpsolv时,我得到了这个:
# ls | grep "dumpsolv"
dumpsolv
dumpsolv;528134c9
dumpsolv;528134d2
dumpsolv;528134da
dumpsolv;528134ec
dumpsolv;5281350e
dumpsolv;52813523
dumpsolv;52828c89
dumpsolv;52880d1a
dumpsolv;52880d44...
接着是更多像这样的行。每个libsolv-tools-0.3.2-2.14.1
在查看dumpsolv时,我收到了以下错误:
# stat /usr/bin/dumpsolv
stat: cannot stat ‘/usr/bin/dumpsolv’: Input/output error
和(原因)
# lsattr /usr/bin/dumpsolv
lsattr: Input/output error while trying to stat /usr/bin/dumpsolv
我已经尝试过以下命令:
zypper ve
rpm --rebuilddb
这个: https://joshua.hoblitt.com/rtfm/2013/05/dealing_with_rpm_cpio_rename_package_installupdate_errors/
以下是导致更新问题的工具: http://rpmfind.net//linux/RPM/opensuse/updates/12.3/x86_64/libsolv-tools-0.3.2-2.14.1.x86_64.html
我的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
我真的很茫然。我已经在论坛上发帖了,但没有任何运气,他们似乎像我一样困惑:
另外,我无法重新安装当前安装的libsolv-tools
,因为我在尝试升级时遇到了同样的错误。
答案 0 :(得分:0)
好的,我修好了,我的文件系统出了问题。这是我做的:
首先我看到stat
返回输入/输出错误。这对我来说很奇怪,所以我检查了整个目录:
# stat /usr/bin/* | grep "Input/output error"
得到了一整套错误。因此我知道这不是dumpsolv的问题,而是具有更多影响的东西。这导致我搜索网络,我发现它实际上可能是文件系统中的错误。 要在OpenSuse中修复根文件系统,他们提供了一些非常好的建议: http://www.novell.com/documentation/suse91/suselinux-adminguide/html/ch12s05.html
因此,我启动了安装DVD,取消了安装,以root身份获取命令提示符,并在我的根分区上使用e2fsck
,/dev/sdb1
就像这样:
# e2fsck /dev/sdb1
在此之后,我得到了一个很长的不同inode错误列表,我仔细阅读并修复了可以修复的内容(我想这就是一切)。在此之后,我从硬盘重新启动了我的系统,问题解决了。我可以安装我的更新,现在一切正常。
但如果你试试这个:非常小心!你在这里弄乱你的根分区,你应该阅读它告诉你的一切并验证它。最好有第二台计算机运行检查,以防你不确定的事情。如果你得到一个坏的超级块(我没有),你可以使用dumpe2fs <partition>
来查看它是哪个块,然后使用e2fsck -b <block> <partition>
从备份恢复文件系统。
我在上面发布的链接中解释了一切,加上互联网上有很多网站包含有关使用e2fsck
和dumpe2fs
的信息,如果您有任何问题,请先咨询这些网站疑惑。
我希望这可以帮助别人。