修复 Ubuntu 和其他 Linux 发行版中的“无法解析包文件 /var/lib/apt/lists”错误

我过去曾讨论过许多 Ubuntu 更新错误。 如果您使用命令行来更新 Ubuntu,您可能会遇到一些“错误”。

其中一些“错误”基本上是内置功能,可防止对您的系统进行不必要的更改。 在本快速教程中,我不会详细介绍这些细节。

在这个快速提示中,我将向您展示如何解决更新系统或安装新软件时可能遇到的以下错误:

阅读包裹清单……错误!
E: 无法解析包文件 /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_InRelease
E: 无法解析或打开包列表或状态文件。

在 Debian 中可能会遇到类似的错误:

E: 无法解析包文件 /var/lib/apt/extended_states (1)

即使它说’绝对没有必要惊慌’包缓存文件已损坏‘。 这真的很容易“修复”。

在基于 Ubuntu 和 Debian 的 Linux 发行版中处理“无法解析包文件”错误

这是你需要做的。 仔细查看文件的名称和路径 Ubuntu 正在抱怨。

阅读包裹清单……错误!
E: 无法解析包文件 /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_InRelease
E: 无法解析或打开包列表或状态文件。

例如,在上面的错误中,它在抱怨 /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_InRelease

这使您认为此文件有问题。 现在您需要做的就是删除此文件并重新生成缓存。

sudo rm <file_that_is_not_parsed>

所以在我的情况下,我可以使用这个命令: sudo rm /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_InRelease 然后重建缓存 sudo apt 更新命令。

初学者的循序渐进

如果您熟悉 Linux 命令,您可能知道如何使用绝对路径删除文件。 对于新手用户,让我指导您安全地删除文件。

首先,您应该转到存储文件的目录:

cd /var/lib/apt/lists/

现在删除没有被解析的文件:

sudo rm archive.ubuntu.com_ubuntu_dists_bionic_InRelease

现在,如果您再次运行更新,将重新生成 apt 缓存。

sudo apt update

文件太多无法解析?

如果您有一个或两个文件在更新系统时未被解析,这很好。 但是如果系统提示十个或二十个这样的文件,一个一个地删除它们太累人了。

在这种情况下你可以做些什么来删除整个缓存然后再次生成它:

sudo rm -r /var/lib/apt/lists/* sudo apt update

解释它如何解决您的问题

/var/lib/apt 是存储与 apt 包管理器相关的文件和数据的目录。 /var/lib/apt/lists 是用于存储系统的sources.list 中指定的每个包资源的信息的目录。

简单来说,这个 /var/lib/apt/lists 存储包信息缓存。 当您要安装或更新程序时,您的系统会在此目录中检查有关所述软件包的信息。 如果它找到包的详细信息,则它会转到远程存储库并实际下载程序或其更新。

当您运行“sudo apt update”,它会构建缓存。 这就是为什么即使您删除 /var/lib/apt/lists 目录中的所有内容,运行更新也会构建新的缓存。

这就是它处理文件未解析问题的方式。 您的系统抱怨某个特定的包或存储库信息以某种方式损坏(下载失败或手动更改 source.list)。 删除该文件(或所有内容)并重建缓存可以解决问题。

仍然面临错误?

这应该为您解决问题。 但是,如果问题仍然存在,或者您有其他相关问题,请在评论部分告诉我,我会尽力帮助您。