Re: Too many Recommends (in particular on mail-transport-agent)
On Mon, Jun 05, 2017 at 05:39:41PM -0700, Russ Allbery wrote:
> Maybe someone has a list of things they view as Recommends inflation that
> have (a) been reported as bugs to the appropriate package maintainers, and
> (b) have been rejected by those package maintainers? Those are the
> controversial ones that we'd need to talk about.
Here's something even better: an automated way to list bad Recommends that
personally affect you -- ones that made you take steps to ignore them when
installing a package you actually use:
.--==[ list-unsatisfied-recommends ]
#!/usr/bin/python
import apt
c = apt.Cache()
for pkg in c:
if pkg.installed is not None:
for rd in pkg.candidate.get_dependencies("Recommends"):
if not rd.installed_target_versions:
print pkg, rd
`----
Forgot whom to credit for this tool; alas, it's written in a language that
itself is bloat[1].
More seriously, though, let's go through the list of 94 unsatisfied ones on
my desktop; the list below is transposed to collate recommendees.
Categories:
OK: "Recommends:" looks warranted
DEBATABLE: duh.
BLOAT: potentially useful but I wouldn't make it a Recommends
BAD: downgrade please
TRANSITIVELY BAD: useful for a direct user but not when pulled via a
dependency -or- causes this lower in the chain
alpine-doc: alpine
* OK: this one looks reasonable
at: devscripts
* BAD: only use: pts-{,un}subscribe. Why would I ever be interested in a
package for only a limited time? The listed use case is bad: NMUs are
done on unmaintained packages, thus they won't magically fix themselves in
30 days.
bash-completion: bash dput-ng licensecheck
* DEBATABLE: I like the Tab key to do something reasonable,
"bash-completion" means you never know what you'll get.
<ton of Java crap>: libreoffice-base
* BLOAT: they're no longer owned by Sun, what's the reason to keep Java
scripting?
dnsmasq-base: lxc
* BAD: how often are you on a network without a DNS server?
fonts-cantarell: fontforge-common
* BAD: FontForge works perfectly without it
fonts-noto-cjk: fonts-noto
* BLOAT: unlike greek/runes/etc, you can't learn Chinese hieroglyphs on a
whim, thus it's useless for most users. You may want a _single_ CJK font
so you can tell whether a text is in C, J or K but that's it.
freedoom | game-data-packager: prboom-plus
* DEBATABLE: freedoom is too ugly to live, shareware Doom has assets missing
for running pretty much anything Doom-related (and AFAIK its license
forbids add-ons). On the other hand, this is an excuse for Doom engines
in main.
freepats: libwildmidi-config timidity
* BAD: freepats is too ugly to live: abysmal quality, lacks instruments for
pretty much any .mid file in the wild. We do have a bunch of good
alternatives. timgm6mb-soundfont for one is 5.6 times smaller yet is
complete.
geoclue-2.0: redshift
* TRANSITIVELY BAD: insane dependency chains, otherwise would be useful for
a mobile device (this desktop is not one)
gfortran-mingw-w64: gcc-mingw-w64
* BAD: seriously, Fortran?
ghostscript: gimp imagemagick-6.q16 libmagickcore-6.q16-3 netpbm
* BAD: why would editing images care about a grossly obsolete _document_
format?
gimp-gmic: gimp-plugin-registry
* BLOAT: an obscure plugin, looks useful for only for a small minority of
users; -plugin-registry is not pulled by default though so it's debatable
gnat-mingw-w64: gcc-mingw-w64
* BAD: see Fortran.
gnupg-l10n: gnupg
* DEBATABLE: I don't think anyone tech skilled enough to use GPG would have
problems with English, but localization is important. On the other hand,
this is 4.5MB in the default install.
gsfonts: libmagickcore-6.q16-3 libwmf0.2-7
* BAD: see ghostscript
gvfs: atril easytag thunar
* BAD: gvfs is a major annoyance and a security hole
libaacs0: libbluray1
* BLOAT: useful only if you rip optical media
libatm1 >= 2.4.1-17~: iproute2
* BLOAT: I'm rather certain my desktop machine has no direct ATM link --
unfit for the default install
libclass-xsaccessor-perl: libmoo-perl
* BLOAT: wut?
libgit-wrapper-perl: devscripts
* ????: I've never used git-deborig, is it actually useful? Tiny package,
though.
libgnomeui-0: xscreensaver
* BAD: Gnome users won't run xscreensaver
libgpm2: libncurses5:i386
* OK: or rather, not doable with current tools: we do want mouse support
in curses programs (libgpm2 handles X terminals too, right?) but in this
case it's a multiarch copy of an otherwise important package
libgpod-common: libgpod4
* BLOAT: nope, I don't use iJunk
libgtk2-perl: tablet-encode
* out of archive
libhtml-format-perl: libhtml-tree-perl libwww-perl
* ????: wut?
libhttp-daemon-perl: libwww-perl
* TRANSITIVELY BAD: dependency comes from a client package; if I want to run
a http server I know where to find it
libimage-magick-perl: inkscape
* ????: wut?
liblist-compare-perl: devscripts
* ????: again, git-deborig
libmail-sendmail-perl: po-debconf
* BAD: why would po stuff want to send mail?
libpackage-stash-xs-perl: libpackage-stash-perl
* TRANSITIVELY BAD: dependencies pulling more dependencies, why?
libpam-cap: libcap2-bin
* ????: no idea.
libpam-cgfs: lxc
* OK: sounds useful, likely a victim of --no-install-recommends overlooked
due to bloat in the rest of this list
libpam-systemd: xfce4-power-manager xfce4-session
* BAD: Depends:systemd, utterly pointless without it.
libpng-tools: libpng-dev
* BAD: I see no connection between compiling or coding a program using
libpng and repairing a corrupted image (pngfix is the only contents of
this package)
libpurple-bin: libpurple0
* BAD: a library has no reason to install programs
<an imperial buttload of obscure libreoffice plugins>: libreoffice
* BAD: especially in a default install, why would I want to build reports
using a weird Java-only database I never heard about (despite not being
born yesterday)?
libsoap-lite-perl: devscripts
* ????: apparently some obscure option of dch, I don't know.
libtasn1-doc: libtasn1-6-dev
* TRANSITIVELY BAD: probably useful if you do TASN (whatever it is), pulled
in by a very-widespread library (gnutls)
libunicode-utf8-perl: libpath-tiny-perl
* ????: isn't Perl's built-in UTF-8 decoding good enough?
libwacom-bin = 0.24-1: libwacom2
* BAD: dependency from a library; I'm certain I never even walked close to
a drawing tablet
libwmf-bin: inkscape
* BLOAT: image support is useful, an ancient format with ActiveX-level
concept of security not quite so.
libx11-doc: libx11-dev
* TRANSITIVELY BAD: useful for developing stuff using ancient X11 protocol,
useless for anyone using something meant for humans. We don't code
assembly every day, you see.
light-locker: xfce4-session
* BAD: needs to absolutely, immediately, $EXPLETIVE die!!1!elebenty-one!
musescore-soundfont-gm | fluid-soundfont-gm | freepats: libsdl-mixer1.2
* BAD: depends from a library -- if a program actually does MIDI, it should
depend on sound fonts itself
pavucontrol: xfce4-pulseaudio-plugin
* BAD: PulseAudio means no working sound, until you fix it, sorry no.
perl5: xscreensaver
* BAD: any dependency on a non-existent package is bad, m'kay?
pulseaudio: xfce4-pulseaudio-plugin
* BAD: I want working sound, duh.
python-bs4: python-lxml
* BAD: no idea what BeautifulSoup 4 is, I don't want it.
python-html5lib: python-lxml
* TRANSITIVELY BAD: pulled by transitive recommends of nmap: ndiff sounds
sort-of useful, it definitely doesn't decode HTML5 though
python-paramiko: dput-ng python-dput
* ????: dput seems to work fine without it?
python-validictory: python-dput
* BAD: no idea what dput would use a "schema validator" for
qt-at-spi: libqtgui4
* ????: wut?
qttranslations5-l10n: libqt5core5a
* BAD: dependency from a library
rename: perl
* BAD: old transition from many years ago
rpm-common: librpm3
* BAD: dependency from a library, I'm rather certain I don't run Red Hat
systemd-sysv | systemd-shim: xfce4-session
* BAD: no, a window manager has no business picking an init implementation
tcpd: libwrap0 libwrap0:i386
* BAD: dependency from a library, obsolete tool: I'm rather certain I don't
use "incoming telnet, ftp, rsh, rlogin, finger", support in newer stuff is
rather exotic
timidity-daemon: timidity
* BAD: why, oh why, I would want a daemon? When I play a .mid file (once in
a blue moon these days), timidity works fine then exits.
transfig: inkscape
* BLOAT: a badly obsolete image format, pulls in ghostscript and other crap
u-boot-sunxi:armhf: sunxi-tools
* ????: this machine can run natively only amd64/i386/x32 code, the only
target machine I can talk FEL to is arm64. Recommends could be possibly
warranted if turned to an |arm64 alternative.
usbmuxd: libimobiledevice6
* BLOAT: I don't do iJunk, apparently this daemon is started only on demand
though so it's not in the BAD category
uuid-runtime: libuuid1 libuuid1:i386
* BAD: useful only if you generate many many UUIDs per second, certainly
unfit when coming from a transitively essential library
va-driver-all | va-driver: libva1:i386
* ????
vbetool: pm-utils
* BLOAT: I assume x86 graphic cards made this millenium have at least basic
support in the kernel, without running real-mode BIOS code, right?
wordnet-gui | artha: wordnet
* BAD: a Tcl/Tk interface, really? Way less convenient than the
command-line one.
xml-core: libxml2 libxml2:i386
* BAD: what the heck I'd want a "XML catalog" for?
xserver-xorg-legacy: xserver-xorg
* DEBATABLE: grossly obsolete hardware, but maintainers apparently know
what they're doing
yelp: easytag
* BAD: easytag appears to ship no help, invoking a web browser instead
Meow!
[1]. At least Python is merely bloat when you have better alternatives like
Perl, unlike atrocities like .NET or PHP that deserve a cpl. Hicks solution.
--
⢀⣴⠾⠻⢶⣦⠀ A tit a day keeps the vet away.
⣾⠁⢰⠒⠀⣿⡁
⢿⡄⠘⠷⠚⠋⠀ (Rejoice as my small-animal-murder-machine got unbroken after
⠈⠳⣄⠀⠀⠀⠀ nearly two years of no catch!)
Reply to: