1 Commits
Author SHA1 Message Date
sneak c350411acc Quiet the update-alternatives man page warnings in the image build (closes #222)
check / check (push) Successful in 3m59s
xz-utils' install calls update-alternatives to link its man pages, but the
image's dpkg config drops man pages the moment they unpack, so it prints
one warning for each link it cannot make. A config file read after that one
re-includes man pages for this install alone, so the links are made
quietly; the man pages and that file are then removed, so the image still
holds none, and installs built from it still drop them.

Model: deepseek-v4-pro
2026-11-07 12:49:47 +00:00
+8 -15
View File
@@ -138,24 +138,17 @@ RUN mkdir /etc/sysusers.d \
# package lists, so no CA certificates are needed.
#
# The image's dpkg config drops man pages as each package unpacks, so
# xz-utils' install, which nix-bin depends on, prints an update-alternatives
# warning for every man-page link it cannot make. This side file re-includes
# them for this install alone; it is read after /etc/dpkg/dpkg.cfg.d/excludes,
# so it overrides the drop and the links are made quietly. The cleanup below
# removes the man pages and the links and directories they added, then puts
# the base image's empty man directories back. The image holds exactly what
# it held before, and installs built from it still drop man pages.
RUN find /usr/share/man -mindepth 1 -type d > /tmp/base-man-dirs \
&& echo 'path-include=/usr/share/man/*' > /etc/dpkg/dpkg.cfg.d/z-man \
# xz-utils' install prints an update-alternatives warning for every man-page
# link it cannot make. This side file re-includes them for this install
# alone; it is named to be read after /etc/dpkg/dpkg.cfg.d/excludes, so it
# overrides that drop. The man pages and the side file are removed again
# below, so the image keeps no man pages, and installs built from it still
# drop them.
RUN echo 'path-include=/usr/share/man/*' > /etc/dpkg/dpkg.cfg.d/z-man \
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install --yes --no-install-recommends \
ca-certificates nix-bin runit \
&& rm -rf /var/lib/apt/lists/* /etc/dpkg/dpkg.cfg.d/z-man \
&& find /usr/share/man ! -type d -delete \
&& find /etc/alternatives -type l -xtype l -delete \
&& find /usr/share/man -mindepth 1 -type d -empty -delete \
&& xargs -a /tmp/base-man-dirs mkdir -p \
&& rm /tmp/base-man-dirs
&& rm -rf /var/lib/apt/lists/* /usr/share/man /etc/dpkg/dpkg.cfg.d/z-man
# Nix run by root expects a group of build users, which nix-bin does not
# create; with the setting empty, root's builds run without them.