My website is maintained by a rather complex amalgamation of software,
accreted over generations. Having migrated it from my old desktop
lickity
to my new(ish) PowerBook Ariel, I now want to migrate it
again to my new server Tranq (a Tranquil PC T2); this will allow me to use cron
to keep
some parts up-to-date automatically.
So what software do I need to install to do this?
- TclHTML, my quirky Tcl-based HTML-generating system; I ended up using the version from CVS, which suggests I should create a new distribution some day. Spent some time trying to infer from the tutorial information on SourceForge what the host name of the CVS server is; it has changed since I last needed to connect.
- CVS, since I had not previously installed it.
- the elementtree package for Python, used to generate SVG for the Flickr icons.
- The Debian package
python-dev
, because Debian does not include thedistutils
package in their standard Python install (another evening annoyingly spent on Google to discover what this package-fragment was called). - PyYaml, which I use in the program that downloads things like my Flickr badge.
- even though libxml2 is already installed, I
have to install a Debian ackage
xsltproc
to get thexsltproc
command that I have recently started using to generate some recent additions to the site (like the Flickr badge, which is in SVG generated from XML cobbled together from the JavaScript code used to make the standard Flash-based Flickr badge). - Something to render SVG as PNG. This turns out to be something of a blocker -- see below.
This is as far as I have got since I started earlier this week (Wednesday).
For the love of SVG
SVG is a standard for vector graphics. It is relatively easy to generate graphics files -- you can even use a plain old text editor at a pinch -- and there is a fairly detailed spec for how to render them. I use SVG on my web site to do a lot of the graphics, including the Flickr icons. Because web browsers have trouble displaying SVG graphics in the same way they display PNG, GIF and JPEG, I have been converting them to PNG using Batik.
Batik requires Java, which is installed as standard on Mac OS X. On Tranq, running Debian GNU/Linux things are more complicated. Debian's package lists three different JVMs with (as usual) no guidance as to which I might want to install. This is a common problem with package-based systems: they concentrate more on ensuring that every possible variation is available than on helping users determine which packages they actually want. None of the JVM websites can tell me at a glance whether they implement all of Java (or at least all of it that I need), and there is a nasty implication that I have to acquire the class library as a whole separate package (probably several packages). In short, installing all the prerequisites of Batik looks like a difficult job. What other SVG renderers are there?
So far as I can ascertain there are two strands of development of SVG as
conventional Unix programs (written in C or C++ as opposed to Java):
librsvg2
(used by GNOME) and libsvg-cairo
, part of Cairo, which is
hosted on Freedesktop.org.
On Debian it turns out that installing librsvg2
does not get you the
command-line utilities;
one needs to install an additional librsvg2-bin
package to get the program rsvg
. Having done all this, I have
discovered that librsvg2
does not
understand HTTP URLs. Since I refer to the images on Flickr's server
directly, it cannot process my Flickr icons. I need to change my
program that makes the badges to download the image files itself.
The Cairo-based SVG package is not yet part of
Debian proper (although libcairo
itself is, according to Debian bug
216196). There is a repository of Debian package files in
http://cairographics/packages/debian/, but (not being a Debian wizard
yet) I have not found a way to get APT to exploit them; it expects them
to have a more complicated directory structure. Maybe I am supposed to
download and install the .deb
files individually and install them
myself, but that is an adventure for another day: the tinkering time I
had to spare today is exhausted.