Reducing the Essential set
This is probably a wild idea, but might be perhaps interesting to explore?
The Essential:yes set poses problems in scenarios where size is limited, or when bootstrapping a distribution.
See also BusterPriorityRequalification.
bash (we have dash Remove bash from Essential)
- diffutils (only? needed by dpkg conffile prompt, ~1 MiB)
- tar (used at least by dpkg, once that is switched to an internal implementation it could be dropped? ~2.8 MiB)
- perl-base (once no perl scripts in essential, ~4.7 MiB, this would also make the interpreter problem more tractable)
findutils (once used by dpkg but not anymore, used by many maintscripts probably, ~1.5 MiB). Used by dpkg maintscript helper https://sources.debian.org/src/dpkg/1.20.7.1/scripts/dpkg-maintscript-helper.sh/
- bsdutils (~150 KiB)
- sensible-utils (out of pseudo-essential through debianutils depends, ~150 KiB → probably not worth it?)
- awk (pseudo-essential through base-files, ~200 KiB → probably not worth it)
Some of the packages involved in the boot sequence could be switched from Essential:yes to Protected:yes, which has the same effect for dpkg, apt and frontends.
e2fsprogs (once fsck out, findfs replaced by blkid lsblk, ~2.1 MiB) removal
- login
- mount
- init-system-helpers
Executables statically linked against glibc (/sbin/ldconfig in the essential set) can be built against musl or so, for >900KB savings a pop.
Trimming changelogs, stripping extra documentation to separate packages, etc, can also be good.