bgu*_*uiz 6 updates filesystem apt dpkg kernel
当我运行时sudo apt-get (anything),我总是收到此错误:
dpkg: unrecoverable fatal error, aborting:
files list file for package 'thunderbird-gnome-support' is missing final newline
E: Sub-process /usr/bin/dpkg returned an error code (2)
Run Code Online (Sandbox Code Playgroud)
经过一番谷歌搜索,我了解到这是因为/var/lib/dpkg/info/thunderbird-gnome-support.list已损坏。我cat是那个文件,它肯定是损坏的——它应该是一个包含绝对文件路径列表的纯文本文件,而是一个二进制文件。
现在我检查同一目录中的其他文件,似乎其中许多文件都以相同的方式损坏。这表明我的文件系统出现了严重错误,导致许多文件损坏。不幸的是,它碰巧影响了系统文件。
我该如何从中恢复?
更多细节:
就在此之前,当 Ubuntu 提示我时,我安装了例行更新。它是一个新的 Linux 内核和一些系统文件头。
重新启动后,这些是我的规格:
操作系统规格:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 13.10
Release: 13.10
Codename: saucy
$ uname -a
Linux brendang-linux 3.11.0-24-generic #41-Ubuntu SMP Mon Jun 9 20:36:00 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
第一次重新启动后,整个文件系统似乎以只读方式挂载(以前不是这种情况)。随后,在系统工作之前,我不得不重新启动几次。我已经touch /forcefsck在它们之间完成以确保fsck运行,但不确定还需要做什么。
小智 6
就我而言,我有很多 *.list 文件损坏。如果你这样做
file /var/lib/dpkg/info/<package_name>.list
Run Code Online (Sandbox Code Playgroud)
你通常应该得到:
/var/lib/dpkg/info/<package_name>.list: ASCII text
Run Code Online (Sandbox Code Playgroud)
但如果您的列表文件已损坏,您将得到:
/var/lib/dpkg/info/<package_name>.list: data
Run Code Online (Sandbox Code Playgroud)
我制作了两个脚本来解决这个问题。
第一个脚本检查这一点并将每个损坏的 .list 文件重命名为 *.list.broken
第二个脚本循环每个 *.list.broken 文件并强制重新安装包。
有时安装会因为触发器问题而失败:
fgets gave an empty string from '/var/lib/dpkg/info/libnih1:amd64.triggers'
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您必须移动/重命名该文件,例如:
mv /var/lib/dpkg/info/libnih1:amd64.triggers /var/lib/dpkg/info/libnih1:amd64.triggers.broken
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助面临同样困境的人。
小智 0
我解决这个问题如下:
/var/lib/dpkg/info/thunderbird-gnome-support.listapt-get install --reinstall thunderbird-gnome-support这也为我重新创建了已删除的文件列表。
当然,如果很多文件都损坏了,这可能会很麻烦,但在我的例子中,它只是一个文件,并且在这种情况下解决方案非常简单。
小智 0
备份损坏的列表(您可以移动所有 .list 文件)
mkdir /tmp/damaged && mv /var/lib/dpkg/info/*.list /tmp/damaged
Run Code Online (Sandbox Code Playgroud)
然后,您可以安装新软件包
apt install thunderbird-gnome-support
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4981 次 |
| 最近记录: |