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

Fixing “Unable to parse package file /var/lib/apt/lists” Error in Ubuntu and Other Linux Distributions

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

其中一些"错误"基本上是内置功能,可以防止对系统进行不必要的更改。在本快速教程中,我不会涉及那些细节。

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

读取软件包列表…错误!E:无法分析软件包文件/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_InReleaseE:无法分析或打开软件包列表或状态文件。

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

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

甚至认为它说"程序包缓存文件已损坏"也绝对不必惊慌。这真的很容易"修复"。

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

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

读取软件包列表…错误!E:无法分析软件包文件/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_InReleaseE:无法分析或打开软件包列表或状态文件。

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

这使您想到此文件不正确。现在,您所需要做的就是删除该文件并重新生成缓存。

1
sudo rm <file_that_is_not_parsed>

因此,就我而言,我可以使用以下命令:sudo rm /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_InRelease,然后使用sudo apt update命令重建缓存。

初学者循序渐进

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

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

1
cd /var/lib/apt/lists/

现在删除未解析的文件:

1
sudo rm archive.ubuntu.com_ubuntu_dists_bionic_InRelease

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

1
sudo apt update

无法解析太多文件?

如果您在更新系统时有一个或两个文件没有被解析,则可以。但是,如果系统抱怨有十或二十个此类文件,那么一一删除它们就太累了。

在这种情况下,您可以执行以下操作来删除整个缓存,然后再次生成它:

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

解释如何解决您的问题

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

用/ var / lib / apt / lists稍微复杂一点来说,它存储软件包信息缓存。当您要安装或更新程序时,系统会在此目录中检查上述软件包中的信息。如果它在软件包上找到了详细信息,那么它将转到远程存储库并实际下载程序或其更新。

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

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

仍然面临错误?

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