The Inkscape project makes available a binary RPM which works on various platforms. However, using this RPM directly has a few limitations for users:
- They must be root to install it.
- It doesn't work on all distributions (e.g., Debian).
- The system won't periodically check for updates.
These limitations can be avoided by creating a Zero Install interface file for it. This guide goes over the steps quite quickly. For more details see the packaging main guide.
Note: The original Inkscape binary RPM was compiled with binreloc support disabled, which prevented it from finding its icons (it used hard-coded paths). Jean-François Lemaire, the creator of the RPM, has kindly recompiled it for us with relocation support turned on.
- Creating the interface
- Testing it
- Signing and publishing
- Using the published interface
- Marking as stable
- Making a new release
Creating the interface
We'll be using the 0publish command to create the interface file. If you don't have it already, create an alias for 0publish in the usual way:
$ 0install add 0publish http://0install.net/2006/interfaces/0publish
To create the interface file:
- Download the static binary RPM:
$ wget http://users.skynet.be/jflemaire/files/inkscape-0.43-0.i386.rpm
- Create the interface:
$ 0publish Inkscape.xml
Fill in the name, summary, description, icon and homepage fields. Set main='usr/bin/inkscape' on the group element. Save and quit (using the default filename).
Add version 0.43 with the location of the static RPM:
$ 0publish Inkscape.xml \ --set-version=0.43 \ --archive-url=http://users.skynet.be/jflemaire/files/inkscape-0.43-0.i386.rpm \ --set-released=today \ --set-arch=Linux-i486
You can run the new XML file with 0launch to download and run Inkscape:
$ 0launch ./Inkscape.xml
Signing and publishing
Now we need to sign the XML file using our GPG key. If you don't already have a GPG key, create one now:
$ gpg --gen-key
We also need to decide where the Inkscape XML file will be made available. This URL should not change, since other programs will link to it. We'll assume http://inkscape.org/2006/ZeroInstall/Inkscape.xml here.
To set the URI and sign the interface:
$ 0publish Inkscape.xml \ --set-interface-uri=http://inkscape.org/2006/ZeroInstall/Inkscape.xml \ --xmlsign Exported public key as 'AE07828059A53CC1.gpg'
Upload the resulting Inkscape.xml and GPG files to the same directory on the web-server. The XML file should look something like the Inkscape.xml test interface.
Using the published interface
You can now run Inkscape like this:
$ 0launch http://inkscape.org/2006/ZeroInstall/Inkscape.xml
$ 0install add inkscape http://inkscape.org/2006/ZeroInstall/Inkscape.xml
They can then run it by typing inkscape. To choose a different version:
$ 0install update --gui inkscape
Marking as stable
After the release has been out for a while, mark it as stable:
$ 0publish Inkscape.xml --stable
Users can configure the injector either to prefer stable versions or to select testing versions by default. This gives your more advanced users the chance to provide feedback before you roll a new release out to all users.
Making a new release
When a new static binary RPM is released, add the new version to the XML as follows:
- Download the new RPM (if you're not the person who made it).
- Add it to the XML (note use of add-version rather than set-version here):
$ 0publish Inkscape.xml \ --add-version=0.44 \ --archive-url=http://users.skynet.be/jflemaire/files/inkscape-0.44-0.i386.rpm \ --set-released=today \ --set-arch=Linux-i486