RPM Packaging Process
Revision as of 23:21, 10 January 2011 by Chris Tyler (talk | contribs) (Created page with 'RPM packages are built from the source files plus a spec file, using the ''rpmbuild'' program. {{Admon/caution|Do Not Build as Root|Always build RPM packages as a regular, non-r…')
RPM packages are built from the source files plus a spec file, using the rpmbuild program.
Setting up the Packaging Environment
Needed Packages
Install with yum:
- rpm-build
- rpmdevtools
- rpmlint
- yum-utils
Setting up the RPM tree
The directories used by the rpm build tools can be defined as RPM macros. A script is provided in the rpmdevtools package to create a set of personal build directories and create the appropriate entries in the ~/.rpmmacros
file:
rpmdev-setuptree
The directories created are:
- ~/rpmbuild/SOURCES - for source code (tarballs/zip archives and patches)
- ~/rpmbuild/SPECS - for the spec file
- ~/rpmbuild/SRPMS - for the resulting source RPMs
- ~/rpmbuild/RPMS - for the resulting binary RPMs
- ~/rpmbuild/BUILD - directory used to perform the build
- ~/rpmbuild/BUILDROOT - contains a fake root directory into which the built files are "installed" prior to being packaged
Examining Existing SRPMs
A great place to start when learning to build RPMs is to examine some existing SRPMs.
- Download the source code for an existing RPM:
yumdownloader --source nameofpackage
- Install that package
- Taking a look at existing source RPMS (useful as examples)
- Installing
-
yumdownloader --source nameofpackage
-
rpm -i nameofpackage.src.rpm
- Source will be in ~/rpmbuild/SOURCES and specfile will be in ~/rpmbuild/SPECS
-
- Examine the specfile
- Rebuild on the local machine -- takes a source RPM (SRPM) as input, produces binary and source RPMs as output
-
rpmbuild --rebuild nameofpackage.src.rpm
-
- Building from the spec file -- takes a specfile and source code as input, produces binary and source RPMs as output
-
cd ~/rpmbuild/SPECS; rpmbuild -ba nameofpackage.spec
-
- Installing