Building RPM’s – building for several different releases on one machine



I support a few linux systems outside my own group. Those systems are not as quick to get upgraded to the latest and greatest version of Mandrake – now Mandriva as my home systems. But, I occasionally need to build rpms for them. I don’t want to have a build environment on each one and have to make sure they each have all the devel libraries installed. So what to do?


It’s possible to have one machine be the build environment for each of those systems. The first thing to do is setup some urpmi sources. Now, I will assume that the system you’re working from is relatively current (well even assume 2006)… One problem is that if you use urpmi directly from the current system you will get a chroot of the current system. (There are ways around that – setup media from another version and use the –media option in urpmi.)

But, Mandriva suggests the following… after creating a directory to build in… (as root)

rpm –initdb –root $mychroot
urpmi –root $mychroot basesystem urpmi

I’d suggest rpm-build also (that is after all what the goal of this article is…) You may need to make setup changes to $mychroot/etc/resolv.conf for the chroot to be able to network to the outside world for using urpmi.

One other note is that you may need the following files to exist before sources can be added for urpmi:
/etc/fstab
/etc/mtab
/etc/urpmi/urpmi.cfg
/var/lib/urpmi/MD5SUM

touch /etc/fstab /etc/mtab /etc/urpmi/urpmi.cfg /var/lib/urpmi/MD5SUM

should do the trick.

Run pwconv to unshadow password.

Add yourself a user with useradd.

Then you can chroot into the new environment and setup your rpm build environment as you normally would. I’ve seen a similar approach which installs ssh in the chroot and runs on a non-standard port and then you can ssh into the chroot.

   Send article as PDF   

Similar Posts