Computing stuff tied to the physical world

Software hell

In Software on Jul 6, 2010 at 00:01

I wish this were an exceptional tale. But it isn’t, it’s the norm…

I run a webserver for Jee Labs and a couple of other web sites and services.

Screen Shot 2010 07 02 at 23.55.19

I wanted to add support for logging the last hours of a new “#jeelabs” IRC channel. IRC might not be a good fit for me personally, but since several people have asked for it, I do want to support it. With say the last 3 days of that discussion logged as some public web-pages, I could drop by once in a while and try and add to the discussion going on at that time.

The “eggbot” system was suggested to me as a way to accomplish this:

Screen Shot 2010 07 02 at 23.55.50

Ok. Server is Debian, so “aptitude install eggdrop” should work, right? Debian is good at package management.


Turns out my server is still running Debian Etch, and “Etch is end-of-lifed”, as I just found out. The server ISP’s repository is gone. No updates, no installs, no security fixes, nothing.

Ok. Better upgrade Debian Etch to Debian Lenny first.

I’ve been there before, I know how to do it. Takes a few hours, but then it’s done. Server is running Lenny now, and all the main servers and services are still running fine (impressive!). This is a server in Germany, btw.

That was yesterday (well, ehm… night).

Today, quick check. Server ok. Weblog ok. Forum ok. Cool.

Oops. Ikiwiki isn’t working anymore. That’s the software I use to convert the Markdown pages into the Cafe web site. Fully scripted, based on Perl.

Ikiwiki wasn’t installed as Debian package, because the one in Debian was waaaay too old. Even on Lenny, it lags (by over a year – Debian Lenny still has 2.x, Ikiwiki has been at 3.x for some time now).

Ok, so let’s try to re-install it from source. By now, usually all my warning systems go into in high alert mode, because source installs are a different ball game (even with a “scripted” language such as Perl, how ironic!).

The Ikiwiki installation page is reassuringly short. Three steps. First two look pretty easy, right?

    -e 'CPAN::Shell->install("Bundle::IkiWiki")'
    -e 'CPAN::Shell->install("Bundle::IkiWiki::Extras")'


I’m now waiting for step 2 to complete.

More than 10,000 lines of text have scrolled over my terminal window so far. This sort of drivel:

Screen Shot 2010 07 03 at 00.05.40

More than two hours have passed.

More than 180 Mb of disk space has been consumed.

I’m forced to watch closely, because disk space is running low on the root partition. And this is running as superuser, so it’ll bring down the server if it fills up the disk.

Pinch me, am I really in the year 2010?

Screen Shot 2010 07 03 at 00.08.42

My complaint is not that some things are complex and require a lot of work and understanding.

My complaint is that some things are NOT complex and yet you get treated to an incredible amount of nonsense. Not to mention the fact that the problem isn’t solved until you invest in figuring out every detail of lots of different kinds of packages.

The IRC logging? Not solved yet. I can probably write a 200 line script with not a single dependency on other code which does what I need: track the last 100 hours of an IRC channel disscussion as a web page.

The Ikiwiki setup for the Jee Labs Cafe? Broken. One week of work to write a Markdown parser and generate the static pages myself, would be my estimate. Probably well under 1000 lines of code, all in a single script. Three orders of magnitude less disk space, and easier to adjust to my needs.

I’m still waiting for the second step of the Perl install to complete. It’s running a “BigInt” package without proper library support, apparently. Falling back to “Math::BigInt::FastCalc”, and running tests which take ages:

Screen Shot 2010 07 03 at 00.26.24

Could someone help me understand where a static wiki page generator needs to do cryptographically secure factorization of large primes or something?

I’m stumped. Three hours waiting now. I give up.

I’ve aborted the (non-) install. With 220 Mb disk space gone, and no clue how to get it back. Oh yes, wait, it’s all in “~/.cpan” of course – how obvious. Thank you, Ikiwiki & Perl, for breaking down. Thank you, Eggdrop, for making simple things hard. And thank you Debian Linux, for not giving me the option to go back to my previous setup.

And you know what ticks me off? All of the above can be avoided. It has been solved.

But we’re living in medieval times, clearly. Most people haven’t even heard of Starkits. What a cruel joke.

Ah, wait. Maybe I’m the only one who runs into issues like these. Maybe everyone else has servers which just work, and to which you can add functionality without getting stuck. Doing everything you want. And a breeze to upgrade, of course.

That must be it. It’s just me. I have totally unrealistic expectations.

Apologies for the rant. Normal transmissions will resume tomorrow…

Update – thanks to a backport tip in the comments, Ikiwiki is now working again.

  1. I don’t think it is only you ;-) I have halted a big server update just to make sure that my custom server will last the few more weeks it needs to last. Custom server because it felt easier to write it than to adapt something existing. But the server is written in Tcl, it is running as a starkit and with metakit as a DB, so it went pretty smooth :-D

  2. I found something that can be nice for logging irc, sorted by Q&A! It’s no install, just drop a small mail to the creator and it runs.

    Another nice small ircbot that does lot of things and very easy to install:

  3. Doing a major upgrade one week before the holiday is challenging.

    • You mean Debian? True, but that’s the irony of this case: the “big” part of the upgrade went flawlessly. It’s the non-debian-managed part, i.e. ikiwiki that broke.

  4. Why not use the backport package which is on the ikiwiki homepage??

    version 3.20100504~bpo50+1

    that will run on debian 5.0 (Lenny)

    • Thanks. Didn’t know about that – I tried, but that leads to another dependency (plus a few I’ve resolved manually):

      ikiwiki depends on liburi-perl (>= 1.36); however:
       Version of liburi-perl on system is 1.35.dfsg.1-1.

      Ah, wait, found a suitable one in the same backports area. But there’s still some issue when I run the new ikiwiki – probably due to the previous build in /usr/local:

      Can't stat /usr/local/share/ikiwiki/basewiki: No such file or directory
       at /usr/share/perl5/IkiWiki/Plugin/ line 64

      Found it – /usr/local/ was hardcoded in the wiki.setup I was using. Changed – now it looks like this ikiwiki installation is working again. My rant still stands, but thank you!

  5. IMHO what you you ran into is a normal example of dependency hell which (despite all the efforts) seems to be always the case with shared libraries (compiled or not). I guess the Plan 9 guys (now working on Google Go) had this thing (among others) right [1].

  6. Unless I’m missing something, your starkits just include any and all dependencies inside the package right?

Comments are closed.