16.6 Installing and Compiling Source Packages
All source packages of SUSE Linux Enterprise carry a
.src.rpm extension (source RPM).
HINT:
Source packages can be copied from the installation medium to the hard disk
and unpacked with YaST. They are not, however, marked as installed
([i]) in the package manager. This is because the source
packages are not entered in the RPM database. Only
installed operating system software is listed in the
RPM database. When you install
a source package, only the
source code is added to the system.
The following directories must be available for rpm
and rpmbuild in /usr/src/packages
(unless you specified custom settings in a file like
/etc/rpmrc):
- SOURCES
-
for the original sources (.tar.bz2 or
.tar.gz files, etc.) and for distribution-specific
adjustments (mostly .diff or .patch
files)
- SPECS
-
for the .spec files, similar to a meta
Makefile, which control the build
process
- BUILD
-
all the sources are unpacked, patched, and compiled in this
directory
- RPMS
-
where the completed binary packages
are stored
- SRPMS
-
here are the source RPMs
When you install a source package with YaST, all the necessary components
are installed in /usr/src/packages: the sources and the
adjustments in SOURCES and the
relevant .spec file in SPECS.
WARNING:
Do not experiment with system components (glibc, rpm, sysvinit, etc.), because this endangers the
operability of your system.
The following example uses the wget.src.rpm
package. After installing the package with YaST, you should have
files similar to the following listing:
/usr/src/packages/SOURCES/nops_doc.diff
/usr/src/packages/SOURCES/toplev_destdir.diff
/usr/src/packages/SOURCES/wget-1.9.1+ipvmisc.patch
/usr/src/packages/SOURCES/wget-1.9.1-brokentime.patch
/usr/src/packages/SOURCES/wget-1.9.1-passive_ftp.diff
/usr/src/packages/SOURCES/wget-LFS-20040909.tar.bz2
/usr/src/packages/SOURCES/wget-wrong_charset.patch
/usr/src/packages/SPECS/wget.spec
rpmbuild -b X
/usr/src/packages/SPECS/wget.spec starts the compilation.
X is a wild card for various stages of the build
process (see the output of --help or the RPM documentation
for details). The following is merely a brief explanation:
- -bp
-
Prepare sources in /usr/src/packages/BUILD:
unpack and patch.
- -bc
-
Do the same as -bp, but with additional
compilation.
- -bi
-
Do the same as -bp, but with additional
installation of the built software. Caution: if the package does not
support the BuildRoot feature, you might overwrite configuration
files.
- -bb
-
Do the same as -bi, but with the additional
creation of the binary package. If the compile was successful, the binary
should be in /usr/src/packages/RPMS.
- -ba
-
Do the same as -bb, but with the additional
creation of the source RPM. If the compilation was successful, the binary
should be in /usr/src/packages/SRPMS.
- --short-circuit
-
Skip some steps.
The binary RPM created can now be installed with rpm
-i or, preferably, with rpm
-U. Installation with rpm makes
it appear in the RPM database.