E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_natty_main_binary-i386_Packages
E: The package lists or status file could not be parsed or opened.
如何解决此问题?
#1 楼
这些终端命令应该可以解决您的问题:首先通过打开终端来删除合并列表(按Ctrl + Alt + T启动)并运行以下命令*:
sudo rm -vf /var/lib/apt/lists/*
接下来,通过运行一个简单的更新来生成一个新的:
sudo apt-get update
这是此问题的错误报告(另一个),现在已修复该问题,因此它不应创建新的格式错误的文件,但是,如果您已经有格式错误的文件,则需要按照本文中的说明将其删除。
*用于rm是
-v
详细信息-v,--verbose
解释正在做的事情
和
-f
力-f,--force
忽略不存在的文件和参数,从不提示
如果不确定命令行或选项使用该命令时,请始终参考手册页。可以通过搜索man和命令(例如man rm
)在Internet上进行访问,也可以通过在终端中键入完全相同的命令来访问相同的信息,例如
man rm
退出页面的说明将位于像这样的终端底部评论
一个人发现他不得不多次执行这两个步骤,但最终还是有效。
– John S Gruber
2012年9月9日在5:24
这也适用于错误阅读包列表...错误! E:Description-md5行格式错误;包含无效字符'fc1f7600accbcc“ 07ef9954ba3306c14” E:在现成的Ubuntu 13.04中无法解析或打开包列表或状态文件(从未手动编辑sources.list)
–尼古拉斯·拉乌尔(Nicolas Raoul)
13年5月15日在1:10
将-vf放在rm命令的末尾很奇怪。
–基思·汤普森(Keith Thompson)
2014年6月9日下午5:50
它没有为我解决问题。更新仍然向我显示该错误。
–游艇
2014年7月4日在9:01
我必须同时做这件事并删除状态文件,如下所示:askubuntu.com/questions/410045/…
– SDsolar
17年6月29日在19:36
#2 楼
打开终端并一次运行以下命令:sudo rm /var/lib/apt/lists/* -vf
sudo apt-get update
另请参见:
https:// help .ubuntu.com / community / PackageManagerTroubleshootingProcedure
评论
-vf有什么作用?
– speedox
13年2月2日在15:42
@speedox,根据人rm的说法,-v表示“详细”,-f表示“力”。换句话说,在不提示的情况下删除所有指定的文件,并告诉用户它在做什么。
– Fouric
13年4月10日在0:21
就我而言,只需执行sudo apt-get update即可解决此问题。我认为Allan提到过apt的较新版本会自动更正此问题,因此也许首先尝试更新。
–雷神召唤师
2015年9月3日在22:22
#3 楼
您在编辑/var/lib/dpkg/status
时搞砸了。从编辑之前进行的备份中还原它。当然,您做了备份,对吧?由于您没有进行备份,因此请再次仔细编辑。尽量不要造成更大的损害。
您可以使用
/var/lib/dpkg/status.old
作为参考点。这是上次运行status
之前的dpkg
文件的备份。运行diff /var/lib/dpkg/status.old /var/lib/dpkg/status
以查看差异。撤消您手动进行的更改,并保留上次运行
dpkg
所做的更改。如果确实无法修复文件,请在
/var/lib/dpkg/status.old
上复制/var/lib/dpkg/status
。您将获得格式良好但已过时的软件包数据库。在正常操作中,您无需编辑
/var/lib/dpkg/status
。即使出现严重错误,/var/lib/dpkg/status
也并非往往需要管理员干预。无论您使用crossplatformui
遇到什么问题,都可能有解决这些问题的更好方法。我唯一需要编辑/var/lib/dpkg/status
的时间是上游Packages
文件损坏时。评论
我还想知道您提到的删除crossplatformui的更好方法,如果可以帮助的话,我尝试了所有可能的方法来删除它,并尝试找到许多解决方案,但只有我提到的一种有效。
– Nirmik
2012年5月13日15:58
@Nirmik不知道crossplatformui。作为一个单独的问题提出。我可以告诉您,在使用dpkg(包括许多非官方资源)的十多年中,仅在存在损坏的第三方存储库的情况下,我很少需要编辑状态文件。
–吉尔斯'所以-不再是邪恶的'
2012年5月13日下午16:01
好吧...再次非常感谢....正如您建议我将其发布为新问题:)也是您似乎非常高级的用户,我想问您是否对使HOT无法正常运行有所了解-KTEYS工作?? (我的无线钥匙确实起作用了)
– Nirmik
2012年5月13日16:08
试图用旧的代替新的,没有为我解决。 :-(
–StéphaneGourichon
15年11月26日在11:22
回复:{对我来说,您在编辑/ var / lib / dpkg / status时搞砸了-不,我不是,我没有触摸过这个文件:)但是,这只是解决了我的问题的解决方案案件。谢谢。
– ruslo
16年11月8日在10:30
#4 楼
我做了sudo apt-get clean
sudo apt-get update
并且奏效了。
评论
没有为我解决。 :-(
–StéphaneGourichon
15年11月26日在11:22
#5 楼
按照“程序包管理器故障排除过程”中的步骤2-5,通常可以解决此问题。对于步骤2,禁用所有PPA。您可以取消选中“软件源”中的所有功能,就像取消选中其中一个功能一样。请参阅如何禁用特定的PPA?您可以稍后重新启用它们。
对于步骤3,请关闭所有打开的程序。保持网络浏览器处于打开状态是安全的,这样您的说明就可以摆在面前。但是,确保任何程序包管理器未运行特别重要。其中包括软件中心,软件更新程序(Ubuntu较早版本中的更新管理器),Synaptic和Gdebi。它还包含诸如
apt-get
,dpkg
和aptitude
之类的命令行软件包管理实用程序。请注意,如果其他用户同时登录,则应尽可能注销。
对于步骤4,打开一个终端窗口。无论您使用哪种桌面环境,该方法都有效的一种方法是按Ctrl + Alt + T。
对于步骤5,在终端窗口中运行以下命令:
ubuntu-support-status
sudo grep -R proxy /etc/apt/*
grep proxy /etc/environment
echo $http_proxy
echo $ftp_proxy
grep proxy /etc/bash.bashrc
grep proxy ~/.bashrc
cat /etc/apt/apt.conf
sudo fuser -vvv /var/lib/dpkg/lock
sudo fuser -vvv /var/cache/apt/archives/lock
cat /etc/lsb-release
uname -a
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
sudo cp -arf /var/lib/dpkg /var/lib/dpkg.backup
sudo mv /var/lib/dpkg/status /var/lib/dpkg/status-bad
sudo cp /var/lib/dpkg/status-old /var/lib/dpkg/status || sudo cp /var/backups/apt.extended_states.0 /var/lib/dpkg/status
sudo mv /var/lib/dpkg/available /var/lib/dpkg/available-bad
sudo cp /var/lib/dpkg/available-old /var/lib/dpkg/available
sudo rm -rf /var/lib/dpkg/updates/*
sudo rm -rf /var/lib/apt/lists
sudo rm /var/cache/apt/*.bin
sudo mkdir /var/lib/apt/lists
sudo mkdir /var/lib/apt/lists/partial
LANG=C;sudo apt-get clean
LANG=C;sudo apt-get autoclean
LANG=C;sudo apt-get --purge autoremove
LANG=C;sudo apt-get --fix-missing update -o APT::Cache-Limit=100000000
sudo dpkg --configure -a
sudo dpkg --clear-avail
LANG=C;sudo apt-get -f install
LANG=C;sudo apt-get --fix-missing install
LANG=C;sudo apt-get update -o APT::Cache-Limit=100000000 && sudo apt-get dist-upgrade
find /etc/apt -name '*.list' -exec bash -c 'echo -e "\n\n"; cat -n ""' _ '{}' \;
我在2014年3月2日从PackageManagementTroubleshoootingProcedure复制了该逐字记录。这些命令在过去得到了发展,该文章中推荐的命令将来可能会更改或扩展。所以您可能要从第5步开始。 (该文章由“ Ubuntu文档维基的贡献者”(特别是Mark Rijckenberg创建/编辑)已获得CC-BY-SA 3.0的许可,可在此处以适当的署名包括在内。)这些命令中有哪些试图解决问题(并且还可能显示诊断信息);其他人则显示有关您的问题的有价值的信息,您可以将其包括在问题中,也可以提供给帮助您的人。 (或者,根据您的技能,可能使您能够诊断和解决它。)
通常可以解决此问题,但如果不能解决,通常会提供足够的信息来解决它。
您无需手动键入这些命令;您可以复制并粘贴它们。不过,我建议分别粘贴并运行每个。这样可以更清楚地了解来自哪些命令的输出。
评论
我复制了整个块并粘贴,而不是一个接一个地运行。尽管此命令中的几个命令是无用的,但有些命令失败了,但最终对我来说确实有帮助
–phuclv
18年1月15日在8:45
#6 楼
当您的存储库中的源太多时,我也看到过会发生此问题。尝试上面发布的解决方案和/或有时在启动板上推荐的解决方案:
sudo mv /var/lib/apt/lists /var/lib/apt/lists-old
sudo mkdir -p /var/lib/apt/lists/partial
sudo apt-get update
让我们知道如何使用。
评论
谢谢!没有makedir的DSL也无法使用。
–道格
2014年5月26日下午2:33
#7 楼
我遇到了类似的错误:Reading package lists... Error!
E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/dpkg/status
E: The package lists or status file could not be parsed or opened.
我遵循了类似的建议来复制
status-old
。$ head /var/lib/dpkg/status
$ head /var/lib/dpkg/status-old
由于某种原因,我所有的状态文件都为空白。幸运的是,我发现这些文件有备份:
$ ls -l /var/backups/dpkg.status.*
-rw-r--r-- 1 root root 444620 Nov 15 06:33 /var/backups/dpkg.status.0
-rw-r--r-- 1 root root 444620 Nov 15 06:33 /var/backups/dpkg.status.1.gz
-rw-r--r-- 1 root root 128168 Sep 20 2013 /var/backups/dpkg.status.2.gz
-rw-r--r-- 1 root root 112545 Sep 16 2013 /var/backups/dpkg.status.3.gz
-rw-r--r-- 1 root root 107767 Sep 14 2013 /var/backups/dpkg.status.4.gz
-rw-r--r-- 1 root root 107766 Sep 11 2013 /var/backups/dpkg.status.5.gz
-rw-r--r-- 1 root root 94583 Sep 11 2013 /var/backups/dpkg.status.6.gz
我检查了最新的备份...
$ head /var/backups/dpkg.status.0
...但仍然空白。所以我解压缩了一个较旧的版本。
$ gunzip /var/backups/dpkg.status.1.gz
$ head /var/backups/dpkg.status.1
这次有内容了。所以我复制了它...
$ cp /var/backups/dpkg.status.1 /var/lib/dpkg/status
然后
apt-get update
毫无问题地运行了。信用归功于这篇文章。
#8 楼
我遇到了同样的问题,并尝试了其他答案中提到的所有故障排除方法。奇怪的是,唯一的修复是不同的步骤:转到软件和更新-> Ubuntu软件->从->其他->选择最佳服务器
等待测试。在测试结束时,将选择最佳服务器,而不必选择最近的服务器,主服务器或您所在区域的服务器。
现在重新加载Repo数据,它将正确完成。
#9 楼
我有同样的问题。这些命令修复了该问题:sudo mv /var/lib/dpkg/status /var/lib/dpkg/status-new
sudo mv /var/lib/dpkg/status-old /var/lib/dpkg/status
sudo apt-get update
#10 楼
解决此问题的一种方法是在终端(Ctrl + Alt + T)中依次运行以下两个命令:sudo rm -r /var/lib/apt/lists/*
您可以使用此命令生成一个新的命令:
sudo apt-get clean && sudo apt-get update
Voila!那应该可以解决“合并列表问题”错误。
参考:如何修复Ubuntu更新错误:MergeList问题
评论
它一直困扰着我,即使在现在,该操作系统如何笨拙地处理其更新,也是如此,因为用户没有特别的误用之后,仍需要进行此操作和类似操作。