head 1.1; branch 1.1.1; access ; symbols MAXIMUM_RPM_1_0:1.1.1.1 VENDOR:1.1.1; locks ; strict; comment @# @; 1.1 date 2001.08.28.12.07.09; author rse; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2001.08.28.12.07.09; author rse; state Exp; branches ; next ; desc @@ 1.1 log @Initial revision @ text @ Footnotes
... package[fnsymbol{footnote}]
See Appendix [*] on page [*] for complete details on the contents of a .rpm file.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... package.[fnsymbol{footnote}]
For more information on RPM's signature checking capability, refer to section [*] on page [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... file.[fnsymbol{footnote}]
We'll discuss MD5 checksums in greater detail in section [*] on page [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... RPM![fnsymbol{footnote}]
Are you interested in what exactly ``the right thing'' means? Turn to page [*] and read section [*] for more details.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... contents.[fnsymbol{footnote}]
We'll get more into this aspect of RPM in chapter [*] when we discuss rpm -V, specifically section [*] on page [*]
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... goose.[fnsymbol{footnote}]
You'll have to do that yourself!
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... installed.[fnsymbol{footnote}]
For more information on erasing packages with rpm -e, see chapter [*] on page [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... force[fnsymbol{footnote}]
No pun intended.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... files.[fnsymbol{footnote}]
For more information on rpmrc files, refer to Appendix [*] on page [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... out:[fnsymbol{footnote}]
We discuss RPM's query commands in chapter [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... disk.[fnsymbol{footnote}]
It's possible to use RPM's query command to see if a package has pre- or post-install scripts. See section [*] on page [*] for more information.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... CLASS="textit"><path>.[fnsymbol{footnote}]
For more information on rpmrc file entries, see Appendix [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... entry.[fnsymbol{footnote}]
The use of rpmrc files is described in Appendix [*]
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... entry.[fnsymbol{footnote}]
The use of rpmrc files is described in Appendix [*]
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... entries.[fnsymbol{footnote}]
If you are porting RPM, you'll find more on arch_compat in section [*] on page [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... entries.[fnsymbol{footnote}]
If you are porting RPM, you'll find more on os_compat in section [*] on page [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... CLASS="textit"><path>.[fnsymbol{footnote}]
For more information on rpmrc file entries, see Appendix [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... erase.[fnsymbol{footnote}]
See chapter [*] on page [*] for more information on rpm -q.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... file.1
Actually, there's a one in [IMAGE png] chance a change will go undetected, but for all practical purposes, it's as close to perfect as we can get.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... modified.2
Or, as some sticklers for detail may note, it may have been modified, and subsequently those modifications were undone.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... file.3
For more information on RPM's use of URLs, please see section [*] on page [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... force4
Pun intended.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... answer.1
On most Linux systems, the file command can be used to obtain similar information. See Appendix [*] for details on how to add this capability to your system's file command.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... package.2
Note to software packagers: Choose your build machine names wisely! A silly or offensive name might be embarrassing...
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... value.3
For more information on rpmrc file entries, please refer to Appendix [*] on page [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... verification.4
For more information on package verification, please see section [*] on page [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... instructions.5
RPM uses printf to do - -queryformat formatting. Therefore, you can use any of the printf format modifiers discussed in the printf(3) man page.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... CLASS="textit"><path>.6
For more information on rpmrc file entries, see Appendix [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... too.7
Did you see this example and say to yourself, ``Hey, they could've used the -g option to query for that group directly''? If you did, you've been paying attention. This is a more general way of searching the RPM database for information: we just happened to search by group in this example.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... provides.1
Actually, the price is fairly low. For a completely RPM-based Linux distribution, it would be unusual to have a database over 5MB in size.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... checksum.2
From a strictly theoretical standpoint, this is not entirely true. Using the lingo of cryptologists, it is believed to be ``computationally infeasible'' to find two messages that produce the same MD5 checksum.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...-v:3
Failure messages will always be displayed.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... CLASS="textit"><path>.4
For more information on rpmrc file entries, see Appendix [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...%verify5
See page [*] for details on %verify
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... file.1
For more information on rpmrc files, rpmrc file entries, and how to use them, please see Appendix [*] on page [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... offices.2
Red Hat Software's public key is also available from their website, at http://www.redhat.com/redhat/contact.html. The RPM sources also contain the key, and are available from their FTP site at ftp://ftp.redhat.com/pub/redhat/code/rpm.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... blocks.1
Note that the size displayed by cpio is the size of the cpio archive and not the package file.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...cdplayer.1
In reality, this software is a mercilessly hacked version of cdp, which was written by Sariel Har-Peled. The software was hacked to provide a simple example package, and in no way represents the fine work done by Sariel on cdp.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...tar.2
For more information on the environment variables used in the build-time scripts, please refer to section [*] on page [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... testing.3
Like we said, it's a fairy tale!
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... build.1
As we mentioned in chapter [*], if the original sources need to be modified, the modifications should be kept as a separate set of patches. However, during development, it makes more sense to not generate patches every time a change to the original source is made.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... section2
Or the %clean section, it doesn't matter -- the end result is the same.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... is:3
It should be noted that the package was built substantially later than November of 1995!
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... export.1
There is also an ``international'' version that may be used in non-US countries. See Appendix [*] on page [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... option2
Described in section [*] on page [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... suffice.3
Keep in mind that this command in a %clean script can wreak havoc if used with a build root of, say, /. Section [*] on page [*] discusses this in more detail.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... 1.4
Or it will be 1, once the package is completely installed. Remember, the number is based on the number of packages installed after the current package's install or erase has completed.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... tags:5
Yes, the source tags should include a URL pointing to the sources.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... installed.6
This is not entirely the case when a relocatable package is being built. For more information on relocatable packages, see chapter [*] on page [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... those.7
RPM will automatically exclude file attributes from verification if it doesn't make sense for the type of file. In our example, getting the MD5 checksum of a device file is an example of such a situation.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... installed.1
As long as the requiring and the providing packages are installed using the same invocation of RPM, the dependency checking will succeed. For example, the command rpm -ivh *.rpm will properly check for dependencies, even if the requiring package ends up being installed before the providing package.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... installation.1
Hey, we said it was hypothetical!
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... path.2
For more information on the %docdir directive, please see section [*] on page [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... does.3
Install and erase-time scripts have an environment variable, RPM_INSTALL_PREFIX, that can be used to write scripts that are able to act appropriately if the package is relocated. See section [*] on page [*] for more information.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... install.1
Keep in mind that the build root can be overridden at build-time using the - -buildroot option or the buildroot rpmrc file entry. See chapter [*] on page [*] for more details.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... PGP.1
The list of possible signature types can be found in the RPM sources, specifically signature.h in RPM's lib subdirectory.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... file.1
Hey, we said it was a simple example!
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... be.2
This is the advantage to making up an example. A more real-world spec file would undoubtedly have more interesting scripts.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... packages.3
Five, if you count the source package.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... distribute.4
Yes, the author found out about this hard way!
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... hardware.1
This is a somewhat simplistic view of the matter, as it's common for incompatibilities to crop up between two different implementations of the same operating system on different architectures.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... flawlessly.1
Well, eventually it did!
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... build.2
Of course, if the process of installing the software changed some necessary config files, they would have to be redone, but in this case it didn't happen.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... lead.1
Please refer to section [*] on page [*] for a discussion on identifying RPM package files with the file command.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... header.2
The header is discussed in section [*] on page [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... architecture.3
It should be noted that the architecture used internally by RPM is actually stored in the header. This value is strictly for file(1)'s use.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... entry.1
The buildostranslate rpmrc file entry is discussed on page [*].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... N/A1
Since there is no modifier to display the file states in human-readable form, it will be necessary to manually interpret the flag values, based on the RPMFILE_STATE_xxx #defines contained in rpmlib.h. This file is part of the rpm-devel package and is also present in the RPM source package.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... N/A2
Since there is no modifier to display the verification flags in human-readable form, it will be necessary to manually interpret the flag values, based on the RPMVERIFY_xxx #defines contained in rpmlib.h. This file is part of the rpm-devel package and is also present in the RPM source package.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... below:1
An up-to-date copy of the list of mirror sites is always available on ftp.redhat.com, in the file MIRRORS.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... good.2
If your goal is to install RPM on one of these systems, it might be a good idea to copy the appropriate binary package. That way, once you have RPM running, you can reinstall it with the - -force option to ensure that RPM is properly installed and configured.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... like1
When we say that keys are numbers, we aren't lying even though the example key doesn't look like a number. It has been processed so that it can be concisely displayed using only printable characters.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... them2
Or at least that it didn't make it to you unchanged.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... version3
Note that there are no commercial restrictions regarding PGP in countries other than the U.S. and Canada.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
@ 1.1.1.1 log @Import book 'Maximum RPM' by Ed Bailey, version 1.0 @ text @@