Package: util-linux Version: 2.34-0.1 Severity: wishlist User: helm...@debian.org Usertags: nonessentialfdisk Control: tags -1 + moreinfo
Hi, as discussed with Andreas Henriksson (temporary util-linux maintainer) and others, I think that fdisk (and cfdisk and sfdisk) should not be part of an essential Debian installation. Initially, fdisk was part of the util-linux binary package. For buster, it was split out to a separate fdisk binary package. Since util-linux originally shipped the binary, a dependency from util-linux on fdisk was added. This dependency makes fdisk pseudo-essential and unremovable. We want to get rid of that dependency. Doing so makes an essential installation about 1MB smaller. Before we can do that, we must ensure that other packages that use one of the fdisk tools declare a dependency on fdisk. This has not yet happened, which is why I am tagging this bug moreinfo. Nevertheless, I want a bug number now to have a central place for discussions on making fdisk non-essential. The following packages already depend on (or recommend or suggest) fdisk: backupninja, boot-info-script, bootcd, cedar-backup3, clonezilla, cloud-init, cloud-initramfs-growroot, crmsh, ddrutility, drbl, fai-client, freedom-maker, fusioninventory-agent, ganeti, ganeti-instance-debootstrap, gpart, grml-debootstrap, hw-probe, libblockdev-part2, libguestfs0, live-clone, mkosi, nmon, nova-compute, obs-worker, ocsinventory-agent, percona-toolkit, rear, reiserfsprogs, salt-minion, uhd-host, vbackup These packages will be unaffected by making fdisk non-essential. The more difficult question is which packages use fdisk without declaring a dependency on it. To that end, I downloaded every binary package from unstable amd64. I extracted them and grepped every file for the string "fdisk". This includes decompressing gzip compressed files before grepping as well as grepping control files (e.g. maintainer scripts). This resulted in around 300 candidate packages. I further filtered the list e.g. removing references from /usr/share/doc, locales, html files, dictionaries etc. Then I investigated the remaining cases manually. I've arrived at the following references: $binarypackage $filename ($filemagic) calamares ./usr/lib/x86_64-linux-gnu/calamares/modules/partition/libcalamares_viewmodule_partition.so (ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux)) cdist ./usr/lib/python3/dist-packages/cdist/conf/type/__install_partition_msdos/man.rst (ASCII text) cdist ./usr/lib/python3/dist-packages/cdist/conf/type/__install_partition_msdos_apply/files/lib.sh (POSIX shell script, ASCII text executable) cdist ./usr/lib/python3/dist-packages/cdist/conf/type/__install_reset_disk/gencode-remote (POSIX shell script, ASCII text executable) cloud-guest-utils ./usr/bin/growpart (POSIX shell script, ASCII text executable) cloud-image-utils ./usr/bin/mount-image-callback (Bourne-Again shell script, ASCII text executable) debian-edu-config ./usr/lib/debian-edu-config/testsuite/partitioning (POSIX shell script, ASCII text executable) debootstick ./usr/share/debootstick/scripts/create-image/target/rpi/formatting (ASCII text) debootstick ./usr/share/debootstick/scripts/live/init/tools.sh (ASCII text) dselect ./usr/lib/dpkg/methods/disk/setup (POSIX shell script, UTF-8 Unicode text executable) dselect ./usr/lib/dpkg/methods/multicd/setup (POSIX shell script, UTF-8 Unicode text executable) ecryptfs-utils ./usr/bin/ecryptfs-setup-swap (POSIX shell script, ASCII text executable) ecryptfs-utils DEBIAN/postinst (POSIX shell script, ASCII text executable) ganeti-2.16 ./usr/share/ganeti/2.16/lvmstrap (a /usr/bin/python2 script, ASCII text executable) golang-github-go-easygen-easygen-dev ./usr/share/gocode/src/github.com/go-easygen/easygen/test/sgdisk.sh (ASCII text) golang-github-go-easygen-easygen-dev ./usr/share/gocode/src/github.com/go-easygen/easygen/test/sgdisk.tmpl (ASCII text) golang-github-go-easygen-easygen-dev ./usr/share/gocode/src/github.com/go-easygen/easygen/test/sgdisk.txt (ASCII text) golang-github-snapcore-snapd-dev ./usr/share/gocode/src/github.com/snapcore/snapd/gadget/partition.go (ASCII text) golang-github-snapcore-snapd-dev ./usr/share/gocode/src/github.com/snapcore/snapd/gadget/partition_test.go (ASCII text) guestfsd ./usr/sbin/guestfsd (ELF 64-bit LSB shared object, x86-64, version 1 (SYSV)) inxi ./usr/bin/inxi (Perl script text executable) lilo ./usr/sbin/mkrescue (Bourne-Again shell script, ASCII text executable) live-build ./usr/lib/live/build/config (POSIX shell script, ASCII text executable) live-build ./usr/share/live/build/functions/defaults.sh (POSIX shell script, ASCII text executable) mtd-utils ./usr/sbin/docfdisk (ELF 64-bit LSB shared object, x86-64, version 1 (SYSV)) open-infrastructure-system-build ./usr/lib/live/build/config (POSIX shell script, ASCII text executable) open-infrastructure-system-build ./usr/share/live/build/functions/defaults.sh (POSIX shell script, ASCII text executable) opensvc ./usr/share/opensvc/lib/provKvm.py (Python script, ASCII text executable) opensvc ./usr/share/opensvc/lib/rcDevTreeLinux.py (Python script, ASCII text executable) partimage ./usr/sbin/partimage (ELF 64-bit LSB shared object, x86-64, version 1 (SYSV)) python3-diskimage-builder ./usr/lib/python3/dist-packages/diskimage_builder/block_device/level1/mbr.py (Python script, ASCII text executable) python3-ironic ./usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/deploy/files/partition_configdrive.sh (POSIX shell script, ASCII text executable) python3-ironic-lib ./usr/lib/python3/dist-packages/ironic_lib/disk_utils.py (Python script, ASCII text executable) python3-ironic-lib ./usr/lib/python3/dist-packages/ironic_lib/tests/test_disk_utils.py (Python script, ASCII text executable) python3-os-xenapi ./usr/lib/python3/dist-packages/os_xenapi/tests/plugins/test_partition_utils.py (Python script, ASCII text executable) python3-zvmcloudconnector ./usr/lib/python3/dist-packages/smutLayer/vmUtils.py (Python script, ASCII text executable) qemu-utils ./usr/sbin/qemu-make-debian-root (POSIX shell script, ASCII text executable) recap ./etc/recap.conf (ASCII text) recap ./usr/lib/recap/core/fdisk (Bourne-Again shell script, ASCII text executable) recap ./usr/sbin/recap (Bourne-Again shell script, ASCII text executable) recap ./usr/share/lintian/overrides/recap (ASCII text) resource-agents ./usr/lib/ocf/resource.d/heartbeat/openstack-cinder-volume (POSIX shell script, ASCII text executable) salt-common ./usr/lib/python3/dist-packages/salt/modules/parted.py (Python script, ASCII text executable) salt-common ./usr/lib/python3/dist-packages/salt/modules/qemu_nbd.py (Python script, ASCII text executable) sosreport ./usr/share/sosreport/sos/plugins/block.py (Python script, ASCII text executable) system-tools-backends ./usr/share/system-tools-backends-2.0/scripts/Utils/Report.pm (Perl script text executable) vmdebootstrap ./usr/share/vmdebootstrap/examples/wandboard-uboot.sh (POSIX shell script, ASCII text executable) waagent ./usr/lib/python3/dist-packages/azurelinuxagent/daemon/resourcedisk/default.py (Python script, ASCII text executable) waagent ./usr/lib/python3/dist-packages/azurelinuxagent/daemon/resourcedisk/openbsd.py (Python script, ASCII text executable) weresync ./usr/share/weresync/WereSync-1.0.7.egg-info/PKG-INFO (ASCII text) weresync ./usr/share/weresync/weresync/device.py (Python script, ASCII text executable) weresync ./usr/share/weresync/weresync/interface.py (Python script, ASCII text executable) I think that most of these references require a dependency. It's not that many left anyway. When we're down to like 10 open bugs, we can drop the fdisk dependency from util-linux and bump the remaining bugs to rc severity. Does anyone disagree with that plan in any way? Helmut