34504
Comment: housekeeping: move primary bug references to initial line for consistency
|
35347
|
Deletions are marked like this. | Additions are marked like this. |
Line 12: | Line 12: |
* SKIP: --(diffutils is Essential, why?)-- * possibly the 'cmp' utility. |
* SKIP: --(diffutils is Essential)-- |
Line 17: | Line 16: |
* Lintian check pending: DebianBug:872611 | |
Line 22: | Line 22: |
* https://lists.debian.org/debian-devel/2017/09/msg00449.html | |
Line 26: | Line 27: |
* Reason would be to give a better "out of the box" minbase experience/size, while still relying on localepurge for the full generic solution. | * 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. |
Line 43: | Line 44: |
* 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. | * 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]]). |
Line 54: | Line 55: |
* very commonly used "pidof" utility currently shipped in sysvinit-utils, move to using procps implementation and ship a separate essential procps-base package? DebianBug:810018 | * very commonly used "pidof" utility currently shipped in sysvinit-utils, move to using procps implementation and ship a separate essential procps-base package? DebianBug: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? |
Line 83: | Line 84: |
* awk is used in many scripts, including the libc6 preinst, so awk needs to be pseudo-Essential. Hence base-files Pre-Depends: awk. | * awk is used in many scripts, including the libc6 preinst, so awk needs to be pseudo-essential. Hence base-files Pre-Depends: awk. |
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.
PENDING: sensible-utils is Priority: required, why not just important? 871262
e2fsprogs is Essential: why do I want fsck on a container? 474540
- this is one of the biggest packages in a minbase chroot
- making it deinstallable would also allow deinstalling e2fslibs, libss2, libcomerr2
- 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.
PENDING: lsb-base is tiny, but why not required -> optional? 871262
REMOVAL: multiarch-support is tiny, but it has served its purpose. 871262
- any remaining (Pre-)dependencies should be dropped, most come from debhelper, so a simple rebuild should do it.
-> demote to optional/oldlibs.
libpcre3 and libattr1 Pre-Depends on it, if they have the dependency hardcoded it should be dropped, otherwise a rebuild will do. (865987)
See also https://lintian.debian.org/tags/pre-depends-directly-on-multiarch-support.html
DD-list for hardcoded pre-deps: https://lists.debian.org/debian-devel/2017/07/msg00022.html
PENDING: Downgrade all the libs to Priority: optional (with maybe an exception for libc6 just because )
- 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
- Required by dpkg and libsemanage1
- dpkg recently had compressing in bz2 format deprecated:
dpkg seems to support launching external (de)compressors when built without native support: https://anonscm.debian.org/cgit/dpkg/dpkg.git/tree/lib/dpkg/compress.c#n50
- libsemanage1 doesn't seem to use bzip2 decompression in a couple of places and doesn't seem to have any fallback handling... but maybe possible to not need libsemanage1 at all, see passwd point above.
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.
- 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