Registry BAD / PPM v4 GOOD

barbie on 2007-02-21T10:17:08

Unfortunately yesterday ended up being a bit of a write-off as the corruption of my registry was so bad it was irrepairable. It meant the disk had to be completely scrapped and I've had to start with a brand new disk image. Thankfully I was able to use an Ubuntu live disk to at least save off the important parts of what I had on the disk, but I did have to reinstall all my apps again.

It made me realise just how bad a decision Microsoft have made about craming everything into the registry. I can't say for certain that my upgrade of CPAN.pm in Strawberry Perl was the cause, but the fact that that was the last thing to touch the registry does make it a likely suspect. If that is the case, then the old way of adding boot install information to a separate file that was outside the registry seems a much more sensible way. Making the registry such a single point of failure is just asking for trouble, and with MS so reluctant to give you disks any more, fixing the problem can be extremely awkward.

Thankfully this was a works laptop, so we were able to write a new base install image to the hard drive and have me start again, but had it not been, my response would have been to just install Debian or Ubuntu on it. It's what I ended up doing with my Win98 box a few years ago, when a similar situation happened.

On a sort of plus note, it has meant I've refreshed my installs, mostly with newer versions. However, older versions of Apache and MySQL did prove a bit tricky to find, as the versions I have been using are no longer supported. Initially I was going to go with the latest versions, but the server that the code ultimately ends up on has these older versions, and it just makes life easier for the moment. I'm looking to upgrade both at some point, but not when I have plenty of other things to keep me busy.

I also installed the latest ActiveState version of Perl, which as pointed out to me includes the latest PPM (v4), which uses a very nice GUI. On first usage of the GUI, it was exactly the kind of thing I'd been looking for. It's very Synaptic like, allowing you to select distributions, checking for dependencies and adding those to the list, warning of when an install might downgrade your install, and then allowing you to install in one go.

However, although my first impressions were good, and overall I like what they've done, I have found a few weaknesses.

  1. Lack of dependency checking

    If you select a module, it will add any dependencies not already installed to the list. However, it doesn't check whether those dependent distributions have their dependencies installed. Trying to install one module cause Compress-Zlib to be added to the list, but failed to add IO-Compress-Zlib!

  2. Only lists PPD packages

    While I wasn't too surprised by this, it would have been nice to allow you to have some kind access to the source (on CPAN) and compile it on your machine, but perhaps that's something that they might be thinking for a future version. This would definitely give better support for distributions that require 3rd party libraries that ActiveState don't have on their build boxes.

  3. All or Nothing approach

    Several distributions I selected either required dependencies that had newer installed versions or they themselves had newer versions installed. This again isn't too surprising as the PPD repositories I was using (I use 6 non-AS repositories too) don't always have the latest version. However, if the installed version of a dependency is newer than the one in the repository, why do I have to deselect the original distribution and install it by hand? Either confirm whether I wish to downgrade, or leave my installation as is.

As a first version I do think they've done extremely well. However, I hope some of the above can be improved for future versions. It would be interesting to see the code at some point, as I would be interested in contributing. It would also be nice to see the app be made available outside of ActiveState installs, so that it could potentially be ported to all the OSs that have a windowing system that could support the GUI, or even be translated into a curses version for a terminal based app.