382

The computer gave me this output in a window:

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.

How can I fix this?

1
  • 8
    It keeps baffling me how awkwardly this operating system handles its updates, even now, that this and similar things are required after no special misuse by the user.
    – matanox
    Apr 4, 2016 at 20:41

10 Answers 10

513

These terminal commands should solve your problem:

First remove the Merge List by opening a terminal (Press Ctrl+Alt+T to launch) and run this command*:

sudo rm -vf /var/lib/apt/lists/*

Next, generate a new one by running a simple update:

sudo apt-get update

Here is the bug report (and another) for this problem, which is now fixed so it shouldn't create new malformed files, however if you already have the malformed files you need to remove them as explained in this post.


*The options used for rm are -v verbose

-v, --verbose explain what is being done

and -f force

-f, --force ignore nonexistent files and arguments, never prompt

If you are ever unsure about a command line or the options being used always refer to the manual page for the command. These can be accessed on the internet by searching for man and the command for example man rm or you can access the same information by typing exactly the same command in the terminal for example man rm instructions for quitting the page will be at the bottom of the terminal like this

picture of man page options

7
  • 8
    One individual found he had to do these two steps multiple times, but that it worked eventually. Sep 9, 2012 at 5:24
  • This also works for error Reading package lists... Error! E: Malformed Description-md5 line; includes invalid character 'fc1f7600accbcc"07ef9954ba3306c14' E: The package lists or status file could not be parsed or opened. in out-of-the-box Ubuntu 13.04 (sources.list never edited manually) May 15, 2013 at 1:10
  • 5
    It's odd to put the -vf at the end of the rm command. Jun 9, 2014 at 5:50
  • 9
    It didn't solve the issue for me. update still shows me that error.
    – marines
    Jul 4, 2014 at 9:01
  • 3
    I had to do both this and remove the status file as shown here: askubuntu.com/questions/410045/…
    – SDsolar
    Jun 29, 2017 at 19:36
86

Open a Terminal and run the following commands one at a time:

sudo rm /var/lib/apt/lists/* -vf
sudo apt-get update

See also:

3
  • 1
    what does the -vf do?
    – speedox
    Feb 2, 2013 at 15:42
  • 5
    @speedox, according to man rm, -v means 'verbose', and -f means 'force'. In other words, remove all designated files without prompting and tell the user what it is doing.
    – fouric
    Apr 10, 2013 at 0:21
  • In my case, just doing the sudo apt-get update fixed the problem. I think Allan mentioned newer versions of apt correct this automatically, so maybe try just the update first. Sep 3, 2015 at 22:22
24

You screwed up when you edited /var/lib/dpkg/status. Restore it from the backup that you made before editing it. Of course, you made a backup, right?

Since you didn't make a backup, edit it again, carefully. Try not to cause more damage.

You can use /var/lib/dpkg/status.old as a reference point. This is a backup of the status file from before the last time dpkg was run. Run

diff /var/lib/dpkg/status.old /var/lib/dpkg/status

to see the differences. Undo the changes that you made manually, and keep the changes that were made by the last dpkg run.

If you really can't manage to repair the file, copy /var/lib/dpkg/status.old over /var/lib/dpkg/status. You will get a well-formed, but out-of-date package database.

You never need to edit /var/lib/dpkg/status in normal operation. Even whe things go seriously wrong, /var/lib/dpkg/status is not something that tends to require administrator intervention. Whatever your problems with crossplatformui were, there is probably a better way of solving them. The only time I've ever needed to edit /var/lib/dpkg/status was when an upstream Packages file was broken.

5
  • I would also like to know the better way you mentioned to remove crossplatformui if you could help coz i tried every possible way to remove it and tried finding many solutions but only the one i've mentioned has worked...
    – Nirmik
    May 13, 2012 at 15:58
  • 1
    @Nirmik No idea about crossplatformui. Ask that as a separate question. I can tell you that in over a decade of using dpkg, including many unofficial sources, I've very very rarely needed to edit the status file, and only when there was a broken third-party repository. May 13, 2012 at 16:01
  • Okay...Thanx a lot once again....as you suggest i'll post it as a new question :) also as you seem a very advanced user i would like to ask you if you know anything about making non functioning HOT-KTEYS work?? (my wireless key doesent work)
    – Nirmik
    May 13, 2012 at 16:08
  • Tried to put the old in place of the new, did not fix for me. :-( Nov 26, 2015 at 11:22
  • 1
    re:{ You screwed up when you edited /var/lib/dpkg/status } as for me - no, I'm not, I haven't touched this file :) However this is only solution that do solve the problem in my case. Thank you.
    – ruslo
    Nov 8, 2016 at 10:30
21

I did

sudo apt-get clean
sudo apt-get update

and it worked.

1
16

Following steps 2-5 in the Package Manager Troubleshooting Procedure usually solves this problem.

For step 2, disable all your PPAs. You can uncheck all of them in Software Sources the same way you'd uncheck just one; see How to disable a particular PPA?. You can re-enable them later.

For step 3, close any open programs you can. It's probably safe to keep your web browser open so you have your instructions in front of you. But it's particularly important to make sure any package managers are not running. This include the Software Center, the Software Updater (Update Manager in older versions of Ubuntu), Synaptic, and Gdebi. It also includes command-line package management utilities like apt-get, dpkg, and aptitude.

Note that if other users are logged on at the same time, they should log off if possible.

For step 4, open a terminal window. One way to do this that works no matter what desktop environment you use, is to press Ctrl+Alt+T.

For step 5, run these commands in the terminal window:

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"' _ '{}' \;

I copied that verbatim from PackageManagementTroubleshoootingProcedure on 2 March 2014. Those commands have evolved in the past and the recommended commands in that article may be changed or expanded on again in the future. So you may want to work from step 5 there. (That article, created/edited by "Contributors to the Ubuntu documentation wiki"--especially Mark Rijckenberg--is licensed CC-BY-SA 3.0, which allows inclusion here with proper attribution.)

Some of those commands attempt to fix the problem (and also may show diagnostic information); others display valuable information about the problem that you can include in your question or otherwise provide to someone helping you. (Or, depending on your skills, may enable you to diagnose and solve it.)

Often this fixes it but when it doesn't it often gives enough information to fix it.

You don't have to manually type those commands; you can copy and paste them. I recommend pasting and running each one separately, though. This makes it clearer what output is from which commands.

1
  • I copied the whole block and paste instead of running one-by-one. Although several commands in this are useless and some failed, but finally it does help in my case
    – phuclv
    Jan 15, 2018 at 8:45
12

I have also seen this problem occur when you have too many sources in your repos.

Try the solution posted above and/or also perhaps this which is sometimes recommended on launchpad:

sudo mv /var/lib/apt/lists /var/lib/apt/lists-old
sudo mkdir -p /var/lib/apt/lists/partial
sudo apt-get update

Let us know how you get on.

1
  • Thank-you! This didn't work with DSL without the makedir as well.
    – Doug
    May 26, 2014 at 2:33
5

I had the same problem and tried all the troubleshooting mentioned in other answers. Strangely the only fix was a different step:

  • Go to Software & updates -> Ubuntu Software -> Download From ->Other->Select Best Server

  • Wait for the tests. At the end of the tests the best server will be selected, not necessarily the nearest one nor the main server nor the server for your locale.

  • Now Reload Repo data, It will finish properly.

4

I was running into a similar error:

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.

I followed similar suggestions to copy status-old.

$ head /var/lib/dpkg/status
$ head /var/lib/dpkg/status-old

All of my status files were blank for some reason. Luckily, I found out there are backups of these files:

$ 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

I checked the latest backup...

$ head /var/backups/dpkg.status.0

...but it was still blank. So I unzipped an older one...

$ gunzip /var/backups/dpkg.status.1.gz
$ head /var/backups/dpkg.status.1

This time there was content. So I copied it...

$ cp /var/backups/dpkg.status.1 /var/lib/dpkg/status

Then apt-get update ran without problems.

Credit goes to this post.

1

I had the same problem. These commands fixed it:

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
0

The one shot solution of this problem is to run the following two commands, one by one, in the terminal (Ctrl+Alt+T):

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

You can generate a fresh one with this command:

sudo apt-get clean && sudo apt-get update

Voila! That should solve the “problem with merge list” error.

Reference: How To Fix Ubuntu Update Error: Problem With MergeList

You must log in to answer this question.