Difference between revisions of "RPM Packaging Process"
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…') |
Chris Tyler (talk | contribs) (→Examining Existing SRPMs) |
||
Line 35: | Line 35: | ||
# Download the source code for an existing RPM: <code>yumdownloader --source ''nameofpackage''</code> | # Download the source code for an existing RPM: <code>yumdownloader --source ''nameofpackage''</code> | ||
− | # Install that | + | # Install that downloaded SRPM: <code>rpm -i ''nameofpackage''*.src.rpm</code> |
− | + | #* Source will be in <code>~/rpmbuild/SOURCES</code> | |
− | + | #* Spec file will be in <code>~/rpmbuild/SPECS</code> | |
− | + | * Examine the specfile: <code>cd ~/rpmbuild/SPECS; less ''nameofpackage''.spec</code> | |
− | + | * To build from source using the specfile: | |
− | + | *# Build all (binary RPMS plus SRPMS): <code>rpmbuild -ba ''nameofpackage''.spec</code> | |
− | + | *# Build just the spec file: <code>rpmbuild -bs ''nameofpackage''.spec</code> | |
− | ** | + | |
− | + | == Rebuild from SRPMS == | |
− | * | + | |
− | + | Instead of installing an SRPM and building from the spec file, it is possible to build the binary RPMs and SRPM directly from an SRPM: | |
+ | |||
+ | rpmbuild --rebuild ''nameofpackage''*.src.rpm |
Revision as of 23:27, 10 January 2011
RPM packages are built from the source files plus a spec file, using the rpmbuild program.
Contents
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 downloaded SRPM:
rpm -i nameofpackage*.src.rpm
- Source will be in
~/rpmbuild/SOURCES
- Spec file will be in
~/rpmbuild/SPECS
- Source will be in
- Examine the specfile:
cd ~/rpmbuild/SPECS; less nameofpackage.spec
- To build from source using the specfile:
- Build all (binary RPMS plus SRPMS):
rpmbuild -ba nameofpackage.spec
- Build just the spec file:
rpmbuild -bs nameofpackage.spec
- Build all (binary RPMS plus SRPMS):
Rebuild from SRPMS
Instead of installing an SRPM and building from the spec file, it is possible to build the binary RPMs and SRPM directly from an SRPM:
rpmbuild --rebuild nameofpackage*.src.rpm