Building RPM’s from Source RPMs
Let me start by saying I am FAR from being an expert on the subject of building rpm’s… RPM’s are binary packages for use in red-hat based distributions. They are used (*in my case on Mandriva) with urpmi to install. Urpmi is a “wrapper” around the rpm utility that figures out what dependencies a program has and then installs those dependencies along with that program. One problem under linux is that binaries are not necessarily portable from one version of a distribution to another. For instance, some of the rpm’s for cooker may not be compatible with an old 10.0 system. But, there are src.rpm’s that can be rebuilt.
That’s what we’ll be looking at here, rebuilding rpm’s from source rpms. Let’s say I find the brand new version of flightgear in cooker (which I did a few days back). Now, I don’t know that the binary rpm will work so I find it’s src rpm (look in the SRPMS directory on the servers). Download that file (say to /home/username/downloads/srpms…)
Assuming you have a good build environment all you need to do at this point is ***AS YOUR USERNAME – NOT AS ROOT*** type the following
$rpm –rebuild /path/to/my/program.src.rpm
If all goes well, you will have lot’s of information stream across the screen (compile process.) NEAR the end (maybe 15 lines up?) You will see a message along the lines of
Wrote: /home/youruserdir/rpm/RPMS/i586/libsimgear0-devel-0.3.9-1.1.20060mdk.i586.rpm
To install all you ought to need to do is urpmi /path/to/my/shinynew/program.rpm (su to install(or sudo urpmi))
If the process didn’t go so smoothly, be sure to READ the errors it gives. Usually the most likely problems are build-requires. In other words, in order to build the package you need to install the following -devel libraries. That’s easily solved (usually), become root and urpmi each of the missing packages. Assuming you’ve got a good list of urpmi sources (main and contrib mirrors from online) you should be in good shape for most of what you’d need to rebuild. The above -devel library was a build-requires for flightgear that wasn’t available to me and so, I had to get THAT src.rpm and build (and install) before rebuilding flightgear.
I’ve noticed too that when I was rebuilding Mandriva 2006 packages on 10.1 I had to make frequent changes to the spec files. A bit more on that will be covered in another post.