Checking out Debian "squeeze"
Published: May 27, 2012Tags: arch debian minimalism squeeze unix linux
Ever since I stopped using NetBSD as a desktop operating system (mostly to make it a lot easier to get working Flash and also laptoppy things like suspend/resume, wifi, etc.) and went back to Linux, my distribution of choice has been Arch. I really appreciate the fact that Arch is not only good at, but is loudly and explicitly dedicated to, things like simplicity, minimalism and keeping out of my way. While in principle you could make any Linux distro small and simple, with most of them you have to actively fight for this and fight very hard. Arch makes it extremely easy and natural to get a bare-bones plain Jane Linux system which basically contains nothing except what is needed to actually make the system run and a good set of tools to then let me build the system into whatever I want it to be (using binary packages - these days I don't have the time or inclination for source-based distros). It makes no assumptions about what I want in my system or how I want it configured, and I like that.
The one thing about Arch that I really don't care for, though, is its rolling-release system and preference for bleeding-edge software. I really do prefer to build a simple and lightweight system up from scratch, but once that's done I want to spend as little time as possible actively maintaining it, so I can focus on, well, actually using it to actually do stuff. This seems to be a bit unusual amongst Arch users, many of whom seem pathologically obsessed with updating their systems. Of course, nobody forces you to run pacman -Syu on a regular basis, and in fact I usually don't. But I do like to keep some things, like my browsers, up to date (which arguably isn't exactly irregular anymore since Firefox went totally insane with their release schedules), and this can lead to its own problems. If I update Firefox and the latest version in the Arch repository is built against a later version of some libraries than I have installed, then I need to pull in those new libraries too - and then, of course, I need to pull in new versions of everything that depends on those libraries, even if I don't care about those, etc, etc. The end result is that I often end up updating hundreds of packages all at once, which often leads to the need to update configurations, etc. It's frankly more hassle than I care for.
So this weekend I decided to look at other distro options to see if I could find anything closer to my needs. Between around 2000 and 2004, when I was new to Linux and Unix in general, I did the whole obsessively sampling all the distros thing (which took more hardware and commitment than it does in these days of Live CDs and VirtualBox), but I've largely ignored the market since then. It doesn't seem like an awful lot has changed, really. I mean, the whole RedHat becoming Fedora thing happened, and the Ubuntu craze/cult sprung up, but the big players haven't changed all that much. I was surprised to find that Mint was as popular as it was. I'd heard of it, but thought it was fairly niche. Anyway, I decided to give plain old Debian a try, in its famously slow "stable" form (the current incarnation of which is "squeeze". I made this decision after learning about the backports system and surmising that I could use it to keep things like my browser relatively up to date while leaving everything else in my system to move at the glacially slow pace that Debian stable is known for. This seemed like a good compromise. Really, I can count on my fingers the pieces of software that I really care about keeping right up-to-date. I also figured that it couldn't be that hard to keep Debian lean and mean, compared to things like Ubuntu.
I installed squeeze from a tiny 50 MB .iso file that pulls everything else down over the internet. I was pleased that I could do this and wasn't forced to download a full 700 MB image. My target system was a Thinkpad X60s laptop. The Atheros wifi card didn't work when I was first asked about setting up the network, so I had to plug in an ethernet cable - fair enough, given the size of the installer .iso I was using. However, at some point during the install, I saw a notification under a progress bar about "wireless-tools" being installed. At the next chance I got, I back tracked to the network setup (I was using the "expert" install mode, which lets you jump around through the installation steps) and tried the wifi again. It still didn't work. Oh well. I didn't know if I needed to resetup my wired connection after this or if it would still be okay. I decided to forge ahead, figuring if the connection was dead I would find out very quickly and I could fix it. This turned out not to be the case. After the "tasksel" stage of the install, where you choose what packages beyond the base system you want (and more on this later), I got a progress bar for installing around 200 packages, which completed very fast. Way faster than it possibly could have if it were downloading 200 packages. I checked the other virtual terminals running and found that one of them (the 4th, I think) showed the output of the commands that were being run by the curses interface on the 1st terminal. It was immediately clear that the wired network did need to be setup again, and none of those packages had downloaded. The thing is, the installer gave no indication of this, at all. After the failed installation it just dropped right back to the list of install steps, with the cursor moved on to the next step, installing the bootloader. After back-tracking to the network setup and redoing the wired connection, I did the package installation step again and it worked fine. I was really shocked and angry about this. If installing packages fails due to a network problem, the installer should absolutely tell you this, immediately and clearly. It's possible that if I'd used the regular install mode and not the expert mode it would have, but really, this should happen in any mode. Letting major errors pass silently during installation is unacceptable and I was amazed to see this happen in Debian, a very old and well-respected distribution.
A little more on "tasksel", the part of the install which lets you choose what packages to install. It's very coarse grained. There's a screenshot on the Debian Wiki which has a "manual package selection" option. I did not get that option. In its place I got a "standard system tools". I selected only the "laptop" option and the "system tools". I didn't choose "desktop environment", even though I did want to install X, because I found out the hard way in an earlier install attempt that this does not just install the desktop environment selected right at the beginning (KDE, GNOME, XFCE, or LXDE), it also installs a whole bunch of desktop apps that it thinks you want. I learned this the hard way because as far as I could tell you cannot peer inside these high-level choices and pick and choose which parts of a desktop environment you want, you just get the whole damn lot. I was disappointed by this, it's the kind of thing I mean when I say some distros force you to fight hard to keep out things you don't want. Anyway, I chose those two options and from this point on the installation went pretty smoothly. When I got into my new system, I saw that it took up about 700 MB all up. Not really bloated, especially by modern standards, but more than I expected for a base system, plus some laptop tools (mostly power management stuff) and standard system tools. I wondered just exactly what was using up all that space, so I used dpkg to list all my installed packages. I was shocked and baffled to find a whole lot of X-related stuff! libx11, x11-common, x11-xserver-utils, a whole bunch of X fonts, xscreensaver, libgtk2.0, libglade2-0...what the hell? Thinking somehow a full blown X install had crept in, I tried startx but it wasn't there. So somehow, despite me asking only for laptop-related packages and "standard system tools", I'd been given GTK and Xscreensaver - but not X.org itself, which would be required to actually use any of this stuff. Does someone actually think Xscreensaver is a standard system tool? Apparently not. The Debian wiki page for tasksel suggests that the standard system task pulls in the packages returned by "aptitude search ~pstandard ~prequired ~pimportant -F%p". Running this command and looking at the packages it returns, there's nothing particularly offensive in there, and nothing graphical that I can see. My current hypothesis is that I also got all the packages that depend on these packages, and then their dependencies, and so on, with the whole thing snowballing to include GTK. This sounds crazy, but one thing I have noticed is that a lot of the folks who package software for Debian have very odd ideas about what "dependencies" are for. This is odd, because apt actually supports quite a fine-grained system, whereby one package can "depend" on another, "recommend" another, or merely "suggest" another. You would think this would encourage people to only use depend for genuine must-be-there-or-it-won't-work dependencies, but not so. The mpg321 package for squeeze "depends on" some Perl-based scrobbling plugin for last.fm users, for example, despite the fact that this is obviously an optional extra. But, whatever. I was able to uninstall xscreensaver without any hassle, and GTK would have got pulled in anyway. I'll do a careful job of removing useless extras later.
Aside from this, things have gone pretty well. The apt system itself works beautifully, and deserves its reputation. My wireless works fine, suspend and resume work fine, and getting Flash to work was very easy (despite Debian's strictness about non-free software). I haven't setup backports yet, but I expect it will go smoothly enough, and then I'll get a really nice combination of a stable and unchanging system with regular updates for a handful of important packages. Based on my experiences so far I doubt I'll ever become a real Debian zealot/enthusiast, but it certainly seems good enough, and I don't know of any other distro with a large stock of binary packages that will let me easily keep some packages right up to date but just leave everything else alone for a nice long time.