A short rant on Ubuntu and dpkg: screw you, dpkg

published Jan 04, 2008, last modified Jul 20, 2020

A long long time ago, in a gal... in an older computer, I had Fedora. RPM -- the packaging system in Fedora -- was amazing in several aspects. And the aspect that continually amazed me was the transactionality of software installs: a set of packages either gets installed, or it doesn't. No halfway installs, no broken shit. Ever.

Fast-forward to my contemporary Kubuntu system. I just installed (using dpkg -i) a series of packages, and dpkg happily unpacked them all on my filesystem, only to nonchalantly tell me -- when the files were already replaced on my (now very broken) computer -- that it could not configure these packages, because the version of my C library is too old.

With the new files are already on my system! A tad too late to blow up on my face, isn't it? Now I have a badly broken system, and I can't back out without resorting to manually downloading and installing old packages.

Question to the dpkg developers: If the version of my C library is too old -- and dpkg knows this fact -- why the fuck does dpkg proceed with file installation, only to barf in the middle of the installation process, leaving me with a broken computer? If the dependencies don't fit, don't let me install the packages in the first place!

It's not like transactional package installation is rocket science to get right, is it? Otherwise, how did the RPM guys figure this out so well?

In b4 "dpkg is not like RPM" comments:

  1. Software installation transactionality is an elementary requirement of contemporary systems, so get your damn act together and make dpkg like RPM with regards to this issue.
  2. Even better: ask yourselves the following question: in what universe is this dpkg behavior (namely, enabling users to badly break their systems) a good thing?

And, please, let me rant some more, this time on the topic of package dependencies. Why does a simple 100 KB program from Hardy require me to upgrade my system C library (hence, my entire operating system) to Hardy? I thought glibc hadn't changed in years! I hardly doubt that 100 KB program would have any trouble running if I unpacked the binary directly! So why does the package builder automatically require the latest version of the library -- forcing me to download gigabytes of packages -- when an old one would work just as well?

I'm a sysadmin, for God's sake, I want my computer to be easily manageable, not harder to manage. What are you waiting for?