FS#72980 - CheckSpace doesn't honor NoExtract
|
Details
Summary and Info:
CheckSpace will currently check filesystems for all files in packages, regardless of NoExtract directives. The particular case I discovered this was for a docker container when the filesystem package needed to be updated; since Docker mounts /etc/hosts and /etc/resolv.conf read-only, pacman would refuse to update even if those files were added to NoExtract. Steps to Reproduce: Minimal test Dockerfile for the example I ran into: FROM archlinux:base-devel-20211205.0.40756 RUN echo -e '[options]NoExtract=etc/hosts\nNoExtract=etc/resolv.conf\nCheckSpace' >> /etc/pacman.conf RUN pacman -Syu filesystem --noconfirm |
This task depends upon
FROM archlinux:base-devel-20211205.0.40756
RUN echo -e '[options]NoExtract=etc/hosts\nNoExtract=etc/resolv.conf\nCheckSpace' >> /etc/pacman.conf
RUN pacman-key --init && pacman-key --populate archlinux
RUN pacman -Syu filesystem --noconfirm --debug
The relevant lines:
debug: loading fsinfo for /
debug: loading fsinfo for /etc/hosts
debug: loading fsinfo for /etc/resolv.conf
error: Partition /etc/resolv.conf is mounted read only
error: Partition /etc/hosts is mounted read only
debug: partition /, needed 0, cushion 161, free 2932631
debug: returning error 7 from _alpm_check_diskspace (../lib/libalpm/diskspace.c: 498) : not enough free disk space
error: not enough free disk space
error: failed to commit transaction (not enough free disk space)
Note: I'm not sure if the disk space check is taking into account the reduced space requirements from NoExtract files, although my specific issue is the read-only volume check. Both could be an issue.