-->
Page 161
The --recompile option is normally used when a previously installed package needs to be recompiled. --recompile comes in handy when software needs to be compiled against a new version of the kernel.
Here's what RPM displays during a --recompile:
# rpm --recompile cdplayer-1.0-1.src.rpm Installing cdplayer-1.0-1.src.rpm * Package: cdplayer Executing: %prep ... + exit 0 Executing: %build ... + exit 0 Executing: %install ... + exit 0 Executing: special doc ... + exit 0 Executing: sweep ... + exit 0 #
The very first line shows RPM installing the source package. After that are ordinary executions of the %prep, %build, and %install sections of the spec file. Finally, the cleanup of the software's build directory takes place, just as if the --clean option had been specified.
Since rpm -i and rpm -U are not being used to install the software, the RPM database is not updated during a --recompile. This means that doing a --recompile on an already-installed package may result in problems down the road, when RPM is used to upgrade or verify the package.
Package builders, particularly those who create packages for multiple architectures, often need to build their packages starting from the original sources. The --rebuild option does this, starting from a source package file. Here is the list of steps it performs:
Page 162
Like the --recompile option, --rebuild cleans up after itself. The only difference between the two commands is that --rebuild also creates a binary package file. The only remnants of a --rebuild are the original source package, the newly installed software, and a new binary package file.
Package builders find this command especially handy because it allows them to create new binary packages using one command, with no additional cleanups required. There are two times when --rebuild is normally used:
Here's an example of the --rebuild option in action:
# rpm --rebuild cdplayer-1.0-1.src.rpm Installing cdplayer-1.0-1.src.rpm * Package: cdplayer Executing: %prep ... + exit 0 Executing: %build ... + exit 0 Executing: %install ... + exit 0 Executing: special doc ... + exit 0 Binary Packaging: cdplayer-1.0-1 ... Executing: %clean ... + exit 0 Executing: sweep ... + exit 0 #
The very first line shows RPM installing the source package. The lines after that are ordinary executions of the %prep, %build, and %install sections of the spec file. Next, a binary package file is created. Finally, the spec file's %clean section (if one exists) is executed. The cleanup of the software's build directory takes place, just as if the --clean option had been specified.
That completes our overview of the commands used to build packages with RPM. In Chapter 13, "Inside the Spec File," we'll look at the various macros that are available and how they can make life easier for the package builder.