Bug#740480: apt: "apt-get update" gives bad error when /tmp/ is full
Hi!
tl;rd: looks like now apt behaves as expected by the author of the
ticket.
A. Reproduction with apt 0.9.15.4 on Debian Stretch.
I don't have access to Jessie or Squeeze releases that are more suitable
for testing of 0.9.15.4, but I managed to reproduce the problem anyway.
I've compiled apt 0.9.15.4 from sources (with minor difficulties) and
installed it from local .deb files.
acerion@debian:~/space$ apt-get --version
apt 0.9.15.4 for amd64 compiled on Feb 22 2014 23:27:12
1. Configure /tmp with limited space.
Stretch isn't mounting /tmp through systemd's mount units/services. On
Stretch the following line needs to be added to /etc/fstab:
tmpfs /tmp tmpfs nosuid,nodev,noatime,size=10M 0 0
2. Fill /tmp with some files until you get ~50kB of free space left
acerion@debian:~$ df -h /tmp/
Filesystem Size Used Avail Use% Mounted on
tmpfs 10M 10M 48K 100% /tmp
3. Run apt-get update
acerion@debian:~$ sudo apt-get update
Ign http://archive.debian.org stretch InRelease
Get:1 http://archive.debian.org stretch-proposed-updates InRelease [96.2 kB]
Ign http://archive.debian.org stretch-proposed-updates InRelease
E: GPG error: http://archive.debian.org stretch-proposed-updates InRelease: The following signatures were invalid: NODATA 2
As you can see, the problem has been reproduced in the version from the
ticket.
B. Reproduction attempt with apt 1.4.11 on Stretch
1. Temporarily set a larger size of /tmp through entry in /etc/fstab to
allow proper installation of packages.
2. Install apt 1.4.11 with following commands:
apt-get update
apt-get -f install
apt-get install apt
3. Decrease the size of /tmp through entry in /etc/fstab back to 10M.
4. Fill /tmp with some files until only ~50kB of free space left
5. Run apt-get update
acerion@debian:~$ sudo apt-get update
Ign:1 http://archive.debian.org/debian stretch InRelease
Hit:2 http://archive.debian.org/debian stretch-proposed-updates InRelease
Err:2 http://archive.debian.org/debian stretch-proposed-updates InRelease
Splitting up /var/lib/apt/lists/archive.debian.org_debian_dists_stretch-proposed-updates_InRelease into data and signature failed
Hit:3 http://archive.debian.org/debian-security stretch/updates InRelease
Err:3 http://archive.debian.org/debian-security stretch/updates InRelease
Splitting up /var/lib/apt/lists/archive.debian.org_debian-security_dists_stretch_updates_InRelease into data and signature failed
Hit:4 http://archive.debian.org/debian stretch Release
Err:5 http://archive.debian.org/debian stretch Release.gpg
At least one invalid signature was encountered.
Reading package lists... Error!
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://archive.debian.org/debian stretch-proposed-updates InRelease: Splitting up /var/lib/apt/lists/archive.debian.org_debian_dists_stretch-proposed-updates_InRelease into data and signature failed
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://archive.debian.org/debian-security stretch/updates InRelease: Splitting up /var/lib/apt/lists/archive.debian.org_debian-security_dists_stretch_updates_InRelease into data and signature failed
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://archive.debian.org/debian stretch Release: At least one invalid signature was encountered.
W: Failed to fetch http://archive.debian.org/debian/dists/stretch-proposed-updates/InRelease Splitting up /var/lib/apt/lists/archive.debian.org_debian_dists_stretch-proposed-updates_InRelease into data and signature failed
W: Failed to fetch http://archive.debian.org/debian-security/dists/stretch/updates/InRelease Splitting up /var/lib/apt/lists/archive.debian.org_debian-security_dists_stretch_updates_InRelease into data and signature failed
W: Failed to fetch http://archive.debian.org/debian/dists/stretch/Release.gpg At least one invalid signature was encountered.
W: Some index files failed to download. They have been ignored, or old ones used instead.
E: Write error - write (28: No space left on device)
E: Write error - write (28: No space left on device)
E: The package lists or status file could not be parsed or opened.
As you can see, now the error messages are more informative, and instead
of just informing about problems with signatures, they also inform about
missing space (on an unspecified device, but that's relatively easy to
check).
C. Reproduction attempt with apt 2.9.35 in sid/Trixie
1. Decrease amount of memory allocated to /tmp
a. Open /usr/lib/systemd/system/tmp.mount
b. Find 'Options' parameter
c. Edit value of 'size' field (you can set the size using explicit value,
e.g. 1M)
d. Remount /tmp with "systemctl daemon-reload", "systemctl restart
tmp.mount"
2. Fill /tmp with some files, leaving only ~50kB of free space
3. Run "apt update"
acerion@debian:~$ sudo apt update
Hit:1 http://deb.debian.org/debian sid InRelease
Err:1 http://deb.debian.org/debian sid InRelease
Splitting up /var/lib/apt/lists/deb.debian.org_debian_dists_sid_InRelease into data and signature failed
Reading package lists... Error!
Warning: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. OpenPGP signature verification failed: http://deb.debian.org/debian sid InRelease: Splitting up /var/lib/apt/lists/deb.debian.org_debian_dists_sid_InRelease into data and signature failed
Warning: Failed to fetch http://deb.debian.org/debian/dists/sid/InRelease Splitting up /var/lib/apt/lists/deb.debian.org_debian_dists_sid_InRelease into data and signature failed
Warning: Some index files failed to download. They have been ignored, or old ones used instead.
Error: Write error - write (28: No space left on device)
Error: Write error - write (28: No space left on device)
Error: The package lists or status file could not be parsed or opened.
As you can see, the behaviour found in 1.4.11 is still found in 2.9.35.
The behaviour of current versions of apt is as expected by reporter.
It looks like the behaviour was changed somewhere between 0.9.15.4 and
1.4.11, but I'm not able to quickly pinpoint the exact commit.
To summarize: it looks like the behaviour is now as expected.
Kamil
Reply to: