Wednesday, 30 December 2015

Scheme Outline

Oh dear!  Like all documentation projects, this one has languished.  There's always something better to do.

My only excuse is that I've been very busy having a hard time adapting my (defective) diabetes management strategy to cope with new medication and to be less defective in order to avoid hyperglycaemia and the peripheral circulatory and neuropathy problems that come with it.  I've also discovered that if you can keep your blood sugar in a narrow band around the target value of 6 mmol/L you come alive and function properly - for the first time in a few years for me.

What I really wanted to do with the Mozilla apps was move away from the ESR versions (which you would normally update via the update distribution process favoured by the producers of the distribution you are using) to using the versions distributed directly by Mozilla.  These are updated more often than the ESR versions, which means you keep up with developments and have to live for less time with any bugs that have crept in and bite you.

I evolved a simple scheme to do this based upon use of the systematised filenames used by Mozilla for the bzipped tar files containing each release of the firefox and thunderbird apps - these have (to date) always been of the form app-version.update[.patch].tar.bz2 where "app" is "firefox" or "thunderbird", version is the release number, update is the lower level release number and patch is an [optional] even lower level release number but not always present.
As with additional software I add to my systems I placed the folders in the /usr/local tree to avoid cluttering up the base system files in the main /usr tree, in this case in /usr/local/lib, and named them app-version.update[.patch] with root ownership and no write access for other users to protect the product files from accidental scribbling over.
To access the binaries, I replaced the symlinks in /usr/bin with these...

/usr/bin/firefox -> /usr/local/lib/firefox
/usr/bin/thunderbird -> /usr/local/lib/thunderbird

... which point to symlinks in /usr/local/lib which redirect forwards to the actual binaries in the release I'm currently using...

firefox -> ./firefox-43.0.3/firefox
thunderbird -> ./thunderbird-38.5.0/thunderbird

... so at update installation time everything that needs to be changed is in one place, /usr/local/lib, and in the event of a problem, rollback simply requires the /usr/local/lib symlinks to be changed to point to the executables in the previous version directories.