Debian – apt-get won’t install: dpkg: files list for package ‘gnome-themes-standard-data’ is not a regular file

aptaptitudedebiandpkg

I'm trying to install packages to get a webcam stream running on my raspberry pi. All of a sudden, apt-get is totally busted — every time I try to install, reinstall or purge something that might fix the problem, I get the following error:

dpkg: unrecoverable fatal error, aborting:
 files list for package 'gnome-themes-standard-data' is not a regular file
E: Sub-process /usr/bin/dpkg returned an error code (2)

Which is remarkably frustrating! I have no idea what this error is, what caused it, or how to fix it, but it's totally stopped me in my tracks. I've tried apt-get update which runs to completion, but I can't upgrade or purge the problem package. It breaks even using -f and aptitude instead of apt-get.

Here's me trying to install ffmpeg:

pi@raspberrypi:/var/backups$ sudo apt-get install ffmpeg
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libav-tools libavdevice53 libavfilter2 libjack-jackd2-0 libopencv-core2.3 libopencv-imgproc2.3
Suggested packages:
  jackd2
The following NEW packages will be installed:
  ffmpeg libav-tools libavdevice53 libavfilter2 libjack-jackd2-0 libopencv-core2.3 libopencv-imgproc2.3
0 upgraded, 7 newly installed, 0 to remove and 150 not upgraded.
Need to get 0 B/2,235 kB of archives.
After this operation, 5,970 kB of additional disk space will be used.
Do you want to continue [Y/n]? Y
Selecting previously unselected package libjack-jackd2-0:armhf.
dpkg: unrecoverable fatal error, aborting:
 files list for package 'gnome-themes-standard-data' is not a regular file
E: Sub-process /usr/bin/dpkg returned an error code (2)
pi@raspberrypi:/var/backups$ sudo apt-get purge gnome-themes-standard-data
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  gnome-themes-standard* gnome-themes-standard-data*
0 upgraded, 0 newly installed, 2 to remove and 150 not upgraded.
After this operation, 3,892 kB disk space will be freed.
Do you want to continue [Y/n]? Y
dpkg: unrecoverable fatal error, aborting:
 files list for package 'gnome-themes-standard-data' is not a regular file
E: Sub-process /usr/bin/dpkg returned an error code (2)
pi@raspberrypi:/var/backups$ sudo apt-get update
Hit http://mirrordirector.raspbian.org wheezy InRelease
Hit http://archive.raspberrypi.org wheezy InRelease
Hit http://mirrordirector.raspbian.org wheezy/main armhf Packages
Hit http://archive.raspberrypi.org wheezy/main armhf Packages
Hit http://mirrordirector.raspbian.org wheezy/contrib armhf Packages
Hit http://mirrordirector.raspbian.org wheezy/non-free armhf Packages
Hit http://mirrordirector.raspbian.org wheezy/rpi armhf Packages
Ign http://archive.raspberrypi.org wheezy/main Translation-en_GB
Ign http://archive.raspberrypi.org wheezy/main Translation-en
Ign http://mirrordirector.raspbian.org wheezy/contrib Translation-en_GB
Ign http://mirrordirector.raspbian.org wheezy/contrib Translation-en
Ign http://mirrordirector.raspbian.org wheezy/main Translation-en_GB
Ign http://mirrordirector.raspbian.org wheezy/main Translation-en
Ign http://mirrordirector.raspbian.org wheezy/non-free Translation-en_GB
Ign http://mirrordirector.raspbian.org wheezy/non-free Translation-en
Ign http://mirrordirector.raspbian.org wheezy/rpi Translation-en_GB
Ign http://mirrordirector.raspbian.org wheezy/rpi Translation-en
E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem. 
pi@raspberrypi:/var/backups$ sudo dpkg --configure -a
pi@raspberrypi:/var/backups$ sudo apt-get update
Hit http://mirrordirector.raspbian.org wheezy InRelease
Hit http://archive.raspberrypi.org wheezy InRelease
Hit http://mirrordirector.raspbian.org wheezy/main armhf Packages
Hit http://archive.raspberrypi.org wheezy/main armhf Packages
Hit http://mirrordirector.raspbian.org wheezy/contrib armhf Packages
Hit http://mirrordirector.raspbian.org wheezy/non-free armhf Packages
Hit http://mirrordirector.raspbian.org wheezy/rpi armhf Packages
Ign http://archive.raspberrypi.org wheezy/main Translation-en_GB
Ign http://archive.raspberrypi.org wheezy/main Translation-en
Ign http://mirrordirector.raspbian.org wheezy/contrib Translation-en_GB
Ign http://mirrordirector.raspbian.org wheezy/contrib Translation-en
Ign http://mirrordirector.raspbian.org wheezy/main Translation-en_GB
Ign http://mirrordirector.raspbian.org wheezy/main Translation-en
Ign http://mirrordirector.raspbian.org wheezy/non-free Translation-en_GB
Ign http://mirrordirector.raspbian.org wheezy/non-free Translation-en
Ign http://mirrordirector.raspbian.org wheezy/rpi Translation-en_GB
Ign http://mirrordirector.raspbian.org wheezy/rpi Translation-en
Reading package lists... Done
pi@raspberrypi:/var/backups$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be upgraded:
  apt apt-utils binutils cups-bsd cups-client cups-common curl debian-reference-common debian-reference-en dmsetup
  dpkg dpkg-dev e2fslibs e2fsprogs gdb gdbserver gvfs gvfs-backends gvfs-common gvfs-daemons gvfs-fuse gvfs-libs
  idle idle-python3.2 idle3 ifupdown initramfs-tools initscripts iptables isc-dhcp-client isc-dhcp-common iso-codes
  krb5-locales libapt-inst1.5 libapt-pkg-dev libapt-pkg4.12 libarchive12 libavahi-client3 libavahi-common-data
  libavahi-common3 libavahi-glib1 libc-bin libc-dev-bin libc6 libc6-dev libcairo-gobject2 libcairo2 libcomerr2
  libcups2 libcupsimage2 libcurl3 libdbus-glib-1-2 libdevmapper-event1.02.1 libdevmapper1.02.1 libdpkg-perl
  libgail-3-0 libgcrypt11 libgl1-mesa-glx libglapi-mesa libglib2.0-0 libglib2.0-data libgnutls26 libgssapi-krb5-2
  libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk-3-0 libgtk-3-bin libgtk-3-common libgudev-1.0-0 libicu48
  libjavascriptcoregtk-1.0-0 libjavascriptcoregtk-3.0-0 libjson0 libk5crypto3 libkrb5-3 libkrb5support0 liblapack3
  liblapack3gf libldap-2.4-2 liblvm2app2.2 libnewt0.52 libobrender27 libobt0 libpixman-1-0 libpoppler19 libprocps0
  libproxy0 libqt4-network libqt4-svg libqt4-xml libqtcore4 libqtdbus4 libqtgui4 libsmbclient libsmpeg0 libss2
  libssl1.0.0 libsystemd-login0 libudev0 libwbclient0 libwebkitgtk-1.0-0 libwebkitgtk-1.0-common libwebkitgtk-3.0-0
  libwebkitgtk-3.0-common libwebp2 libxml2 libxslt1.1 linux-libc-dev locales lxtask multiarch-support openbox
  openssh-client openssh-server openssl perl perl-base perl-modules pistore poppler-utils procps python
  python-minimal python-numpy python-rpi.gpio python3 python3-minimal python3-numpy python3-rpi.gpio python3.2
  python3.2-minimal rsyslog samba-common sgml-base smbclient ssh sudo sysv-rc sysvinit sysvinit-utils tasksel
  tasksel-data tzdata udev whiptail x11-common xserver-common xserver-xorg xserver-xorg-core xserver-xorg-input-all
150 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/118 MB of archives.
After this operation, 742 kB of additional disk space will be used.
Do you want to continue [Y/n]? Y
Extracting templates from packages: 100%
Preconfiguring packages ...
dpkg: unrecoverable fatal error, aborting:
 files list for package 'gnome-themes-standard-data' is not a regular file
E: Sub-process /usr/bin/dpkg returned an error code (2)
pi@raspberrypi:/var/backups$ 

Is this fixable or do I have to flatten and reimage Wheezy on my SD card?

Any help is greatly appreciated.

Best Answer

The files list for that package is stored in /var/lib/dpkg/info/gnome-themes-standard-data.list; it is quite surprising this is anything other than a normal file.

I'd suggest ls -l or stat on it, to figure out what it is. If you can explain why its something other than a plain file (say, you symlink'd it somewhere), then undo that. If you didn't do anything to it, or its showing as something crazy, then I suggest an fsck.

If its missing entirely, you can probably grab a new copy from the .deb (extract it using dpkg-deb or ar and tar), but that could leave some cruft on your system (if the installed list didn't match exactly what was in the one from the package).

Related Question