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.
怎么修复这个问题?
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.
sudo rm -vf /var/lib/apt/lists/*
sudo apt-get update
-v
详细模式
-v, --verbose 解释正在执行的操作
和-f
强制模式
-f, --force 忽略不存在的文件和参数,不提示
如果您对命令行或使用的选项有任何疑问,请始终参考该命令的手册页面。可以通过在互联网上搜索man和命令来访问这些页面,例如man rm,或者您可以在终端中键入完全相同的命令,例如man rm
,退出页面的指令将显示在终端底部,如下所示
rm
命令的末尾加上-vf
是很奇怪的。 - Keith Thompsonrm
,而是更倾向于使用apt-get clean
吗? - Pablo Hoffman-f
是非常聪明的做法,尤其是如果rm命令中有一个*
,而且可能会意外地在/var/lib/apt/lists/
和*
之间输入了一个空格
。 - Volker Siegelsudo rm /var/lib/apt/lists/* -vf
sudo apt-get update
man rm
,-v
表示“详细模式”,-f
表示“强制模式”。换句话说,删除所有指定的文件时不需要提示,并告知用户正在进行的操作。 - fouricsudo apt-get update
命令就解决了问题。我想Allan提到过更新版本的apt会自动修复这个问题,所以你可以先尝试执行更新命令。 - ThorSummoner当你编辑了/var/lib/dpkg/status
时,你搞砸了。从你编辑之前的备份中恢复它。当然,你做了备份,对吧?
既然你没有做备份,那就小心地再次编辑它。尽量不要造成更多损害。
你可以使用/var/lib/dpkg/status.old
作为参考点。这是在上一次运行dpkg
之前的status
文件的备份。运行
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
的问题是什么,可能有更好的解决方法。我只有在上游的 Packages
文件损坏时才需要编辑 /var/lib/dpkg/status
。
sudo apt-get clean
sudo apt-get update
按照软件包管理器故障排除程序中的2-5步骤通常可以解决此问题。
对于第二步,请禁用所有的PPA。您可以以与取消一个PPA相同的方式在“软件源”中取消选中它们;请参阅如何禁用特定的PPA?。您稍后可以重新启用它们。
对于第三步,请关闭您可以关闭的任何打开的程序。保持您的网络浏览器打开是安全的,这样您就可以在面前有着相关指示。但是特别重要的是确保没有正在运行的软件包管理器。这包括软件中心、软件更新(旧版Ubuntu中的“更新管理器”)、Synaptic和Gdebi。还包括命令行软件包管理实用工具,如apt-get
、dpkg
和aptitude
。
请注意,如果同时有其他用户登录,他们应该尽可能退出。
对于第四步,请打开一个终端窗口。无论您使用什么桌面环境,都可以通过按下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$1\n"; cat -n "$1"' _ '{}' \;
sudo mv /var/lib/apt/lists /var/lib/apt/lists-old
sudo mkdir -p /var/lib/apt/lists/partial
sudo apt-get update
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
顺利运行。
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
sudo rm -r /var/lib/apt/lists/*
sudo apt-get clean && sudo apt-get update
完成!那应该解决了“合并列表问题”的错误。