Linux from Scratch: I’ve had it up to here!

As you may be able to tell from my recent, snooze-worthy technical posts about compilers and makefiles and other assorted garbage, my experience with Linux from Scratch has been equally educational and enraging. Like Dave, I’ve had the pleasure of trying to compile various desktop environments and software packages from scratch, into some god-awful contraption that will let me check my damn email and look at the Twitters.

To be clear, when anyone says I have nobody to blame but myself, that’s complete hokum. From the beginning, this entire process was flawed. The last official LFS LiveCD has a kernel that’s enough revisions behind to cause grief during the setup process. But I really can’t blame the guys behind LFS for all my woes; their documentation is really well-written and explains why you have to pass fifty --do-not-compile-this-obscure-component-or-your-cat-will-crap-on-the-rug arguments.

Patch Your Cares Away

CC attribution licensed from benchilada

No, the real problem comes in when, like I’ve mentioned before, the gracious developers behind whatever package you’re trying to install haven’t tried to build it on more than their crapbox with every outdated library and script that worked once years ago. More times than not, their configuration script works properly, and make only bombs out when you’re at 99% of the way through getting your anime comic strip viewer up and running.

Then it’s up to you to hunt down the library online somewhere, find the stupid .tar.xz on some German guy’s website – because even though is used everywhere, nobody realized that the original developer died back in dickety-six, and wrote the thing in obfuscated C interspersed with assembly because it sped up long division with imaginary numbers by 0.35%.

Thankfully, the German person who thoughtfully put this online has excellent, highly descriptive nouns in their language, so you can probably be a true Free Software zealot and avoid using Evil That Is Google Translate. Regretfully, while the library is probably 150KB at most, you will spend four hours downloading it from a server in Bratislava whose connection method could generously be described as a string and tin cans.

Repeat this five times, and then each of those libraries has some dependency, probably on the previous version of the package you’d just installed and compiled. So guess what – you get to go back and try again! No word of a lie, I went through three glibc versions for different stupid packages that demanded their own special snowflake of a dependency.

Even SuSE Is Better Than This

The thing that really sets modern Linux distributions apart these days is their package management system. LFS has “suggestions” for how to keep track of what’s installed, but more likely than not you’ll end up with a /sources directory filled with tar files and half-compiled packages. The only reason I know that I’m running XFCE 4.8 or KDE 4.7.3 is that I’ve seen the version numbers scroll past about eleventy billion times while waiting on them to compile – and hopefully not thrash my existing files.

Even YAST does this better, despite the fact that it regularly trashes my carefully set up routing and firewall configurations. Truthfully it’s not as much of a package manager as it is a malevolent harpy, waiting for you to install an RPM that it doesn’t recognize and BAM! Kicked in the groin. It is still better at dependency resolution than whatever system you’ve come up with in LFS.

For those who say “oh, compiling from source is better, I can check the code myself and make sure it matches the executable”, or “oh, I can compile and optimize it and unroll loops for better performance”, OH PLEASE. You’re not going to do that. You should have better things to do, and chances are if there’s something malicious going on you wouldn’t notice it in the source.

Not A Lickable Distribution

There are so many things with LFS that come up are typical Linux annoyances, where Ubuntu and other lickable distributions have sandblasted the rough edges down. In the Ubuntu case, they’ve gone fully the other way to user-experience douchebaggery, like commissioning a custom font and replacing a workable desktop environment with something that has to be defended in every online discussion as “studies show us this is easier!” But at least with fonts, Ubuntu seems to have figured something out. Even installing the Microsoft “core fonts” on LFS involves compiling a utility to extract CAB files, then running a shell script that needed some edits before it behaved.

Cursors are terrible too. The default X ones suck, but I also don’t want the flavour of the week from KDE-Look or the leftovers of whatever theme some 13-year-old cranked out in GIMP. I’m also still missing some icons that I presumed would be default, like the “Keyboard” icon in XFCE’s Settings Manager, despite having installed both Tango and Oxygen icon packages.

What’s Next

For Linux on my personal machines, I’m going back to Debian or Mint when I’m able to. Sure, Debian has that whole “Communist manifesto” thing going on that a co-worker cursed out after a few beers. But it has a reasonable package management system, isn’t driven by the highly-suspect answers given out at the Ubuntu forums, and if I choose to compile a package I have the option – not the imbued responsibility to chase down twelve dependencies every time.

More so, I think LFS has its place and purpose, but defining exactly what that purpose is becomes very difficult. In a corporate server environment, it’s not feasible unless there is a very well-defined process about which packages to install, which versions and where they come from. There’s also no commercial support for something that you roll yourself. For a personal system, it’s really challenging to sit down and try to complete a task and then it takes an hour or two to resolve all the intricate dependencies.

Perhaps a LFS system would best be used for a web-browsing kiosk or a special-purpose appliance, like a file server or something running the latest bleeding-edge XBMC. But for me, when I can deploy a Debian or Ubuntu VM in about 20 minutes with reasonable support for nearly any Linux software package under the sun, something like Linux from Scratch just stops making much sense.


  1. I thought LFS was mainly for educational purposes for those so inclined or with too much time at their hands. If you want to compile and customize, Slackware is as far as I’m willing to go. You can have all that but with reasonable support and tracking of library versions documented. Hats off for going through with it!

  2. @Barnabyh
    Exactly, it’s not a distribution, but a book about how to build (well, GNU actually) from first principles. This knowledge will be needed by distribution maintainers at times, but not by ordinary users.

    Reviewing it as if it’s intended for everyday use is missing the point.

  3. I agree with the statement that it’s not for use by ordinary users, but the LFS/BLFS sites specifically state that it *is* a distribution. What’s more, it goes as far as to extoll the “customizability” and “you can read the source” options:

    LFS about page

  4. I feel your pain, Gentoo was/is hard enough for me. I couldn’t imagine something similar, except without portage and emerge there to save the day.

  5. you sir are my hero – the part about the half ass devs making sure it works on their box and then uploading is classic – there is no quality control in the linux world – so people are forced to things like ubuntu (going the way of apple and microsoft no doubt – ubuntu’s software center now has adds and sells books and magazines) – then they get support for only a handful of things so they bail and are back on a windows box by morning – linux is awesome and well worth the effort to learn more about, but don’t go on some half ass guide

  6. Linux From Scratch is like getting married and having children; it brings out every emotion in your core (the good the bad and the ugly). Notwithstanding, my main purpose for doing a minimal LFS project is primarily educational. Additonally, you cannot consider yourself a hardcore command line Linux user without doing some sort of tedious download, unpack, config, make, make install, rm -Rf, re-config . . . . activity. I also plan to test for the LPI Exam so this helps reinforce some of the concepts.

2 Trackbacks / Pingbacks

  1. Oh Gentoo | The Linux Experiment
  2. Blast from the Past: Linux from Scratch: I’ve had it up to here! | The Linux Experiment

Leave a Reply

Your email address will not be published.