Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Why We Hate Debian
Skip to end of banner
Go to start of bannerSkip to end of metadata
Created by Moses Mendoza, last modified by Ryan Whitehurst on Dec 30, 2015 Go to start of metadata
No file management in the package contents.
How many files do you need to build a package (install, dirs, control, changelog, postinst, postrm, manpages, docs, examples, init, default, and more!)
Depends, BuildDepends, Suggests, Recommends, Enhances are poorly documented and Suggests, Recommends, and Enhances ---- why don't they all do the same thing?
DebHelper doesn't help at all.
dh_install can't install files with spaces. end of story.
Starting services by default, unless you don't because of /etc/default. Sometimes services want to be configured. There is no consistency.
It caused Ubuntu
More lines of patches than actual upstream code in some packages, because maintainers know better!
It's not apache2, it's the httpd server from the apache foundation. grrrr
Also, sites-enabled and sites-available. Why god why? (mods-available, mods-enabled)
Debian maintainer scripts are incomprehensible.
On dpkg, its --force-all, apt-get its --force-yes
Many packages ignore the fact there is a VERSION FIELD and put the version in the name of the package. Case in point: "libxslt1.1" not "libxslt". Sometimes, the version in the name isn't even the version of the package. Case in point: "libshadow-ruby1.8". What's the version? 1.4.1-8build1.
Version and Release are not distinct fields in a package. It's actually all just VERSION and up to the reader to parse, write parser functions, and cry.
There is no version field. It is just parsed from the first changelog entry, which is awesome.
From the manpage for dh_installinit: `-r, --no-restart-on-upgrade`: Do not stop init script on upgrade. Those are not the same thing debian!
mimics its users' spiral into madness
The package names cannot have _ in them, because, obviously _ is used for separating the version from the package name. See multi_json vs multi-json.
Seriously, your repository management tools are terrible. reprepro makes me ill.
Architecture setup: Any means architecture specific packaging (meaning multiple builds), and all means no architecture-specific bits in the package (meaning just one build).
Unless you bleed Debian on a regular basis, you can never remember which nonsensical code name corresponds to which release version: "The problem is on Wheezy". Oh. Yeah. Thanks. What the hell is wrong with saying: "THE PROBLEM IS ON DEBIAN 7".
Again, promoting the use of the release code name over the version number. I hate this enough to list it twice.
/bin/sh points to /bin/dash rather than /bin/bash
Whiny crybaby neckbeard users and their whiney crybaby neckbeard complaints.
sooo many dead cows....
apt-get remove facter+ will actually install facter.
To get output from debconf, you need to redirect to stream 3
There is no apt package with debug symbols. Want debug? Make your own.
"The functions of dh_* commands are largely self-evident from their names." - Liars.
Using < or > when declaring package dependencies means earlier/later or equal to. Only debian would make </> mean <=/>=.
sudo isn't installed by default on a minimal installation. COME ON!
Somewhere, somehow, debhelper is stripping the cfacter binary of its RPATH and I hate it so much
Looking to the changelog for the version name is weird and stupid
"dpatch is an easy to use patch system for Debian packages"; THIS IS A BOLD-FACED LIE. Patches can be shell scripts or diffs which is unbelievably stupid.
Half the services restart on upgrade, and half don't. It's a gamble but either way you're going to lose.
White space sensitive changelog that also discriminates between spaces and tabs is unnecessary do we really need that strict of a parser?
Repositories expire if you don't touch them.
Quoth the Debian Wiki: "'arm64' is the Debian port name for the 64-bit ARMv8 architecture, referred to as 'aarch64' in upstream toolchains (GNU triplet aarch64-linux-gnu)" – Thank you Debian for naming things your own way. If the upstream toolchain has a name for an architecture, why can't you use that?
Just try silencing debconf in some situations. It can't be done. You try DEBIAN_FRONTEND=noninteractive, nope, you try --qq, nope you try --froce-yes, nope, you try -o DPkg::Options::=--force-confold, nope. You try all of them together, nope. You try echoing the command you want to run and piping it at, nope. Rage.
So, in some versions of Debian/Ubuntu, configuration file in /etc/apache2/site-enabled are required to have no suffix. Until later versions, when they must have a .conf suffix. Why couldn't they just allow both? Was editing that perl script a2ensite that difficult?
This motherf***ing infographic:
The friendly, welcoming packaging documentation. From their wiki:
Before you start, you must read the essential guides
Debian policy , Debian developers reference , Debian new maintainers guide , Debian developers manuals , Create Debian Linux packages , Debian Binary Package Building HOWTO , How to backport packages to your version , Debian packaging tutorial , HowToPackageForDebian , Debian Packaging , debhelper(7) manpage , Autobook - GNU autoconf, automake, libtool book (online and paper) , Learning the GNU development tools
Init system madness. Just look at this PR! , why not just pick an init system? why would you ship BOTH sysVinit AND systemd?????????

This comment has been minimized.

Copy link

@jameswhite jameswhite commented Jan 19, 2016

how does this list not include "preseed is a joke" and "lol, use fai"?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.