1 Commits
Author SHA1 Message Date
sneak 743d24da1f Quiet the update-alternatives man page warnings in the image build (closes #222)
check / check (push) Successful in 5m44s
xz-utils' install, which nix-bin depends on, 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; the
cleanup then removes the man pages and the links and directories they added,
so the image holds exactly what it held before, and installs built from it
still drop them.

Model: deepseek-v4-pro
2026-11-07 13:15:57 +00:00
+15 -8
View File
@@ -137,18 +137,25 @@ RUN mkdir /etc/sysusers.d \
# them over plain HTTP and checks each one against the archive's signed
# package lists, so no CA certificates are needed.
#
# nix-bin depends on xz-utils, whose install links man pages with
# update-alternatives. The image's dpkg config drops man pages, so each
# link warns. z-man, read after /etc/dpkg/dpkg.cfg.d/excludes, re-includes
# the man1 pages for this install alone; the same step deletes them again,
# so no man page or package is added.
RUN echo 'path-include=/usr/share/man/man1/*' > /etc/dpkg/dpkg.cfg.d/z-man \
# 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 \
&& 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/man1 ! -type d -delete \
&& find /etc/alternatives -type l -xtype l -delete
&& 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
# 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.