Differences between revisions 84 and 85
Revision 84 as of 2018-01-05 14:16:43
Size: 35353
Editor: ?cipher
Comment:
Revision 85 as of 2018-02-19 06:10:47
Size: 35461
Editor: ?cipher
Comment:
Deletions are marked like this. Additions are marked like this.
Line 23: Line 23:
   * MBF: https://bugs.debian.org/cgi-bin/pkgreport.cgi?users=helmutg@debian.org;tag=nonessentiale2fsprogs

This page to store ideas about the minimal base system for Buster development cycle.

Anything that's Essential: yes or has Priority: required will be installed in a debootstrap --variant=minbase - which is the smallest possible debian system. (A normal debian system does not have --variant=minbase and also includes Priority: important packages by default.)

One reason to make the smallest possible system as small as possible is to for example create containers that doesn't carry alot of unneccesary cruft. For Stretch it was made possible to create a debian installation without an init system for this purpose. For buster we can hopefully shrink it even more.... Here are some ideas and also some notes on why demoting something is not possible/trivial.

Related Proposals/EssentialOnDiet and Teams/Dpkg/Spec/ImportantField.

Questionable Essential: yes or Priority: required (part of minbase)

  • SKIP: diffutils is Essential

    • dpkg uses diff on its conffile prompt.
  • DONE: sensible-utils is Priority: required, why not just important? 871262

    • Lintian check pending: 872611

    • Note debianutils (essential) still depends on sensible-utils, preventing removal, as part of its transition after being split out from debianutils. 871260

  • e2fsprogs is Essential: why do I want fsck on a container? 474540

  • Consider splitting locales out of some/all of minbase/required packages
    • Originally suggested at https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=474540#77

    • See 'util-linux' for a package where this scheme is already implemnted
    • Reason would be to give a better "out of the box" minbase experience/size, while still relying on localepurge for the full generic solution (dpkg has built-in support to filter these, debootstrap or similar could intall a dpkg config file fragment with --exclude-path for minbase setups). Also the arguments presented in the e2fsprogs bug are not comparable to the reduction in Essential, as locales are self-contained data, to be used by a reduced set of packages, while the functionality from Essential can be used by anything else, and having no explicit depends makes it very difficult to know if something requires it or not.
  • DONE: lsb-base is tiny, but why not required -> optional? 871262

  • REMOVAL: multiarch-support is tiny, but it has served its purpose. 871262

  • PENDING: Downgrade all the libs to Priority: optional (with maybe an exception for libc6 just because ;) )

    • Relevant debian-policy change: 758234

    • Priority change request: 846982

  • why are the login tools in prio: required ?
    • these were part of Essential because they were necessary to be able to boot a system, so making them hard to deinstall was important. A similar behavior can now be achieved now by using the Important: yes field, which dpkg does not honor, but apt does (but beware the field name and its semantics might change in the near future, see Teams/Dpkg/Spec/ImportantField).

    • probably su? nologin?
    • See also 833256

      • (u-l su is 96k, while login su is 40k. Entire login package is around 2,5MB installed size though.)
    • Also, runuser is available as essential.... use that instead?
  • SKIP: and pam?

    • su (and runuser, and pkg:passwd) uses pam.
  • sysvinit-utils is Essential: yes 851747

    • if everything using init-d-script just adds a dep this should be possible to make non-essential. (Alternatively, sysvinit deps on sysvinit-utils and then everything shipping an init-d-script based init script *must* ship a masking native unit file.)
    • very commonly used "pidof" utility currently shipped in sysvinit-utils, move to using procps implementation and ship a separate essential procps-base package? 810018 ; What's the point of this shuffling (instead of a possible elimination) of Essential packages, besides possibly getting rid of sysvinit packages from the system?

  • DONE: Make passwd deinstallable

    • passwd is Priority: required, so will be part of minbase. Currently not deinstallable because of libuuid1 depending on it.
    • libuuid1 dependency is because of postinst migration code, which is obsolete. Drop the postinst migration code in libuuid1 (and uuid-runtime) and drop the passwd dependency.
    • possibly also consider if passwd should be lowered to Priority: important
    • Making passwd deinstallable would also allow deinstalling libsemanage1, libsemanage-common, libsepol1, libustr-1.0-1
    • Fixes pending in post-stretch branch: https://anonscm.debian.org/cgit/collab-maint/pkg-util-linux.git/log/?h=wip/master-cleanup

  • SKIP: libbz2-1.0

  • DONE: Consider splitting fdisk into separate package

    • Splitting sfdisk, cfdisk and fdisk out of the util-linux package could allow for the fdisk tools to be deinstallable. This would then allow deinstalling libfdisk1.
    • Note: cfdisk and pg are the only util-linux tools needing libncursesw5 and pg is deprecated so we should probably consider stop shipping pg. This would allow also deinstalling libncursesw5.

    • MBF: fdisk-dependency fdisk-rec-sug fdisk-build-dependency

  • libsystemd0
    • libsystemd0 brings in liblz4-1, libgcrypt20 + libgpg-error0 (and liblzma5 together with dpkg).
    • libsystemd0 needed by lslogins (util-linux) and logger (bsdutils).
    • lslogins is new and virtually unused, maybe it can be moved to a non-essential package to get rid of util-linux dep on libsystemd0.
    • bsdutils maybe can be made non-essential, but logger is used by very many packages in the archive which would then need to add a dep on bsdutils.
  • mawk
    • awk is used in many scripts, including the libc6 preinst, so awk needs to be pseudo-essential. Hence base-files Pre-Depends: awk.
    • debootstrap cannot resolve virtual dependencies, so mawk has Priority: required to ensure debootstrap downloads and installs it.
    • Could be replaced by original-awk, but debootstrap currently has mawk hardcoded (861343).

    • See also upstream shaming us under "Related Links": http://invisible-island.net/mawk/mawk.html

Other priority changes for regular installs (important is part of regular default install):

  • blends-tasks (846002)

  • debconf-i18n: important -> standard

  • dmidecode
  • gnupg could maybe also be downgraded again (standard or even optional). apt is back to gpgv.

Appendix a - complete list of packages in 'minbase':

adduser
apt
base-files
base-passwd
bash
bsdutils
coreutils
dash
debconf
debian-archive-keyring
debianutils
diffutils
dpkg
e2fslibs:amd64
e2fsprogs
findutils
gcc-5-base:amd64
gcc-6-base:amd64
gpgv
grep
gzip
hostname
init-system-helpers
libacl1:amd64
libapt-pkg5.0:amd64
libattr1:amd64
libaudit-common
libaudit1:amd64
libblkid1:amd64
libbz2-1.0:amd64
libc-bin
libc6:amd64
libcap-ng0:amd64
libcomerr2:amd64
libdb5.3:amd64
libdebconfclient0:amd64
libfdisk1:amd64
libgcc1:amd64
libgcrypt20:amd64
libgpg-error0:amd64
liblz4-1:amd64
liblzma5:amd64
libmount1:amd64
libncursesw5:amd64
libpam-modules:amd64
libpam-modules-bin
libpam-runtime
libpam0g:amd64
libpcre3:amd64
libselinux1:amd64
libsemanage-common
libsemanage1:amd64
libsepol1:amd64
libsmartcols1:amd64
libss2:amd64
libstdc++6:amd64
libsystemd0:amd64
libtinfo5:amd64
libudev1:amd64
libustr-1.0-1:amd64
libuuid1:amd64
login
lsb-base
mawk
mount
multiarch-support
ncurses-base
ncurses-bin
passwd
perl-base
sed
sensible-utils
sysvinit-utils
tar
tzdata
util-linux
zlib1g:amd64

Appendix b - easily deinstallable from minbase

These packages can be deinstalled and is gone from a minbase if you just dpkg --purge them:

adduser
apt
debian-archive-keyring
gcc-5-base
gcc-6-base
gpgv
libapt-pkg5.0
libffi6
libgmp10
libgnutls30
libhogweed4
libidn2-0
libnettle6
libp11-kit0
libsemanage-common
libsemanage1
libsepol1
libstdc++6
libtasn1-6
libunistring2
libustr-1.0-1
lsb-base
passwd
tzdata

(ie. they are only installed in minbase because of their Priority: required status or debootstrap pulling them in specifically.)

These are the reasons dpkg lists for not being able to purge the remaining ones:

====== base-files
dpkg: error processing package base-files (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 base-files
====== base-passwd
dpkg: error processing package base-passwd (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 base-passwd
====== bash
dpkg: error processing package bash (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 bash
====== bsdutils
dpkg: error processing package bsdutils (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 bsdutils
====== coreutils
dpkg: error processing package coreutils (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 coreutils
====== dash
dpkg: error processing package dash (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 dash
====== debconf
dpkg: dependency problems prevent removal of debconf:
 libpam0g:amd64 depends on debconf (>= 0.5) | debconf-2.0; however:
  Package debconf is to be removed.
  Package debconf-2.0 is not installed.
  Package debconf which provides debconf-2.0 is to be removed.
 libpam-modules:amd64 depends on debconf (>= 0.5) | debconf-2.0; however:
  Package debconf is to be removed.
  Package debconf-2.0 is not installed.
  Package debconf which provides debconf-2.0 is to be removed.
 libpam-runtime depends on debconf (>= 0.5) | debconf-2.0; however:
  Package debconf is to be removed.
  Package debconf-2.0 is not installed.
  Package debconf which provides debconf-2.0 is to be removed.
 libpam-runtime depends on debconf (>= 1.5.19) | cdebconf; however:
  Package debconf is to be removed.
  Package cdebconf is not installed.
 libpam-runtime depends on debconf (>= 0.5) | debconf-2.0; however:
  Package debconf is to be removed.
  Package debconf-2.0 is not installed.
  Package debconf which provides debconf-2.0 is to be removed.
 libpam-runtime depends on debconf (>= 1.5.19) | cdebconf; however:
  Package debconf is to be removed.
  Package cdebconf is not installed.
 libpam0g:amd64 depends on debconf (>= 0.5) | debconf-2.0; however:
  Package debconf is to be removed.
  Package debconf-2.0 is not installed.
  Package debconf which provides debconf-2.0 is to be removed.
 libpam-modules:amd64 depends on debconf (>= 0.5) | debconf-2.0; however:
  Package debconf is to be removed.
  Package debconf-2.0 is not installed.
  Package debconf which provides debconf-2.0 is to be removed.
 libpam-runtime depends on debconf (>= 0.5) | debconf-2.0; however:
  Package debconf is to be removed.
  Package debconf-2.0 is not installed.
  Package debconf which provides debconf-2.0 is to be removed.
 libpam-runtime depends on debconf (>= 1.5.19) | cdebconf; however:
  Package debconf is to be removed.
  Package cdebconf is not installed.

dpkg: error processing package debconf (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 debconf
====== debianutils
dpkg: error processing package debianutils (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 debianutils
====== diffutils
dpkg: error processing package diffutils (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 diffutils
====== dpkg
dpkg: error processing package dpkg (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 dpkg
====== e2fslibs:amd64
dpkg: dependency problems prevent removal of e2fslibs:amd64:
 e2fsprogs depends on e2fslibs (= 1.43.4-2).

dpkg: error processing package e2fslibs:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 e2fslibs:amd64
====== e2fsprogs
dpkg: error processing package e2fsprogs (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 e2fsprogs
====== findutils
dpkg: error processing package findutils (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 findutils
====== gcc-7-base:amd64
dpkg: dependency problems prevent removal of gcc-7-base:amd64:
 libgcc1:amd64 depends on gcc-7-base (= 7.1.0-9).

dpkg: error processing package gcc-7-base:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 gcc-7-base:amd64
====== grep
dpkg: error processing package grep (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 grep
====== gzip
dpkg: error processing package gzip (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 gzip
====== hostname
dpkg: error processing package hostname (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 hostname
====== init-system-helpers
dpkg: error processing package init-system-helpers (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 init-system-helpers
====== libacl1:amd64
dpkg: dependency problems prevent removal of libacl1:amd64:
 tar depends on libacl1 (>= 2.2.51-8).
 coreutils depends on libacl1 (>= 2.2.51-8).

dpkg: error processing package libacl1:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libacl1:amd64
====== libattr1:amd64
dpkg: dependency problems prevent removal of libattr1:amd64:
 libacl1:amd64 depends on libattr1 (>= 1:2.4.46-8).
 coreutils depends on libattr1 (>= 1:2.4.46-8).

dpkg: error processing package libattr1:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libattr1:amd64
====== libaudit-common
dpkg: dependency problems prevent removal of libaudit-common:
 libaudit1:amd64 depends on libaudit-common (>= 1:2.7.7-1).

dpkg: error processing package libaudit-common (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libaudit-common
====== libaudit1:amd64
dpkg: dependency problems prevent removal of libaudit1:amd64:
 login depends on libaudit1 (>= 1:2.2.1).
 libpam0g:amd64 depends on libaudit1 (>= 1:2.2.1).
 libpam-modules:amd64 depends on libaudit1 (>= 1:2.2.1).
 libpam-modules-bin depends on libaudit1 (>= 1:2.2.1).

dpkg: error processing package libaudit1:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libaudit1:amd64
====== libblkid1:amd64
dpkg: dependency problems prevent removal of libblkid1:amd64:
 util-linux depends on libblkid1 (>= 2.25).
 libmount1:amd64 depends on libblkid1 (>= 2.17.2).
 e2fsprogs depends on libblkid1 (>= 2.17.2).
 libfdisk1:amd64 depends on libblkid1 (>= 2.24.2).
 mount depends on libblkid1 (>= 2.17.2).

dpkg: error processing package libblkid1:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libblkid1:amd64
====== libbz2-1.0:amd64
dpkg: dependency problems prevent removal of libbz2-1.0:amd64:
 dpkg depends on libbz2-1.0.

dpkg: error processing package libbz2-1.0:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libbz2-1.0:amd64
====== libc-bin
dpkg: error processing package libc-bin (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 libc-bin
====== libc6:amd64
dpkg: dependency problems prevent removal of libc6:amd64:
 libsmartcols1:amd64 depends on libc6 (>= 2.17).
 sed depends on libc6 (>= 2.14).
 util-linux depends on libc6 (>= 2.15).
 libgcc1:amd64 depends on libc6 (>= 2.14).
 ncurses-bin depends on libc6 (>= 2.14).
 libacl1:amd64 depends on libc6 (>= 2.14).
 login depends on libc6 (>= 2.14).
 libmount1:amd64 depends on libc6 (>= 2.17).
 libcap-ng0:amd64 depends on libc6 (>= 2.8).
 libpam0g:amd64 depends on libc6 (>= 2.14).
 findutils depends on libc6 (>= 2.17).
 libcomerr2:amd64 depends on libc6 (>= 2.17).
 libpam-modules:amd64 depends on libc6 (>= 2.15).
 diffutils depends on libc6 (>= 2.17).
 dpkg depends on libc6 (>= 2.14).
 libselinux1:amd64 depends on libc6 (>= 2.14).
 libdebconfclient0:amd64 depends on libc6 (>= 2.4).
 sysvinit-utils depends on libc6 (>= 2.14).
 libc-bin depends on libc6 (>> 2.24).
 libc-bin depends on libc6 (<< 2.25).
 libc-bin depends on libc6 (>> 2.24).
 libc-bin depends on libc6 (<< 2.25).
 libgpg-error0:amd64 depends on libc6 (>= 2.15).
 libblkid1:amd64 depends on libc6 (>= 2.17).
 libbz2-1.0:amd64 depends on libc6 (>= 2.4).
 tar depends on libc6 (>= 2.17).
 e2fsprogs depends on libc6 (>= 2.14).
 coreutils depends on libc6 (>= 2.17).
 libpcre3:amd64 depends on libc6 (>= 2.14).
 libfdisk1:amd64 depends on libc6 (>= 2.17).
 libsystemd0:amd64 depends on libc6 (>= 2.17).
 mount depends on libc6 (>= 2.17).
 dash depends on libc6 (>= 2.14).
 bsdutils depends on libc6 (>= 2.16).
 gzip depends on libc6 (>= 2.17).
 mawk depends on libc6 (>= 2.14).
 multiarch-support depends on libc6 (>= 2.3.6-2).
 hostname depends on libc6 (>= 2.4).
 zlib1g:amd64 depends on libc6 (>= 2.14).
 libdb5.3:amd64 depends on libc6 (>= 2.17).
 libuuid1:amd64 depends on libc6 (>= 2.4).
 bash depends on libc6 (>= 2.15).
 libncursesw5:amd64 depends on libc6 (>= 2.14).
 libgcrypt20:amd64 depends on libc6 (>= 2.15).
 debianutils depends on libc6 (>= 2.15).
 liblz4-1:amd64 depends on libc6 (>= 2.14).
 e2fslibs:amd64 depends on libc6 (>= 2.17).
 base-passwd depends on libc6 (>= 2.8).
 grep depends on libc6 (>= 2.14).
 libpam-modules-bin depends on libc6 (>= 2.14).
 liblzma5:amd64 depends on libc6 (>= 2.17).
 libss2:amd64 depends on libc6 (>= 2.17).
 libattr1:amd64 depends on libc6 (>= 2.4).
 libudev1:amd64 depends on libc6 (>= 2.17).
 perl-base depends on libc6 (>= 2.23).
 libtinfo5:amd64 depends on libc6 (>= 2.16).
 libaudit1:amd64 depends on libc6 (>= 2.14).

dpkg: error processing package libc6:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libc6:amd64
====== libcap-ng0:amd64
dpkg: dependency problems prevent removal of libcap-ng0:amd64:
 libaudit1:amd64 depends on libcap-ng0.

dpkg: error processing package libcap-ng0:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libcap-ng0:amd64
====== libcomerr2:amd64
dpkg: dependency problems prevent removal of libcomerr2:amd64:
 e2fsprogs depends on libcomerr2 (>= 1.42~WIP-2011-10-05-1).
 libss2:amd64 depends on libcomerr2.

dpkg: error processing package libcomerr2:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libcomerr2:amd64
====== libdb5.3:amd64
dpkg: dependency problems prevent removal of libdb5.3:amd64:
 libpam-modules:amd64 depends on libdb5.3.

dpkg: error processing package libdb5.3:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libdb5.3:amd64
====== libdebconfclient0:amd64
dpkg: dependency problems prevent removal of libdebconfclient0:amd64:
 base-passwd depends on libdebconfclient0 (>= 0.145).

dpkg: error processing package libdebconfclient0:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libdebconfclient0:amd64
====== libfdisk1:amd64
dpkg: dependency problems prevent removal of libfdisk1:amd64:
 util-linux depends on libfdisk1 (>= 2.29~rc2).

dpkg: error processing package libfdisk1:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libfdisk1:amd64
====== libgcc1:amd64
dpkg: dependency problems prevent removal of libgcc1:amd64:
 libc6:amd64 depends on libgcc1.

dpkg: error processing package libgcc1:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libgcc1:amd64
====== libgcrypt20:amd64
dpkg: dependency problems prevent removal of libgcrypt20:amd64:
 libsystemd0:amd64 depends on libgcrypt20 (>= 1.7.0).

dpkg: error processing package libgcrypt20:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libgcrypt20:amd64
====== libgpg-error0:amd64
dpkg: dependency problems prevent removal of libgpg-error0:amd64:
 libgcrypt20:amd64 depends on libgpg-error0 (>= 1.14).

dpkg: error processing package libgpg-error0:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libgpg-error0:amd64
====== liblz4-1:amd64
dpkg: dependency problems prevent removal of liblz4-1:amd64:
 libsystemd0:amd64 depends on liblz4-1 (>= 0.0~r113).

dpkg: error processing package liblz4-1:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 liblz4-1:amd64
====== liblzma5:amd64
dpkg: dependency problems prevent removal of liblzma5:amd64:
 dpkg depends on liblzma5 (>= 5.2.2).
 libsystemd0:amd64 depends on liblzma5 (>= 5.1.1alpha+20120614).

dpkg: error processing package liblzma5:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 liblzma5:amd64
====== libmount1:amd64
dpkg: dependency problems prevent removal of libmount1:amd64:
 util-linux depends on libmount1 (>= 2.25).
 mount depends on libmount1 (>= 2.25).

dpkg: error processing package libmount1:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libmount1:amd64
====== libncursesw5:amd64
dpkg: dependency problems prevent removal of libncursesw5:amd64:
 util-linux depends on libncursesw5 (>= 6).

dpkg: error processing package libncursesw5:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libncursesw5:amd64
====== libpam-modules:amd64
dpkg: dependency problems prevent removal of libpam-modules:amd64:
 login depends on libpam-modules (>= 1.1.8-1).
 libpam-runtime depends on libpam-modules (>= 1.0.1-6).

dpkg: error processing package libpam-modules:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libpam-modules:amd64
====== libpam-modules-bin
dpkg: dependency problems prevent removal of libpam-modules-bin:
 libpam-modules:amd64 depends on libpam-modules-bin (= 1.1.8-3.6).

dpkg: error processing package libpam-modules-bin (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libpam-modules-bin
====== libpam-runtime
dpkg: dependency problems prevent removal of libpam-runtime:
 login depends on libpam-runtime.

dpkg: error processing package libpam-runtime (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libpam-runtime
====== libpam0g:amd64
dpkg: dependency problems prevent removal of libpam0g:amd64:
 util-linux depends on libpam0g (>= 0.99.7.1).
 login depends on libpam0g (>= 0.99.7.1).
 libpam-modules:amd64 depends on libpam0g (>= 1.1.3-2).
 libpam-modules-bin depends on libpam0g (>= 0.99.7.1).

dpkg: error processing package libpam0g:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libpam0g:amd64
====== libpcre3:amd64
dpkg: dependency problems prevent removal of libpcre3:amd64:
 libselinux1:amd64 depends on libpcre3.
 grep depends on libpcre3.

dpkg: error processing package libpcre3:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libpcre3:amd64
====== libselinux1:amd64
dpkg: dependency problems prevent removal of libselinux1:amd64:
 sed depends on libselinux1 (>= 1.32).
 util-linux depends on libselinux1 (>= 2.6-3~).
 libmount1:amd64 depends on libselinux1 (>= 2.6-3~).
 findutils depends on libselinux1 (>= 1.32).
 libpam-modules:amd64 depends on libselinux1 (>= 2.1.9).
 dpkg depends on libselinux1 (>= 2.3).
 tar depends on libselinux1 (>= 1.32).
 coreutils depends on libselinux1 (>= 2.1.13).
 libsystemd0:amd64 depends on libselinux1 (>= 2.1.9).
 mount depends on libselinux1 (>= 2.6-3~).
 libpam-modules-bin depends on libselinux1 (>= 1.32).

dpkg: error processing package libselinux1:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libselinux1:amd64
====== libsmartcols1:amd64
dpkg: dependency problems prevent removal of libsmartcols1:amd64:
 util-linux depends on libsmartcols1 (>= 2.28~rc1).
 mount depends on libsmartcols1 (>= 2.28~rc1).

dpkg: error processing package libsmartcols1:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libsmartcols1:amd64
====== libss2:amd64
dpkg: dependency problems prevent removal of libss2:amd64:
 e2fsprogs depends on libss2 (>= 1.34-1).

dpkg: error processing package libss2:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libss2:amd64
====== libsystemd0:amd64
dpkg: dependency problems prevent removal of libsystemd0:amd64:
 util-linux depends on libsystemd0.
 bsdutils depends on libsystemd0.

dpkg: error processing package libsystemd0:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libsystemd0:amd64
====== libtinfo5:amd64
dpkg: dependency problems prevent removal of libtinfo5:amd64:
 util-linux depends on libtinfo5 (>= 6).
 ncurses-bin depends on libtinfo5 (>= 6.0+20170715).
 ncurses-bin depends on libtinfo5 (<< 6.1~).
 ncurses-bin depends on libtinfo5 (>= 6.0+20170715).
 ncurses-bin depends on libtinfo5 (<< 6.1~).
 bash depends on libtinfo5 (>= 6).
 libncursesw5:amd64 depends on libtinfo5 (= 6.0+20170715-2).

dpkg: error processing package libtinfo5:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libtinfo5:amd64
====== libudev1:amd64
dpkg: dependency problems prevent removal of libudev1:amd64:
 util-linux depends on libudev1 (>= 183).
 mount depends on libudev1 (>= 183).

dpkg: error processing package libudev1:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libudev1:amd64
====== libuuid1:amd64
dpkg: dependency problems prevent removal of libuuid1:amd64:
 util-linux depends on libuuid1 (>= 2.16).
 libblkid1:amd64 depends on libuuid1 (>= 2.16).
 e2fsprogs depends on libuuid1 (>= 2.16).
 libfdisk1:amd64 depends on libuuid1 (>= 2.16).

dpkg: error processing package libuuid1:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libuuid1:amd64
====== login
dpkg: error processing package login (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 login
====== mawk
dpkg: dependency problems prevent removal of mawk:
 base-files depends on awk; however:
  Package awk is not installed.
  Package mawk which provides awk is to be removed.

dpkg: error processing package mawk (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 mawk
====== mount
dpkg: error processing package mount (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 mount
====== multiarch-support
dpkg: dependency problems prevent removal of multiarch-support:
 libpcre3:amd64 depends on multiarch-support.

dpkg: error processing package multiarch-support (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 multiarch-support
====== ncurses-base
dpkg: error processing package ncurses-base (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 ncurses-base
====== ncurses-bin
dpkg: error processing package ncurses-bin (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 ncurses-bin
====== perl-base
dpkg: error processing package perl-base (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 perl-base
====== sed
dpkg: error processing package sed (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 sed
====== sensible-utils
dpkg: dependency problems prevent removal of sensible-utils:
 debianutils depends on sensible-utils.

dpkg: error processing package sensible-utils (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 sensible-utils
====== sysvinit-utils
dpkg: error processing package sysvinit-utils (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 sysvinit-utils
====== tar
dpkg: error processing package tar (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 tar
====== util-linux
dpkg: error processing package util-linux (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 util-linux
====== zlib1g:amd64
dpkg: dependency problems prevent removal of zlib1g:amd64:
 util-linux depends on zlib1g (>= 1:1.1.4).
 dpkg depends on zlib1g (>= 1:1.1.4).

dpkg: error processing package zlib1g:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 zlib1g:amd64

Appendix c - remaining non-deinstallable packages

Here's a list of the installed packages sorted by size in a --variant=minbase chroot after trying to deinstall as much as possible (ie. appendix b):

# dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr  

15103   coreutils
10682   libc6
7543    perl-base
6745    dpkg
5798    bash
4022    e2fsprogs
3443    util-linux
3365    libc-bin
2770    tar
2747    login
1880    findutils
1814    libdb5.3
1327    diffutils
1263    libgcrypt20
1035    grep
1016    libpam-runtime
874     libpam-modules
799     sed
668     libpcre3
654     libsystemd0
576     libgpg-error0
561     debconf
556     ncurses-bin
488     libtinfo5
470     libfdisk1
449     e2fslibs
445     mount
404     libmount1
368     libblkid1
347     ncurses-base
347     libncursesw5
338     liblzma5
333     base-files
258     libsmartcols1
239     gcc-7-base
239     bsdutils
231     gzip
229     libpam0g
229     base-passwd
220     multiarch-support
220     libpam-modules-bin
214     libudev1
213     debianutils
209     libselinux1
204     dash
183     mawk
157     libaudit1
156     zlib1g
131     init-system-helpers
110     sysvinit-utils
108     libgcc1
106     libuuid1
96      libbz2-1.0
95      libss2
93      liblz4-1
83      libcomerr2
67      libdebconfclient0
62      sensible-utils
62      libacl1
47      hostname
43      libcap-ng0
42      libattr1
32      libaudit-common

Appendix d - space of locales in minbase/required packages

The breakdown of all of the packages with locale files in the minbase set in Debian Jessie. The savings (in kilobytes of installed size) if we were to split out their locale files. The cummulative savings if we split the top N packages.

Package

Savings

Cummulative Savings

Percentage

coreutils

8052

8052

24.91

dpkg

4620

12672

39.20

bash

3744

16416

50.78

gnupg

3424

19840

61.37

e2fsprogs

1776

21616

66.86

tar

1680

23296

72.06

shadow

1632

24928

77.11

apt

1528

26456

81.84

libapt-pkg4.12

1052

27508

85.09

Linux-PAM

796

28304

87.55

findutils

756

29060

89.89

grep

636

29696

91.86

diffutils

620

30316

93.78

debconf

596

30912

95.62

adduser

444

31356

96.99

sed

428

31784

98.32

libgpg-error

388

32172

99.52

systemd

84

32256

99.78

acl

72

32328

100.00

Source: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=474540#77