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

Reply via email to