Differences between revisions 10 and 11
Revision 10 as of 2021-03-02 23:45:04
Size: 2467
Editor: GuillemJover
Comment: Improve
Revision 11 as of 2021-03-03 03:33:39
Size: 2523
Editor: PaulWise
Comment: possible idea for diffutils
Deletions are marked like this. Additions are marked like this.
Line 12: Line 12:
    * Used at least by dpkg conffile prompt.     * Used at least by dpkg conffile prompt. Make the diff item optional, demote to lower priority?

Reducing the Essential set

The Essential:yes set poses problems in scenarios where size is limited (such as minimal containers or chroots), or when bootstrapping a distribution. It also makes some problems related to dependencies harder as these are implicit and cannot change semantics.

Packages can either be moved out of the pseudo-essential set or they can be marked as Protected:yes (see Teams/Dpkg/Spec/ProtectedField)

  • bash (~1 MiB)
  • diffutils
    • Used at least by dpkg conffile prompt. Make the diff item optional, demote to lower priority?
  • tar (~2.8 MiB)
    • Used at least by dpkg, once that is switched to an internal implementation it could be dropped?
  • perl-base (~4.7 MiB)
    • Once no perl scripts in pseudo-essential, this would also make the interpreter problem more tractable.
  • findutils (~1.5 MiB)
    • Used at least by dpkg-maintscript-helper (but that script should eventually go away), used by many maintscripts probably.
  • bsdutils (~150 KiB)
    • logger is used by many packages in the archive which would need to grow add a dependency.

  • sensible-utils (~150 KiB)
    • Out of pseudo-essential through debianutils depends.
  • sysvinit-utils 851747

    • If everything using init-d-script just adds a dependency, making it non-essential might be possible. (Alternatively, sysvinit grows a dependency on sysvinit-utils and then everything shipping an init-d-script based init script *must* ship a masking systemd unit file.)
  • awk (~200 KiB)
    • Pseudo-essential through base-files.

Some of the packages involved in the boot sequence could or have been 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.

See also

For a historical tracking of packages that got removed from the pseudo-essential set, see BusterPriorityRequalification.