OK, first I have a new favorite quote:
Concentrated power is not rendered harmless by the good intentions of those who create it.
–Milton Friedman
And second… Well, this was a topic I had not expected to be posting about again but the last couple weeks I have found myself spending more and more time building RPM packages for Fedora. Thankfully the development stack (and documentation) for Fedora is noticeably better than it was for Redhat 9. So, in my usual fashon, I am listing some of the more useful information I have RECENTLY come across for building RPM packages on Fedora 16.
- Recommended Method for adding Users & Groups — A Fedora wiki page that discusses the best way to add new users to a system during the rpm install process. There is no recommendation for REMOVING users during uninstall. Additionally, rpmlint will scream about un-registered users if you don’t provide reference users for rpmlint. This bugzilla report discusses how to best alleviate that problem.
- Packaging Tricks — A stupidly useful Fedora wiki article discussing common issues/fixes for doing package builds. Some of them are simply look-up problems (like knowing group package groups are available.) Some of the information is much more advanced package configuration tips (like converting badly encoded files to UTF-8.) All are really helpful.
- Frequently Made Mistakes — In the same vein as the Packaging Tricks but specifically focused on problematic RPM methodology. One correction on this page. The correct location for checking SPEC files from other Fedora packages is not correctly listed (Fedora doesn’t use CVS anymore.) The correct location is in their git repository.
- Creating Sub-packages — Is a very early stage draft document on the Fedora Documentation website that discusses how to best create multiple sub-packages from a given SPEC file. I had been needing good documentation on this process and this seems to be the start of it.
- RPM Groups — Raw list of valid RPM package groups.
- How to Make RPM Packages — Exactly what the name implies. Probably the best starting point for Fedora Linux software packagers.
- rpm –showrc — This command will list all the current Macros defined for the rpm build environment. It even includes your custom local setup. It is a great place to grep for path information and to verify directory locations for installation. It has probably been around forever but I honestly didn’t know about it until a couple days ago.
- rpmdev-setuptree is one of several tools available in the rpmdevtools package (yum install rpmdevtools.) Running this command will setup a local build directory in THAT USERS home directory (as you should NEVER build packages as root using the system wide build directory.) Additionally it will create a stock .rpmmacros config file. You will still want to define your own %packager and %vendor macros.
- Package Guidelines – The definitive guide from Redhat on creating Fedora/Redhat rpm files for distribution.
- RPM Dev Tools – Web listing of some of the new automated packing tools for RPM based distributions. Things like creating your default build environment and spec file format checker.
- CPAN2RPM – A tool for building rpm files from the Comprehensive Perl Archiving Network. While tools like cpanplus work well for package installation, I prefer the flexibility and consistency of rpm packages and this is a nice way to be able to use rpm files for CPAN modules.
- cpanspec – Another tool for building spec files (and therefore rpm packages) from cpan repository information. Generally I use cpan2rpm to create a basic package and then modify the spec file to work anyway, so this might be a better option.