Monthly Archives: November 2014

Creating an RPM file for XMind


I am a big fan of mind-mapping software and, for years, I’ve been using Freemind.

I’ve noticed that a lot of people are moving towards XMind which, for some peculiar reason, is only available as a Debian (.deb) package. This is a bit problematic as I run Fedora and CentOS which are both based on RPM (Redhat Package Manager). Here is how I managed to convert the .deb package into an .rpm which can then be easily installed with a yum localinstall:

(1) Download the Debian package

(2) Create the RPM

alien -r --scripts package.deb

This command (alien) converts the Debian package into an RPM and makes sure that any scripts (pre- and post- installation) will run when the RPM file is installed. See this for more info.

(3) The issue is that the RPM will fail to install as there is a conflict with three directories: /, /usr/bin and /usr/lib. The solution is to install rpmrebuild and use it as follows:

rpmrebuild -pe xmind.rpm

Remove all lines for /, /usr/bin and /usr/lib in the %files section and you should then get an RPM. See this for more info.

Have fun with XMind ;-)

Using jigdo to rebuild a Linux ISO image


A few years ago, Internet was very slow in Mauritius (and some will argue that this is still the case…) Downloading a Linux DVD (or, more precisely, an ISO image) took ages.

Now the Internet is way quicker but downloading a 4Gb ISO image still takes a long time.

A few years ago, a Debian guy invented Jigdo, a tool which I’ve been using for some time now to only download the few files I don’t have when a new Linux release is made and reconstruct the ISO locally. The steps to follow are documented in this post but are basically:

(1) Download the full ISO on a server where Internet is very quick (I do that on a VPS I have in the middle of the Silicon Valley where I routinely get 250Mbit/s). Let’s call the ISO image Centos-Linux-6.6.iso

(2) Use jigdo to create a .jigdo and a .template set of files. Before that it is important to mount the ISO on the distant server so that the individual files in the ISO can be accessed directly by jigdo. I generally do:

mkdir Centos-Linux-6.6

mount -t iso9660 -o loop Centos-Linux-6.6.iso Centos-Linux-6.6

jigdo-file mt -i Centos-Linux-6.6.iso -j Centos-Linux-6.6.jigdo -t Centos-Linux-6.6.template Centos-Linux-6.6/

(3) On completion, Centos-Linux-6.6.jigdo and Centos-Linux-6.6.template (which are generally small) need to be downloaded locally.

(4) The final step is to reconstruct the ISO locally. This is done by:

jigdo-lite Centos-Linux-6.6.jigdo

jigdo-lite will prompt for folder names with existing content. For example, when I used jigdo yesterday to reconstruct the latest Centos 6.6 ISO image, I already had a Centos 6.4 DVD and all the updates released since. I only had to point jigdo-lite to these existing folders and, voilà, in a few minutes I had the latest Centos 6.6 ISO image ready.

To be complete, jigdo-lite complained that one file was missing (python-paste-script-1.7.3-5.el6_3.noarch.rpm) which I had to download manually. It was just a small file so no big deal.

All in all, jigdo, even if the software is now in maintenance mode, is still a lifesaver for me. I hope it becomes one for you too.

Have fun ;-)