Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
commit 9dd4bfe2dfcbbd87bcd5f07bfd02748eb95e85dd
Author: Ben Cotton <bcotton(a)fedoraproject.org>
Date: Mon Jul 30 14:37:05 2012 -0400
URL fixes for RPM Guide
fedoradocs.db | Bin 818176 -> 818176 bytes
public_html/Sitemap | 66 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/as-IN/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/as-IN/opds-Fedora_Core.xml | 2 +-
.../as-IN/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/as-IN/opds.xml | 12 +-
public_html/as-IN/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/bg-BG/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/bg-BG/opds-Fedora_Core.xml | 2 +-
.../bg-BG/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/bg-BG/opds.xml | 12 +-
public_html/bg-BG/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/bn-IN/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/bn-IN/opds-Fedora_Core.xml | 2 +-
.../bn-IN/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/bn-IN/opds.xml | 12 +-
public_html/bn-IN/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/bs-BA/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/bs-BA/opds-Fedora_Core.xml | 2 +-
.../bs-BA/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/bs-BA/opds.xml | 12 +-
public_html/bs-BA/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/ca-ES/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/ca-ES/opds-Fedora_Core.xml | 2 +-
.../ca-ES/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/ca-ES/opds.xml | 12 +-
public_html/ca-ES/toc.html | 25 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/cs-CZ/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/cs-CZ/opds-Fedora_Core.xml | 2 +-
.../cs-CZ/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/cs-CZ/opds.xml | 12 +-
public_html/cs-CZ/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/da-DK/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/da-DK/opds-Fedora_Core.xml | 2 +-
.../da-DK/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/da-DK/opds.xml | 12 +-
public_html/da-DK/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/de-DE/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/de-DE/opds-Fedora_Core.xml | 2 +-
.../de-DE/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/de-DE/opds.xml | 12 +-
public_html/de-DE/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/el-GR/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/el-GR/opds-Fedora_Core.xml | 2 +-
.../el-GR/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/el-GR/opds.xml | 12 +-
public_html/el-GR/toc.html | 25 +-
...ra_Draft_Documentation-0.1-RPM_Guide-en-US.epub | Bin 587313 -> 587025 bytes
.../0.1/html-single/RPM_Guide/index.html | 1472 +++++++++-----------
.../0.1/html/RPM_Guide/ch-advanced-packaging.html | 18 +-
.../0.1/html/RPM_Guide/ch-command-reference.html | 16 +-
.../0.1/html/RPM_Guide/ch-creating-rpms.html | 26 +-
.../0.1/html/RPM_Guide/ch-customizing-rpm.html | 14 +-
.../0.1/html/RPM_Guide/ch-dependencies.html | 2 +-
.../0.1/html/RPM_Guide/ch-development-tools.html | 4 +-
.../html/RPM_Guide/ch-extra-packaging-tools.html | 16 +-
.../0.1/html/RPM_Guide/ch-intro-packaging.html | 2 +-
.../0.1/html/RPM_Guide/ch-intro-rpm.html | 8 +-
.../0.1/html/RPM_Guide/ch-licensing.html | 4 +-
.../0.1/html/RPM_Guide/ch-management-software.html | 16 +-
.../0.1/html/RPM_Guide/ch-online-resources.html | 114 +--
.../0.1/html/RPM_Guide/ch-other-linuxes.html | 14 +-
.../0.1/html/RPM_Guide/ch-other-os.html | 8 +-
.../0.1/html/RPM_Guide/ch-package-structure.html | 24 +-
.../html/RPM_Guide/ch-packaging-guidelines.html | 16 +-
.../0.1/html/RPM_Guide/ch-programming-c.html | 24 +-
.../0.1/html/RPM_Guide/ch-programming-perl.html | 4 +-
.../0.1/html/RPM_Guide/ch-rpm-overview.html | 102 +-
.../html/RPM_Guide/ch-rpm-programming-python.html | 8 +-
.../0.1/html/RPM_Guide/ch-rpmbuild.html | 14 +-
.../0.1/html/RPM_Guide/ch-scripting.html | 4 +-
.../0.1/html/RPM_Guide/ch-specfile-syntax.html | 12 +-
.../0.1/html/RPM_Guide/ch-specfiles.html | 4 +-
.../0.1/html/RPM_Guide/ch-transactions.html | 8 +-
.../0.1/html/RPM_Guide/ch-using-rpm-db.html | 4 +-
.../0.1/html/RPM_Guide/ch-using-rpm.html | 4 +-
.../0.1/html/RPM_Guide/ch01s02.html | 6 +-
.../0.1/html/RPM_Guide/ch01s02s02.html | 2 +-
.../0.1/html/RPM_Guide/ch01s02s03.html | 4 +-
.../0.1/html/RPM_Guide/ch01s02s04.html | 2 +-
.../0.1/html/RPM_Guide/ch01s02s05.html | 2 +-
.../0.1/html/RPM_Guide/ch01s02s06.html | 2 +-
.../0.1/html/RPM_Guide/ch01s02s07.html | 2 +-
.../0.1/html/RPM_Guide/ch01s02s08.html | 2 +-
.../0.1/html/RPM_Guide/ch01s03.html | 2 +-
.../0.1/html/RPM_Guide/ch01s04.html | 4 +-
.../0.1/html/RPM_Guide/ch02s02.html | 102 +-
.../0.1/html/RPM_Guide/ch02s03.html | 178 ++--
.../0.1/html/RPM_Guide/ch02s04.html | 10 +-
.../0.1/html/RPM_Guide/ch03s02.html | 24 +-
.../0.1/html/RPM_Guide/ch03s02s02.html | 4 +-
.../0.1/html/RPM_Guide/ch03s02s02s02.html | 2 +-
.../0.1/html/RPM_Guide/ch03s02s03.html | 2 +-
.../0.1/html/RPM_Guide/ch03s02s04.html | 2 +-
.../0.1/html/RPM_Guide/ch03s02s05.html | 4 +-
.../0.1/html/RPM_Guide/ch03s02s05s02.html | 2 +-
.../0.1/html/RPM_Guide/ch03s02s06.html | 4 +-
.../0.1/html/RPM_Guide/ch03s03.html | 4 +-
.../0.1/html/RPM_Guide/ch03s03s02.html | 2 +-
.../0.1/html/RPM_Guide/ch03s03s03.html | 2 +-
.../0.1/html/RPM_Guide/ch03s04.html | 2 +-
.../0.1/html/RPM_Guide/ch03s05.html | 2 +-
.../0.1/html/RPM_Guide/ch04s02s03.html | 2 +-
.../0.1/html/RPM_Guide/ch04s02s05.html | 2 +-
.../0.1/html/RPM_Guide/ch04s03.html | 2 +-
.../0.1/html/RPM_Guide/ch05s02.html | 4 +-
.../0.1/html/RPM_Guide/ch05s02s02.html | 2 +-
.../0.1/html/RPM_Guide/ch05s02s03.html | 2 +-
.../0.1/html/RPM_Guide/ch05s02s04.html | 2 +-
.../0.1/html/RPM_Guide/ch05s02s05.html | 2 +-
.../0.1/html/RPM_Guide/ch05s03.html | 2 +-
.../0.1/html/RPM_Guide/ch05s04.html | 2 +-
.../0.1/html/RPM_Guide/ch06s02.html | 8 +-
.../0.1/html/RPM_Guide/ch06s02s02.html | 2 +-
.../0.1/html/RPM_Guide/ch06s03.html | 2 +-
.../0.1/html/RPM_Guide/ch06s04.html | 2 +-
.../0.1/html/RPM_Guide/ch07s02.html | 4 +-
.../0.1/html/RPM_Guide/ch07s02s02.html | 2 +-
.../0.1/html/RPM_Guide/ch07s02s03.html | 2 +-
.../0.1/html/RPM_Guide/ch07s02s04.html | 2 +-
.../0.1/html/RPM_Guide/ch07s03.html | 4 +-
.../0.1/html/RPM_Guide/ch07s03s02.html | 2 +-
.../0.1/html/RPM_Guide/ch07s03s03.html | 2 +-
.../0.1/html/RPM_Guide/ch07s03s04.html | 2 +-
.../0.1/html/RPM_Guide/ch07s03s05.html | 2 +-
.../0.1/html/RPM_Guide/ch07s03s06.html | 2 +-
.../0.1/html/RPM_Guide/ch07s03s07.html | 2 +-
.../0.1/html/RPM_Guide/ch07s04.html | 2 +-
.../0.1/html/RPM_Guide/ch08s02.html | 4 +-
.../0.1/html/RPM_Guide/ch08s02s02.html | 2 +-
.../0.1/html/RPM_Guide/ch08s02s03.html | 4 +-
.../0.1/html/RPM_Guide/ch08s02s03s02.html | 2 +-
.../0.1/html/RPM_Guide/ch08s02s03s03.html | 2 +-
.../0.1/html/RPM_Guide/ch08s02s03s04.html | 2 +-
.../0.1/html/RPM_Guide/ch08s02s03s05.html | 2 +-
.../0.1/html/RPM_Guide/ch08s02s03s06.html | 2 +-
.../0.1/html/RPM_Guide/ch08s02s04.html | 2 +-
.../0.1/html/RPM_Guide/ch08s03.html | 2 +-
.../0.1/html/RPM_Guide/ch08s04.html | 2 +-
.../0.1/html/RPM_Guide/ch09s02.html | 4 +-
.../0.1/html/RPM_Guide/ch09s02s02.html | 2 +-
.../0.1/html/RPM_Guide/ch09s03.html | 12 +-
.../0.1/html/RPM_Guide/ch09s03s02.html | 2 +-
.../0.1/html/RPM_Guide/ch09s03s03.html | 2 +-
.../0.1/html/RPM_Guide/ch09s03s04.html | 2 +-
.../0.1/html/RPM_Guide/ch09s04.html | 4 +-
.../0.1/html/RPM_Guide/ch09s04s02.html | 2 +-
.../0.1/html/RPM_Guide/ch09s04s03.html | 2 +-
.../0.1/html/RPM_Guide/ch09s04s04.html | 2 +-
.../0.1/html/RPM_Guide/ch09s04s05.html | 2 +-
.../0.1/html/RPM_Guide/ch09s05.html | 4 +-
.../0.1/html/RPM_Guide/ch09s05s02.html | 2 +-
.../0.1/html/RPM_Guide/ch09s05s03.html | 2 +-
.../0.1/html/RPM_Guide/ch09s05s04.html | 2 +-
.../0.1/html/RPM_Guide/ch09s05s05.html | 2 +-
.../0.1/html/RPM_Guide/ch09s05s06.html | 2 +-
.../0.1/html/RPM_Guide/ch09s05s07.html | 2 +-
.../0.1/html/RPM_Guide/ch09s06.html | 2 +-
.../0.1/html/RPM_Guide/ch09s07.html | 4 +-
.../0.1/html/RPM_Guide/ch09s07s02.html | 2 +-
.../0.1/html/RPM_Guide/ch09s07s03.html | 2 +-
.../0.1/html/RPM_Guide/ch09s07s04.html | 2 +-
.../0.1/html/RPM_Guide/ch09s08.html | 2 +-
.../0.1/html/RPM_Guide/ch09s09.html | 2 +-
.../0.1/html/RPM_Guide/ch10s02.html | 2 +-
.../0.1/html/RPM_Guide/ch10s03.html | 2 +-
.../0.1/html/RPM_Guide/ch10s04.html | 4 +-
.../0.1/html/RPM_Guide/ch10s04s02.html | 2 +-
.../0.1/html/RPM_Guide/ch10s04s03.html | 2 +-
.../0.1/html/RPM_Guide/ch10s05.html | 4 +-
.../0.1/html/RPM_Guide/ch10s05s02.html | 2 +-
.../0.1/html/RPM_Guide/ch10s05s03.html | 2 +-
.../0.1/html/RPM_Guide/ch10s06.html | 4 +-
.../0.1/html/RPM_Guide/ch10s06s02.html | 2 +-
.../0.1/html/RPM_Guide/ch10s06s03.html | 2 +-
.../0.1/html/RPM_Guide/ch10s07.html | 2 +-
.../0.1/html/RPM_Guide/ch11s02.html | 4 +-
.../0.1/html/RPM_Guide/ch11s02s02.html | 2 +-
.../0.1/html/RPM_Guide/ch11s03.html | 4 +-
.../0.1/html/RPM_Guide/ch11s03s02.html | 2 +-
.../0.1/html/RPM_Guide/ch11s03s03.html | 2 +-
.../0.1/html/RPM_Guide/ch11s04.html | 4 +-
.../0.1/html/RPM_Guide/ch11s04s02.html | 2 +-
.../0.1/html/RPM_Guide/ch11s04s03.html | 2 +-
.../0.1/html/RPM_Guide/ch11s04s04.html | 2 +-
.../0.1/html/RPM_Guide/ch11s04s05.html | 2 +-
.../0.1/html/RPM_Guide/ch11s04s06.html | 2 +-
.../0.1/html/RPM_Guide/ch11s04s07.html | 2 +-
.../0.1/html/RPM_Guide/ch11s05.html | 2 +-
.../0.1/html/RPM_Guide/ch12s02.html | 2 +-
.../0.1/html/RPM_Guide/ch13s02.html | 12 +-
.../0.1/html/RPM_Guide/ch13s02s02.html | 4 +-
.../0.1/html/RPM_Guide/ch13s02s02s02.html | 2 +-
.../0.1/html/RPM_Guide/ch13s02s02s03.html | 2 +-
.../0.1/html/RPM_Guide/ch13s02s02s04.html | 2 +-
.../0.1/html/RPM_Guide/ch13s02s02s05.html | 2 +-
.../0.1/html/RPM_Guide/ch13s02s02s06.html | 2 +-
.../0.1/html/RPM_Guide/ch13s02s02s07.html | 2 +-
.../0.1/html/RPM_Guide/ch13s03.html | 2 +-
.../0.1/html/RPM_Guide/ch14s02.html | 2 +-
.../0.1/html/RPM_Guide/ch14s03.html | 2 +-
.../0.1/html/RPM_Guide/ch14s04.html | 4 +-
.../0.1/html/RPM_Guide/ch14s04s02.html | 2 +-
.../0.1/html/RPM_Guide/ch14s04s03.html | 2 +-
.../0.1/html/RPM_Guide/ch14s04s04.html | 2 +-
.../0.1/html/RPM_Guide/ch14s04s05.html | 2 +-
.../0.1/html/RPM_Guide/ch14s05.html | 2 +-
.../0.1/html/RPM_Guide/ch14s06.html | 4 +-
.../0.1/html/RPM_Guide/ch14s06s02.html | 2 +-
.../0.1/html/RPM_Guide/ch14s07.html | 2 +-
.../0.1/html/RPM_Guide/ch14s08.html | 2 +-
.../0.1/html/RPM_Guide/ch15s02.html | 4 +-
.../0.1/html/RPM_Guide/ch15s02s02.html | 4 +-
.../0.1/html/RPM_Guide/ch15s02s02s02.html | 2 +-
.../0.1/html/RPM_Guide/ch15s02s02s03.html | 2 +-
.../0.1/html/RPM_Guide/ch15s02s02s04.html | 2 +-
.../0.1/html/RPM_Guide/ch15s02s02s05.html | 2 +-
.../0.1/html/RPM_Guide/ch15s02s02s06.html | 2 +-
.../0.1/html/RPM_Guide/ch15s02s03.html | 2 +-
.../0.1/html/RPM_Guide/ch15s02s04.html | 2 +-
.../0.1/html/RPM_Guide/ch15s02s05.html | 2 +-
.../0.1/html/RPM_Guide/ch15s03.html | 4 +-
.../0.1/html/RPM_Guide/ch15s03s02.html | 2 +-
.../0.1/html/RPM_Guide/ch15s03s03.html | 2 +-
.../0.1/html/RPM_Guide/ch15s03s04.html | 2 +-
.../0.1/html/RPM_Guide/ch15s03s05.html | 2 +-
.../0.1/html/RPM_Guide/ch15s04.html | 4 +-
.../0.1/html/RPM_Guide/ch15s04s02.html | 2 +-
.../0.1/html/RPM_Guide/ch15s05.html | 2 +-
.../0.1/html/RPM_Guide/ch15s06.html | 2 +-
.../0.1/html/RPM_Guide/ch15s07.html | 2 +-
.../0.1/html/RPM_Guide/ch16s02.html | 2 +-
.../0.1/html/RPM_Guide/ch16s03.html | 8 +-
.../0.1/html/RPM_Guide/ch16s03s02.html | 2 +-
.../0.1/html/RPM_Guide/ch16s03s03.html | 4 +-
.../0.1/html/RPM_Guide/ch16s03s03s02.html | 2 +-
.../0.1/html/RPM_Guide/ch16s03s04.html | 2 +-
.../0.1/html/RPM_Guide/ch16s03s05.html | 2 +-
.../0.1/html/RPM_Guide/ch16s03s06.html | 2 +-
.../0.1/html/RPM_Guide/ch16s04.html | 4 +-
.../0.1/html/RPM_Guide/ch16s04s02.html | 2 +-
.../0.1/html/RPM_Guide/ch16s05.html | 2 +-
.../0.1/html/RPM_Guide/ch16s06.html | 4 +-
.../0.1/html/RPM_Guide/ch16s06s02.html | 2 +-
.../0.1/html/RPM_Guide/ch16s06s03.html | 4 +-
.../0.1/html/RPM_Guide/ch16s06s03s02.html | 2 +-
.../0.1/html/RPM_Guide/ch16s06s03s03.html | 2 +-
.../0.1/html/RPM_Guide/ch16s06s04.html | 4 +-
.../0.1/html/RPM_Guide/ch16s06s04s02.html | 2 +-
.../0.1/html/RPM_Guide/ch16s06s04s03.html | 2 +-
.../0.1/html/RPM_Guide/ch16s07.html | 2 +-
.../0.1/html/RPM_Guide/ch16s08.html | 2 +-
.../0.1/html/RPM_Guide/ch17s02.html | 4 +-
.../0.1/html/RPM_Guide/ch17s02s02.html | 2 +-
.../0.1/html/RPM_Guide/ch17s02s03.html | 2 +-
.../0.1/html/RPM_Guide/ch17s02s04.html | 2 +-
.../0.1/html/RPM_Guide/ch17s02s05.html | 2 +-
.../0.1/html/RPM_Guide/ch17s03.html | 4 +-
.../0.1/html/RPM_Guide/ch17s03s02.html | 2 +-
.../0.1/html/RPM_Guide/ch17s03s03.html | 2 +-
.../0.1/html/RPM_Guide/ch17s03s04.html | 2 +-
.../0.1/html/RPM_Guide/ch17s03s05.html | 4 +-
.../0.1/html/RPM_Guide/ch17s03s05s02.html | 2 +-
.../0.1/html/RPM_Guide/ch17s03s05s03.html | 2 +-
.../0.1/html/RPM_Guide/ch17s03s06.html | 2 +-
.../0.1/html/RPM_Guide/ch17s03s07.html | 2 +-
.../0.1/html/RPM_Guide/ch17s04.html | 2 +-
.../0.1/html/RPM_Guide/ch17s05.html | 2 +-
.../0.1/html/RPM_Guide/ch18s02.html | 4 +-
.../0.1/html/RPM_Guide/ch18s02s02.html | 2 +-
.../0.1/html/RPM_Guide/ch18s02s03.html | 2 +-
.../0.1/html/RPM_Guide/ch18s02s04.html | 2 +-
.../0.1/html/RPM_Guide/ch18s02s05.html | 4 +-
.../0.1/html/RPM_Guide/ch18s02s05s02.html | 2 +-
.../0.1/html/RPM_Guide/ch18s02s05s03.html | 2 +-
.../0.1/html/RPM_Guide/ch18s02s05s04.html | 2 +-
.../0.1/html/RPM_Guide/ch18s03.html | 4 +-
.../0.1/html/RPM_Guide/ch18s04.html | 4 +-
.../0.1/html/RPM_Guide/ch18s04s02.html | 2 +-
.../0.1/html/RPM_Guide/ch18s05.html | 2 +-
.../0.1/html/RPM_Guide/ch19s02.html | 4 +-
.../0.1/html/RPM_Guide/ch19s02s02.html | 2 +-
.../0.1/html/RPM_Guide/ch19s02s03.html | 2 +-
.../0.1/html/RPM_Guide/ch19s02s04.html | 2 +-
.../0.1/html/RPM_Guide/ch19s02s05.html | 2 +-
.../0.1/html/RPM_Guide/ch19s02s06.html | 2 +-
.../0.1/html/RPM_Guide/ch19s02s07.html | 2 +-
.../0.1/html/RPM_Guide/ch19s03.html | 12 +-
.../0.1/html/RPM_Guide/ch19s03s02.html | 2 +-
.../0.1/html/RPM_Guide/ch19s04.html | 4 +-
.../0.1/html/RPM_Guide/ch19s04s02.html | 2 +-
.../0.1/html/RPM_Guide/ch19s05.html | 2 +-
.../0.1/html/RPM_Guide/ch20s02.html | 4 +-
.../0.1/html/RPM_Guide/ch20s02s02.html | 2 +-
.../0.1/html/RPM_Guide/ch20s02s03.html | 4 +-
.../0.1/html/RPM_Guide/ch20s02s03s02.html | 2 +-
.../0.1/html/RPM_Guide/ch20s03.html | 4 +-
.../0.1/html/RPM_Guide/ch20s03s02.html | 2 +-
.../0.1/html/RPM_Guide/ch20s04.html | 2 +-
.../0.1/html/RPM_Guide/ch21s02.html | 4 +-
.../0.1/html/RPM_Guide/ch21s02s02.html | 2 +-
.../0.1/html/RPM_Guide/ch21s02s03.html | 2 +-
.../0.1/html/RPM_Guide/ch21s02s04.html | 2 +-
.../0.1/html/RPM_Guide/ch22s02.html | 4 +-
.../0.1/html/RPM_Guide/ch22s02s02.html | 2 +-
.../0.1/html/RPM_Guide/ch22s02s03.html | 2 +-
.../0.1/html/RPM_Guide/ch22s03.html | 4 +-
.../0.1/html/RPM_Guide/ch22s03s02.html | 2 +-
.../0.1/html/RPM_Guide/ch22s03s03.html | 2 +-
.../0.1/html/RPM_Guide/ch22s03s04.html | 2 +-
.../0.1/html/RPM_Guide/ch22s03s05.html | 2 +-
.../0.1/html/RPM_Guide/ch22s04.html | 4 +-
.../0.1/html/RPM_Guide/ch22s05.html | 2 +-
.../0.1/html/RPM_Guide/ch25s02.html | 2 +-
.../0.1/html/RPM_Guide/ch26s02.html | 2 +-
.../0.1/html/RPM_Guide/ch26s03.html | 2 +-
.../0.1/html/RPM_Guide/ch26s04.html | 2 +-
.../0.1/html/RPM_Guide/index.html | 10 +-
.../0.1/html/RPM_Guide/ix01.html | 2 +-
.../0.1/html/RPM_Guide/pr01s02.html | 4 +-
.../0.1/html/RPM_Guide/pr01s02s02.html | 2 +-
.../0.1/html/RPM_Guide/pr01s03.html | 4 +-
.../0.1/html/RPM_Guide/pr01s04.html | 2 +-
...-RPM_Guide-RPM_Overview-Other_RPM_Commands.html | 30 +
...ora_Draft_Documentation-0.1-RPM_Guide-en-US.pdf | Bin 1837637 -> 1838606 bytes
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/en-US/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/en-US/opds-Fedora_Core.xml | 2 +-
.../en-US/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/en-US/opds.xml | 12 +-
public_html/en-US/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/es-ES/opds-Fedora.xml | 2 +-
public_html/es-ES/opds-Fedora_15.xml | 2 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/es-ES/opds-Fedora_Core.xml | 2 +-
.../es-ES/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/es-ES/opds.xml | 14 +-
public_html/es-ES/toc.html | 21 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/fa-IR/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/fa-IR/opds-Fedora_Core.xml | 2 +-
.../fa-IR/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/fa-IR/opds.xml | 12 +-
public_html/fa-IR/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/fi-FI/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/fi-FI/opds-Fedora_Core.xml | 2 +-
.../fi-FI/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/fi-FI/opds.xml | 12 +-
public_html/fi-FI/toc.html | 31 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/fr-FR/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/fr-FR/opds-Fedora_Core.xml | 2 +-
.../fr-FR/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/fr-FR/opds.xml | 12 +-
public_html/fr-FR/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/gu-IN/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/gu-IN/opds-Fedora_Core.xml | 2 +-
.../gu-IN/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/gu-IN/opds.xml | 12 +-
public_html/gu-IN/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/he-IL/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/he-IL/opds-Fedora_Core.xml | 2 +-
.../he-IL/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/he-IL/opds.xml | 12 +-
public_html/he-IL/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/hi-IN/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/hi-IN/opds-Fedora_Core.xml | 2 +-
.../hi-IN/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/hi-IN/opds.xml | 12 +-
public_html/hi-IN/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/hu-HU/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/hu-HU/opds-Fedora_Core.xml | 2 +-
.../hu-HU/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/hu-HU/opds.xml | 12 +-
public_html/hu-HU/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/id-ID/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/id-ID/opds-Fedora_Core.xml | 2 +-
.../id-ID/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/id-ID/opds.xml | 12 +-
public_html/id-ID/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/it-IT/opds-Fedora.xml | 2 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/it-IT/opds-Fedora_Core.xml | 2 +-
.../it-IT/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/it-IT/opds.xml | 12 +-
public_html/it-IT/toc.html | 29 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/ja-JP/opds-Fedora.xml | 2 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/ja-JP/opds-Fedora_Core.xml | 2 +-
.../ja-JP/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/ja-JP/opds.xml | 12 +-
public_html/ja-JP/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/kn-IN/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/kn-IN/opds-Fedora_Core.xml | 2 +-
.../kn-IN/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/kn-IN/opds.xml | 12 +-
public_html/kn-IN/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/ko-KR/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/ko-KR/opds-Fedora_Core.xml | 2 +-
.../ko-KR/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/ko-KR/opds.xml | 12 +-
public_html/ko-KR/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/ml-IN/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/ml-IN/opds-Fedora_Core.xml | 2 +-
.../ml-IN/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/ml-IN/opds.xml | 12 +-
public_html/ml-IN/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/mr-IN/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/mr-IN/opds-Fedora_Core.xml | 2 +-
.../mr-IN/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/mr-IN/opds.xml | 12 +-
public_html/mr-IN/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/nb-NO/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/nb-NO/opds-Fedora_Core.xml | 2 +-
.../nb-NO/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/nb-NO/opds.xml | 12 +-
public_html/nb-NO/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/nl-NL/opds-Fedora.xml | 2 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/nl-NL/opds-Fedora_Core.xml | 2 +-
.../nl-NL/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/nl-NL/opds.xml | 12 +-
public_html/nl-NL/toc.html | 21 +-
public_html/opds.xml | 88 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/or-IN/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/or-IN/opds-Fedora_Core.xml | 2 +-
.../or-IN/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/or-IN/opds.xml | 12 +-
public_html/or-IN/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/pa-IN/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/pa-IN/opds-Fedora_Core.xml | 2 +-
.../pa-IN/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/pa-IN/opds.xml | 12 +-
public_html/pa-IN/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/pl-PL/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/pl-PL/opds-Fedora_Core.xml | 2 +-
.../pl-PL/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/pl-PL/opds.xml | 12 +-
public_html/pl-PL/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/pt-BR/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/pt-BR/opds-Fedora_Core.xml | 2 +-
.../pt-BR/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/pt-BR/opds.xml | 12 +-
public_html/pt-BR/toc.html | 25 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/pt-PT/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/pt-PT/opds-Fedora_Core.xml | 2 +-
.../pt-PT/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/pt-PT/opds.xml | 12 +-
public_html/pt-PT/toc.html | 25 +-
.../ro/opds-Community_Services_Infrastructure.xml | 2 +-
public_html/ro/opds-Fedora.xml | 6 +-
.../ro/opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/ro/opds-Fedora_Core.xml | 2 +-
public_html/ro/opds-Fedora_Draft_Documentation.xml | 2 +-
public_html/ro/opds.xml | 12 +-
public_html/ro/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/ru-RU/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/ru-RU/opds-Fedora_Core.xml | 2 +-
.../ru-RU/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/ru-RU/opds.xml | 12 +-
public_html/ru-RU/toc.html | 25 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/sk-SK/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/sk-SK/opds-Fedora_Core.xml | 2 +-
.../sk-SK/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/sk-SK/opds.xml | 12 +-
public_html/sk-SK/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/sr-Latn-RS/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/sr-Latn-RS/opds-Fedora_Core.xml | 2 +-
.../sr-Latn-RS/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/sr-Latn-RS/opds.xml | 12 +-
public_html/sr-Latn-RS/toc.html | 25 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/sr-RS/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/sr-RS/opds-Fedora_Core.xml | 2 +-
.../sr-RS/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/sr-RS/opds.xml | 12 +-
public_html/sr-RS/toc.html | 25 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/sv-SE/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/sv-SE/opds-Fedora_Core.xml | 2 +-
.../sv-SE/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/sv-SE/opds.xml | 12 +-
public_html/sv-SE/toc.html | 29 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/ta-IN/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/ta-IN/opds-Fedora_Core.xml | 2 +-
.../ta-IN/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/ta-IN/opds.xml | 12 +-
public_html/ta-IN/toc.html | 27 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/te-IN/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/te-IN/opds-Fedora_Core.xml | 2 +-
.../te-IN/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/te-IN/opds.xml | 12 +-
public_html/te-IN/toc.html | 27 +-
public_html/toc.html | 58 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/uk-UA/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/uk-UA/opds-Fedora_Core.xml | 2 +-
.../uk-UA/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/uk-UA/opds.xml | 12 +-
public_html/uk-UA/toc.html | 25 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/zh-CN/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/zh-CN/opds-Fedora_Core.xml | 2 +-
.../zh-CN/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/zh-CN/opds.xml | 12 +-
public_html/zh-CN/toc.html | 29 +-
.../opds-Community_Services_Infrastructure.xml | 2 +-
public_html/zh-TW/opds-Fedora.xml | 6 +-
.../opds-Fedora_Contributor_Documentation.xml | 2 +-
public_html/zh-TW/opds-Fedora_Core.xml | 2 +-
.../zh-TW/opds-Fedora_Draft_Documentation.xml | 9 +-
public_html/zh-TW/opds.xml | 12 +-
public_html/zh-TW/toc.html | 27 +-
584 files changed, 2906 insertions(+), 2797 deletions(-)
---
diff --git a/fedoradocs.db b/fedoradocs.db
index 032913f..adfa4e1 100644
Binary files a/fedoradocs.db and b/fedoradocs.db differ
diff --git a/public_html/Sitemap b/public_html/Sitemap
index eff312b..4de9c92 100644
--- a/public_html/Sitemap
+++ b/public_html/Sitemap
@@ -523,7 +523,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/cs-CZ/Fedora/15/pdf/Burning_ISO_images_to_dis…</loc>
+ <loc>http://docs.fedoraproject.org/cs-CZ/Fedora/15/pdf/Burning_ISO_images_to_dis…</loc>
<lastmod>2011-09-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -1801,7 +1801,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/en-US/Fedora/17/pdf/Fedora_Live_Images/Fedora…</loc>
+ <loc>http://docs.fedoraproject.org/en-US/Fedora/17/pdf/Fedora_Live_Images/Fedora…</loc>
<lastmod>2012-05-29</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -1873,7 +1873,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/en-US/Fedora/17/pdf/Installation_Quick_Start_…</loc>
+ <loc>http://docs.fedoraproject.org/en-US/Fedora/17/pdf/Installation_Quick_Start_…</loc>
<lastmod>2012-05-29</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -1897,7 +1897,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/en-US/Fedora/17/pdf/Power_Management_Guide/Fe…</loc>
+ <loc>http://docs.fedoraproject.org/en-US/Fedora/17/pdf/Power_Management_Guide/Fe…</loc>
<lastmod>2012-05-29</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -2329,7 +2329,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/en-US/Fedora/15/pdf/Burning_ISO_images_to_dis…</loc>
+ <loc>http://docs.fedoraproject.org/en-US/Fedora/15/pdf/Burning_ISO_images_to_dis…</loc>
<lastmod>2011-09-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -3655,7 +3655,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/en-US/Fedora/11/pdf/Security_Guide/Fedora-11-…</loc>
+ <loc>http://docs.fedoraproject.org/en-US/Fedora/11/pdf/Security_Guide/fedora-11-…</loc>
<lastmod>2009-11-17</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -3919,7 +3919,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/en-US/Fedora/8/pdf/Installation_Guide/Fedora-…</loc>
+ <loc>http://docs.fedoraproject.org/en-US/Fedora/8/pdf/Installation_Guide/Fedora-…</loc>
<lastmod>2008-05-13</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -4069,7 +4069,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora_Docu…</loc>
+ <loc>http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora--Sec…</loc>
<lastmod>2011-09-13</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -4111,7 +4111,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/en-US/Fedora_Contributor_Documentation/1/pdf/…</loc>
+ <loc>http://docs.fedoraproject.org/en-US/Fedora_Contributor_Documentation/1/pdf/…</loc>
<lastmod>2010-11-23</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -4183,7 +4183,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/en-US/Fedora_Contributor_Documentation/1/pdf/…</loc>
+ <loc>http://docs.fedoraproject.org/en-US/Fedora_Contributor_Documentation/1/pdf/…</loc>
<lastmod>2010-07-07</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -4742,25 +4742,25 @@
</url>
<url>
<loc>http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/epub/RPM…</loc>
- <lastmod>2012-04-21</lastmod>
+ <lastmod>2012-07-30</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM…</loc>
- <lastmod>2012-04-21</lastmod>
+ <lastmod>2012-07-30</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html-sin…</loc>
- <lastmod>2012-04-21</lastmod>
+ <lastmod>2012-07-30</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/pdf/RPM_…</loc>
- <lastmod>2012-04-21</lastmod>
+ <lastmod>2012-07-30</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
@@ -5269,7 +5269,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/es-ES/Fedora/14/pdf/Software_Management_Guide…</loc>
+ <loc>http://docs.fedoraproject.org/es-ES/Fedora/14/pdf/Software_Management_Guide…</loc>
<lastmod>2010-10-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -5317,7 +5317,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/es-ES/Fedora/13/pdf/Accessibility_Guide/Fedor…</loc>
+ <loc>http://docs.fedoraproject.org/es-ES/Fedora/13/pdf/Accessibility_Guide/fedor…</loc>
<lastmod>2010-05-22</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -5989,7 +5989,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/es-ES/Fedora/11/pdf/Security_Guide/fedora-11-…</loc>
+ <loc>http://docs.fedoraproject.org/es-ES/Fedora/11/pdf/Security_Guide/Fedora-11-…</loc>
<lastmod>2010-06-13</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -6739,7 +6739,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/fi-FI/Fedora/12/pdf/Fedora_Live_images/Fedora…</loc>
+ <loc>http://docs.fedoraproject.org/fi-FI/Fedora/12/pdf/Fedora_Live_images/Fedora…</loc>
<lastmod>2010-06-14</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -6787,7 +6787,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/fi-FI/Fedora/11/pdf/Fedora_Live_images/Fedora…</loc>
+ <loc>http://docs.fedoraproject.org/fi-FI/Fedora/11/pdf/Fedora_Live_images/Fedora…</loc>
<lastmod>2010-06-14</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -6811,7 +6811,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/fi-FI/Fedora/10/pdf/Fedora_Live_Images/Fedora…</loc>
+ <loc>http://docs.fedoraproject.org/fi-FI/Fedora/10/pdf/Fedora_Live_Images/Fedora…</loc>
<lastmod>2010-06-14</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -7147,7 +7147,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/fr-FR/Fedora/15/pdf/Burning_ISO_images_to_dis…</loc>
+ <loc>http://docs.fedoraproject.org/fr-FR/Fedora/15/pdf/Burning_ISO_images_to_dis…</loc>
<lastmod>2011-09-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -7753,7 +7753,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/he-IL/Fedora/15/pdf/Burning_ISO_images_to_dis…</loc>
+ <loc>http://docs.fedoraproject.org/he-IL/Fedora/15/pdf/Burning_ISO_images_to_dis…</loc>
<lastmod>2011-09-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -7993,7 +7993,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/id-ID/Fedora/15/pdf/Burning_ISO_images_to_dis…</loc>
+ <loc>http://docs.fedoraproject.org/id-ID/Fedora/15/pdf/Burning_ISO_images_to_dis…</loc>
<lastmod>2011-09-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -8233,7 +8233,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/it-IT/Fedora/15/pdf/Burning_ISO_images_to_dis…</loc>
+ <loc>http://docs.fedoraproject.org/it-IT/Fedora/15/pdf/Burning_ISO_images_to_dis…</loc>
<lastmod>2011-09-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -9271,7 +9271,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/ja-JP/Fedora/16/pdf/Burning_ISO_images_to_dis…</loc>
+ <loc>http://docs.fedoraproject.org/ja-JP/Fedora/16/pdf/Burning_ISO_images_to_dis…</loc>
<lastmod>2011-11-23</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -9487,7 +9487,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/ja-JP/Fedora/15/pdf/Burning_ISO_images_to_dis…</loc>
+ <loc>http://docs.fedoraproject.org/ja-JP/Fedora/15/pdf/Burning_ISO_images_to_dis…</loc>
<lastmod>2011-09-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -11095,7 +11095,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/nl-NL/Fedora/13/pdf/Accessibility_Guide/fedor…</loc>
+ <loc>http://docs.fedoraproject.org/nl-NL/Fedora/13/pdf/Accessibility_Guide/Fedor…</loc>
<lastmod>2010-05-22</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -14611,7 +14611,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/ru-RU/Fedora/15/pdf/Burning_ISO_images_to_dis…</loc>
+ <loc>http://docs.fedoraproject.org/ru-RU/Fedora/15/pdf/Burning_ISO_images_to_dis…</loc>
<lastmod>2011-09-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -14701,7 +14701,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/ru-RU/Fedora/13/pdf/Accessibility_Guide/Fedor…</loc>
+ <loc>http://docs.fedoraproject.org/ru-RU/Fedora/13/pdf/Accessibility_Guide/fedor…</loc>
<lastmod>2010-05-22</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -16249,7 +16249,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/sv-SE/Fedora/15/pdf/Burning_ISO_images_to_dis…</loc>
+ <loc>http://docs.fedoraproject.org/sv-SE/Fedora/15/pdf/Burning_ISO_images_to_dis…</loc>
<lastmod>2011-09-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -17269,7 +17269,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/uk-UA/Fedora/13/pdf/Accessibility_Guide/fedor…</loc>
+ <loc>http://docs.fedoraproject.org/uk-UA/Fedora/13/pdf/Accessibility_Guide/Fedor…</loc>
<lastmod>2010-05-22</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -17965,7 +17965,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/zh-CN/Fedora/15/pdf/Burning_ISO_images_to_dis…</loc>
+ <loc>http://docs.fedoraproject.org/zh-CN/Fedora/15/pdf/Burning_ISO_images_to_dis…</loc>
<lastmod>2011-09-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
@@ -18043,7 +18043,7 @@
<priority>0.8</priority>
</url>
<url>
- <loc>http://docs.fedoraproject.org/zh-CN/Fedora/13/pdf/Accessibility_Guide/fedor…</loc>
+ <loc>http://docs.fedoraproject.org/zh-CN/Fedora/13/pdf/Accessibility_Guide/Fedor…</loc>
<lastmod>2010-05-22</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
diff --git a/public_html/as-IN/opds-Community_Services_Infrastructure.xml b/public_html/as-IN/opds-Community_Services_Infrastructure.xml
index 12aa773..598b353 100644
--- a/public_html/as-IN/opds-Community_Services_Infrastructure.xml
+++ b/public_html/as-IN/opds-Community_Services_Infrastructure.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/as-IN/opds-Community_Services_Infrastructure.…</id>
<title>Community Services Infrastructure</title>
<subtitle>Community Services Infrastructure</subtitle>
- <updated>2012-07-25T02:52:08</updated>
+ <updated>2012-07-30T18:36:12</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/as-IN/opds-Fedora.xml b/public_html/as-IN/opds-Fedora.xml
index d38f43e..86962c0 100644
--- a/public_html/as-IN/opds-Fedora.xml
+++ b/public_html/as-IN/opds-Fedora.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/as-IN/opds-Fedora.xml</id>
<title>Fedora</title>
<subtitle>Fedora</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
@@ -1750,7 +1750,7 @@
</entry>
<entry>
<title>Security Guide</title>
- <id>http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora_Docu…</id>
+ <id>http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora--Sec…</id>
<!--author>
<name></name>
<uri></uri>
@@ -1762,7 +1762,7 @@
<summary>A Guide to Securing Fedora Linux
</summary>
<content type="text">The Fedora Security Guide is designed to assist users of Fedora in learning the processes and practices of securing workstations and servers against local and remote intrusion, exploitation, and malicious activity. Focused on Fedora Linux but detailing concepts and techniques valid for all Linux systems, the Fedora Security Guide details the planning and the tools involved in creating a secured computing environment for the data center, workplace, and home. With proper administrative knowledge, vigilance, and tools, systems running Linux can be both fully functional and secured from most common intrusion and exploit methods.</content>
- <link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora_Docu…">
+ <link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora--Sec…">
<dc:format>application/epub+zip</dc:format>
</link>
<!--link type="application/atom+xml;type=entry" href="" rel="alternate" title="Full entry"/-->
diff --git a/public_html/as-IN/opds-Fedora_Contributor_Documentation.xml b/public_html/as-IN/opds-Fedora_Contributor_Documentation.xml
index ada9807..f4b40ea 100644
--- a/public_html/as-IN/opds-Fedora_Contributor_Documentation.xml
+++ b/public_html/as-IN/opds-Fedora_Contributor_Documentation.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/as-IN/opds-Fedora_Contributor_Documentation.x…</id>
<title>Fedora Contributor Documentation</title>
<subtitle>Fedora Contributor Documentation</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/as-IN/opds-Fedora_Core.xml b/public_html/as-IN/opds-Fedora_Core.xml
index 0a274c1..9ad789e 100644
--- a/public_html/as-IN/opds-Fedora_Core.xml
+++ b/public_html/as-IN/opds-Fedora_Core.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/as-IN/opds-Fedora_Core.xml</id>
<title>Fedora Core</title>
<subtitle>Fedora Core</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/as-IN/opds-Fedora_Draft_Documentation.xml b/public_html/as-IN/opds-Fedora_Draft_Documentation.xml
index 5453644..76ba53a 100644
--- a/public_html/as-IN/opds-Fedora_Draft_Documentation.xml
+++ b/public_html/as-IN/opds-Fedora_Draft_Documentation.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/as-IN/opds-Fedora_Draft_Documentation.xml</id>
<title>Fedora Draft Documentation</title>
<subtitle>Fedora Draft Documentation</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
@@ -171,13 +171,12 @@
<name></name>
<uri></uri>
</author-->
- <updated>2012-04-21</updated>
+ <updated>2012-07-30</updated>
<dc:language>as-IN</dc:language>
<category label="" scheme="http://lexcycle.com/stanza/header" term="free"/>
<!--dc:issued></dc:issued-->
- <summary>short descriptor
-</summary>
- <content type="text">A short overview and summary of the book's subject and purpose, traditionally no more than one paragraph long. Note: the abstract will appear in the front matter of your book and will also be placed in the #description field of the book's RPM spec file.</content>
+ <summary></summary>
+ <content type="text">This book is a guide for using the RPM Package Manager. It is a work in progress to update Eric Foster-Johnson's original work.</content>
<link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/epub/RPM…">
<dc:format>application/epub+zip</dc:format>
</link>
diff --git a/public_html/as-IN/opds.xml b/public_html/as-IN/opds.xml
index ac142ce..d18a86c 100644
--- a/public_html/as-IN/opds.xml
+++ b/public_html/as-IN/opds.xml
@@ -6,7 +6,7 @@
<link rel="http://opds-spec.org/crawlable" type="application/atom+xml" href="http://bookserver.archive.org/catalog/crawlable" title="Crawlable feed"/>
<id>http://docs.fedoraproject.org/as-IN/opds.xml</id>
<title>Product List</title>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
@@ -15,7 +15,7 @@
<entry>
<title>Community Services Infrastructure</title>
<id>http://docs.fedoraproject.org/as-IN/Community_Services_Infrastructure/opds-…</id>
- <updated>2012-07-25T02:52:08</updated>
+ <updated>2012-07-30T18:36:12</updated>
<dc:language>as-IN</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Community_Services_Infrastructure.xml"/>
@@ -23,7 +23,7 @@
<entry>
<title>Fedora</title>
<id>http://docs.fedoraproject.org/as-IN/Fedora/opds-Fedora.xml</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<dc:language>as-IN</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora.xml"/>
@@ -31,7 +31,7 @@
<entry>
<title>Fedora Contributor Documentation</title>
<id>http://docs.fedoraproject.org/as-IN/Fedora_Contributor_Documentation/opds-F…</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<dc:language>as-IN</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Contributor_Documentation.xml"/>
@@ -39,7 +39,7 @@
<entry>
<title>Fedora Core</title>
<id>http://docs.fedoraproject.org/as-IN/Fedora_Core/opds-Fedora_Core.xml</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<dc:language>as-IN</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Core.xml"/>
@@ -47,7 +47,7 @@
<entry>
<title>Fedora Draft Documentation</title>
<id>http://docs.fedoraproject.org/as-IN/Fedora_Draft_Documentation/opds-Fedora_…</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<dc:language>as-IN</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Draft_Documentation.xml"/>
diff --git a/public_html/as-IN/toc.html b/public_html/as-IN/toc.html
index 1a4215e..e4cdde5 100644
--- a/public_html/as-IN/toc.html
+++ b/public_html/as-IN/toc.html
@@ -19,7 +19,14 @@
<a style="background-image:url(images/web_logo.png)" href="index.html" onclick="window.top.location='index.html'" ><span>Welcome</span></a>
</h1>
<div class="tocnavwrap">
- <p/>
+ <form target="_top" method="get" action="http://www.google.com/search">
+ <div class="search">
+ <input class="searchtxt" type="text" name="q" value="" />
+ <input class="searchsub" type="submit" value="Search" />
+ <input class="searchchk" type="hidden" name="sitesearch" value="http://docs.fedoraproject.org" />
+ </div>
+ </form>
+
<div class="lang">
<div class="reset">
<a href="#" title="collapse document navigation" onclick="clearCookie();">collapse all</a>
@@ -119,7 +126,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Fedora_Live_Images/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Fedora_Live_Images/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Fedora_Live_Images/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Fedora_Live_Images/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-16-Fedora_Live_Images-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-16-Fedora_Live_Images-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.FreeIPA_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.17.FreeIPA_Guide.types');">
@@ -146,7 +153,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Installation_Quick_Start_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Installation_Quick_Start_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Installation_Quick_Start_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Installation_Quick_Start_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora_Draft_Documentation-0.1-Installation_Quick_Start_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora_Draft_Documentation-0.1-Installation_Quick_Start_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.Power_Management_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.17.Power_Management_Guide.types');">
@@ -155,7 +162,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Power_Management_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Power_Management_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Power_Management_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Power_Management_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora--Power_Management_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora--Power_Management_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.Release_Notes' class="book collapsed" onclick="toggle(event, 'Fedora.17.Release_Notes.types');">
@@ -337,7 +344,7 @@
<a class="type" href="../en-US/./Fedora/15/epub/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/15/html/Burning_ISO_images_to_disc/index.html" onclick="window.top.location='../en-US/./Fedora/15/html/Burning_ISO_images_to_disc/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/15/html-single/Burning_ISO_images_to_disc/index.html" onclick="window.top.location='../en-US/./Fedora/15/html-single/Burning_ISO_images_to_disc/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15.0-Burning_ISO_images_to_disc-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15.0-Burning_ISO_images_to_disc-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.15.Deployment_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.15.Deployment_Guide.types');">
@@ -878,7 +885,7 @@
<a class="type" href="../en-US/./Fedora/11/epub/Security_Guide/Fedora-11-Security_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/11/html/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/11/html/Security_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/11/html-single/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/11/html-single/Security_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/11/pdf/Security_Guide/Fedora-11-Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/11/pdf/Security_Guide/Fedora-11-Security_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/11/pdf/Security_Guide/fedora-11-Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/11/pdf/Security_Guide/fedora-11-Security_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.11.User_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.11.User_Guide.types');">
@@ -1007,7 +1014,7 @@
<a class="type" href="../en-US/./Fedora/8/epub/Installation_Guide/Fedora-8-Installation_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/8/html/Installation_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/8/html/Installation_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/8/html-single/Installation_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/8/html-single/Installation_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-9-Installation_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-9-Installation_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-8-Installation_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-8-Installation_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.8.Making_Fedora_Discs' class="book collapsed" onclick="toggle(event, 'Fedora.8.Making_Fedora_Discs.types');">
@@ -1087,7 +1094,7 @@
<div id='Fedora..Security_Guide' class="book collapsed" onclick="toggle(event, 'Fedora..Security_Guide.types');">
<a class="type" href="../en-US/Fedora//html/Security_Guide/index.html" onclick="window.top.location='../en-US/Fedora//html/Security_Guide/index.html'"><span class="book">Security Guide</span></a>
<div id='Fedora..Security_Guide.types' class="types hidden" onclick="work=0;">
- <a class="type" href="../en-US/./Fedora//epub/Security_Guide/Fedora_Documentation--Security_Guide-en-US.epub" >epub</a>
+ <a class="type" href="../en-US/./Fedora//epub/Security_Guide/Fedora--Security_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora//html/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora//html/Security_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora//html-single/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora//html-single/Security_Guide/index.html';return false;">html-single</a>
<a class="type" href="../en-US/./Fedora//pdf/Security_Guide/Fedora--Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora//pdf/Security_Guide/Fedora--Security_Guide-en-US.pdf';return false;">pdf</a>
@@ -1112,7 +1119,7 @@
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/epub/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html/Fedora_Elections_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html/Fedora_Elections_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html-single/Fedora_Elections_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html-single/Fedora_Elections_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation--Fedora_Elections_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation--Fedora_Elections_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora_Contributor_Documentation.1.Software_Collections_Guide' class="book collapsed" onclick="toggle(event, 'Fedora_Contributor_Documentation.1.Software_Collections_Guide.types');">
@@ -1139,7 +1146,7 @@
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/epub/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html/Users_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html/Users_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html-single/Users_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html-single/Users_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1.6-Users_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1.6-Users_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
</div>
diff --git a/public_html/bg-BG/opds-Community_Services_Infrastructure.xml b/public_html/bg-BG/opds-Community_Services_Infrastructure.xml
index 82410c9..0d5415a 100644
--- a/public_html/bg-BG/opds-Community_Services_Infrastructure.xml
+++ b/public_html/bg-BG/opds-Community_Services_Infrastructure.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/bg-BG/opds-Community_Services_Infrastructure.…</id>
<title>Community Services Infrastructure</title>
<subtitle>Community Services Infrastructure</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/bg-BG/opds-Fedora.xml b/public_html/bg-BG/opds-Fedora.xml
index 0f97511..806f83b 100644
--- a/public_html/bg-BG/opds-Fedora.xml
+++ b/public_html/bg-BG/opds-Fedora.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/bg-BG/opds-Fedora.xml</id>
<title>Fedora</title>
<subtitle>Fedora</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
@@ -1731,7 +1731,7 @@
</entry>
<entry>
<title>Security Guide</title>
- <id>http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora_Docu…</id>
+ <id>http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora--Sec…</id>
<!--author>
<name></name>
<uri></uri>
@@ -1743,7 +1743,7 @@
<summary>A Guide to Securing Fedora Linux
</summary>
<content type="text">The Fedora Security Guide is designed to assist users of Fedora in learning the processes and practices of securing workstations and servers against local and remote intrusion, exploitation, and malicious activity. Focused on Fedora Linux but detailing concepts and techniques valid for all Linux systems, the Fedora Security Guide details the planning and the tools involved in creating a secured computing environment for the data center, workplace, and home. With proper administrative knowledge, vigilance, and tools, systems running Linux can be both fully functional and secured from most common intrusion and exploit methods.</content>
- <link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora_Docu…">
+ <link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora--Sec…">
<dc:format>application/epub+zip</dc:format>
</link>
<!--link type="application/atom+xml;type=entry" href="" rel="alternate" title="Full entry"/-->
diff --git a/public_html/bg-BG/opds-Fedora_Contributor_Documentation.xml b/public_html/bg-BG/opds-Fedora_Contributor_Documentation.xml
index 933c8fc..624ce14 100644
--- a/public_html/bg-BG/opds-Fedora_Contributor_Documentation.xml
+++ b/public_html/bg-BG/opds-Fedora_Contributor_Documentation.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/bg-BG/opds-Fedora_Contributor_Documentation.x…</id>
<title>Fedora Contributor Documentation</title>
<subtitle>Fedora Contributor Documentation</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/bg-BG/opds-Fedora_Core.xml b/public_html/bg-BG/opds-Fedora_Core.xml
index 5eec556..21d8cd3 100644
--- a/public_html/bg-BG/opds-Fedora_Core.xml
+++ b/public_html/bg-BG/opds-Fedora_Core.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/bg-BG/opds-Fedora_Core.xml</id>
<title>Fedora Core</title>
<subtitle>Fedora Core</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/bg-BG/opds-Fedora_Draft_Documentation.xml b/public_html/bg-BG/opds-Fedora_Draft_Documentation.xml
index 2e1516a..03f75d5 100644
--- a/public_html/bg-BG/opds-Fedora_Draft_Documentation.xml
+++ b/public_html/bg-BG/opds-Fedora_Draft_Documentation.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/bg-BG/opds-Fedora_Draft_Documentation.xml</id>
<title>Fedora Draft Documentation</title>
<subtitle>Fedora Draft Documentation</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
@@ -171,13 +171,12 @@
<name></name>
<uri></uri>
</author-->
- <updated>2012-04-21</updated>
+ <updated>2012-07-30</updated>
<dc:language>bg-BG</dc:language>
<category label="" scheme="http://lexcycle.com/stanza/header" term="free"/>
<!--dc:issued></dc:issued-->
- <summary>short descriptor
-</summary>
- <content type="text">A short overview and summary of the book's subject and purpose, traditionally no more than one paragraph long. Note: the abstract will appear in the front matter of your book and will also be placed in the #description field of the book's RPM spec file.</content>
+ <summary></summary>
+ <content type="text">This book is a guide for using the RPM Package Manager. It is a work in progress to update Eric Foster-Johnson's original work.</content>
<link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/epub/RPM…">
<dc:format>application/epub+zip</dc:format>
</link>
diff --git a/public_html/bg-BG/opds.xml b/public_html/bg-BG/opds.xml
index 06d616a..6f31f07 100644
--- a/public_html/bg-BG/opds.xml
+++ b/public_html/bg-BG/opds.xml
@@ -6,7 +6,7 @@
<link rel="http://opds-spec.org/crawlable" type="application/atom+xml" href="http://bookserver.archive.org/catalog/crawlable" title="Crawlable feed"/>
<id>http://docs.fedoraproject.org/bg-BG/opds.xml</id>
<title>Product List</title>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
@@ -15,7 +15,7 @@
<entry>
<title>Community Services Infrastructure</title>
<id>http://docs.fedoraproject.org/bg-BG/Community_Services_Infrastructure/opds-…</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<dc:language>bg-BG</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Community_Services_Infrastructure.xml"/>
@@ -23,7 +23,7 @@
<entry>
<title>Fedora</title>
<id>http://docs.fedoraproject.org/bg-BG/Fedora/opds-Fedora.xml</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<dc:language>bg-BG</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora.xml"/>
@@ -31,7 +31,7 @@
<entry>
<title>Fedora Contributor Documentation</title>
<id>http://docs.fedoraproject.org/bg-BG/Fedora_Contributor_Documentation/opds-F…</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<dc:language>bg-BG</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Contributor_Documentation.xml"/>
@@ -39,7 +39,7 @@
<entry>
<title>Fedora Core</title>
<id>http://docs.fedoraproject.org/bg-BG/Fedora_Core/opds-Fedora_Core.xml</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<dc:language>bg-BG</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Core.xml"/>
@@ -47,7 +47,7 @@
<entry>
<title>Fedora Draft Documentation</title>
<id>http://docs.fedoraproject.org/bg-BG/Fedora_Draft_Documentation/opds-Fedora_…</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<dc:language>bg-BG</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Draft_Documentation.xml"/>
diff --git a/public_html/bg-BG/toc.html b/public_html/bg-BG/toc.html
index d50f7fc..fe75f5e 100644
--- a/public_html/bg-BG/toc.html
+++ b/public_html/bg-BG/toc.html
@@ -19,7 +19,14 @@
<a style="background-image:url(images/web_logo.png)" href="index.html" onclick="window.top.location='index.html'" ><span>Welcome</span></a>
</h1>
<div class="tocnavwrap">
- <p/>
+ <form target="_top" method="get" action="http://www.google.com/search">
+ <div class="search">
+ <input class="searchtxt" type="text" name="q" value="" />
+ <input class="searchsub" type="submit" value="Search" />
+ <input class="searchchk" type="hidden" name="sitesearch" value="http://docs.fedoraproject.org" />
+ </div>
+ </form>
+
<div class="lang">
<div class="reset">
<a href="#" title="collapse document navigation" onclick="clearCookie();">collapse all</a>
@@ -128,7 +135,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Fedora_Live_Images/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Fedora_Live_Images/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Fedora_Live_Images/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Fedora_Live_Images/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-16-Fedora_Live_Images-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-16-Fedora_Live_Images-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.FreeIPA_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.17.FreeIPA_Guide.types');">
@@ -155,7 +162,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Installation_Quick_Start_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Installation_Quick_Start_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Installation_Quick_Start_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Installation_Quick_Start_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora_Draft_Documentation-0.1-Installation_Quick_Start_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora_Draft_Documentation-0.1-Installation_Quick_Start_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.Power_Management_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.17.Power_Management_Guide.types');">
@@ -164,7 +171,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Power_Management_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Power_Management_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Power_Management_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Power_Management_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora--Power_Management_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora--Power_Management_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.Resource_Management_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.17.Resource_Management_Guide.types');">
@@ -352,7 +359,7 @@
<a class="type" href="../en-US/./Fedora/15/epub/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/15/html/Burning_ISO_images_to_disc/index.html" onclick="window.top.location='../en-US/./Fedora/15/html/Burning_ISO_images_to_disc/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/15/html-single/Burning_ISO_images_to_disc/index.html" onclick="window.top.location='../en-US/./Fedora/15/html-single/Burning_ISO_images_to_disc/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15.0-Burning_ISO_images_to_disc-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15.0-Burning_ISO_images_to_disc-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.15.Deployment_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.15.Deployment_Guide.types');">
@@ -876,7 +883,7 @@
<a class="type" href="../en-US/./Fedora/11/epub/Security_Guide/Fedora-11-Security_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/11/html/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/11/html/Security_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/11/html-single/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/11/html-single/Security_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/11/pdf/Security_Guide/Fedora-11-Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/11/pdf/Security_Guide/Fedora-11-Security_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/11/pdf/Security_Guide/fedora-11-Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/11/pdf/Security_Guide/fedora-11-Security_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.11.User_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.11.User_Guide.types');">
@@ -1005,7 +1012,7 @@
<a class="type" href="../en-US/./Fedora/8/epub/Installation_Guide/Fedora-8-Installation_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/8/html/Installation_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/8/html/Installation_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/8/html-single/Installation_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/8/html-single/Installation_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-9-Installation_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-9-Installation_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-8-Installation_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-8-Installation_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.8.Making_Fedora_Discs' class="book collapsed" onclick="toggle(event, 'Fedora.8.Making_Fedora_Discs.types');">
@@ -1085,7 +1092,7 @@
<div id='Fedora..Security_Guide' class="book collapsed" onclick="toggle(event, 'Fedora..Security_Guide.types');">
<a class="type" href="../en-US/Fedora//html/Security_Guide/index.html" onclick="window.top.location='../en-US/Fedora//html/Security_Guide/index.html'"><span class="book">Security Guide</span></a>
<div id='Fedora..Security_Guide.types' class="types hidden" onclick="work=0;">
- <a class="type" href="../en-US/./Fedora//epub/Security_Guide/Fedora_Documentation--Security_Guide-en-US.epub" >epub</a>
+ <a class="type" href="../en-US/./Fedora//epub/Security_Guide/Fedora--Security_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora//html/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora//html/Security_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora//html-single/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora//html-single/Security_Guide/index.html';return false;">html-single</a>
<a class="type" href="../en-US/./Fedora//pdf/Security_Guide/Fedora--Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora//pdf/Security_Guide/Fedora--Security_Guide-en-US.pdf';return false;">pdf</a>
@@ -1110,7 +1117,7 @@
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/epub/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html/Fedora_Elections_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html/Fedora_Elections_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html-single/Fedora_Elections_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html-single/Fedora_Elections_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation--Fedora_Elections_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation--Fedora_Elections_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora_Contributor_Documentation.1.Software_Collections_Guide' class="book collapsed" onclick="toggle(event, 'Fedora_Contributor_Documentation.1.Software_Collections_Guide.types');">
@@ -1137,7 +1144,7 @@
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/epub/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html/Users_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html/Users_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html-single/Users_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html-single/Users_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1.6-Users_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1.6-Users_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
</div>
diff --git a/public_html/bn-IN/opds-Community_Services_Infrastructure.xml b/public_html/bn-IN/opds-Community_Services_Infrastructure.xml
index 01b9250..d508843 100644
--- a/public_html/bn-IN/opds-Community_Services_Infrastructure.xml
+++ b/public_html/bn-IN/opds-Community_Services_Infrastructure.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/bn-IN/opds-Community_Services_Infrastructure.…</id>
<title>Community Services Infrastructure</title>
<subtitle>Community Services Infrastructure</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/bn-IN/opds-Fedora.xml b/public_html/bn-IN/opds-Fedora.xml
index fbc8c36..3390b16 100644
--- a/public_html/bn-IN/opds-Fedora.xml
+++ b/public_html/bn-IN/opds-Fedora.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/bn-IN/opds-Fedora.xml</id>
<title>Fedora</title>
<subtitle>Fedora</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
@@ -1750,7 +1750,7 @@
</entry>
<entry>
<title>Security Guide</title>
- <id>http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora_Docu…</id>
+ <id>http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora--Sec…</id>
<!--author>
<name></name>
<uri></uri>
@@ -1762,7 +1762,7 @@
<summary>A Guide to Securing Fedora Linux
</summary>
<content type="text">The Fedora Security Guide is designed to assist users of Fedora in learning the processes and practices of securing workstations and servers against local and remote intrusion, exploitation, and malicious activity. Focused on Fedora Linux but detailing concepts and techniques valid for all Linux systems, the Fedora Security Guide details the planning and the tools involved in creating a secured computing environment for the data center, workplace, and home. With proper administrative knowledge, vigilance, and tools, systems running Linux can be both fully functional and secured from most common intrusion and exploit methods.</content>
- <link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora_Docu…">
+ <link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora--Sec…">
<dc:format>application/epub+zip</dc:format>
</link>
<!--link type="application/atom+xml;type=entry" href="" rel="alternate" title="Full entry"/-->
diff --git a/public_html/bn-IN/opds-Fedora_Contributor_Documentation.xml b/public_html/bn-IN/opds-Fedora_Contributor_Documentation.xml
index 3488f76..68fe819 100644
--- a/public_html/bn-IN/opds-Fedora_Contributor_Documentation.xml
+++ b/public_html/bn-IN/opds-Fedora_Contributor_Documentation.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/bn-IN/opds-Fedora_Contributor_Documentation.x…</id>
<title>Fedora Contributor Documentation</title>
<subtitle>Fedora Contributor Documentation</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/bn-IN/opds-Fedora_Core.xml b/public_html/bn-IN/opds-Fedora_Core.xml
index f4bd82f..86ed1bf 100644
--- a/public_html/bn-IN/opds-Fedora_Core.xml
+++ b/public_html/bn-IN/opds-Fedora_Core.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/bn-IN/opds-Fedora_Core.xml</id>
<title>Fedora Core</title>
<subtitle>Fedora Core</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/bn-IN/opds-Fedora_Draft_Documentation.xml b/public_html/bn-IN/opds-Fedora_Draft_Documentation.xml
index 2129611..fd0c99c 100644
--- a/public_html/bn-IN/opds-Fedora_Draft_Documentation.xml
+++ b/public_html/bn-IN/opds-Fedora_Draft_Documentation.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/bn-IN/opds-Fedora_Draft_Documentation.xml</id>
<title>Fedora Draft Documentation</title>
<subtitle>Fedora Draft Documentation</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
@@ -171,13 +171,12 @@
<name></name>
<uri></uri>
</author-->
- <updated>2012-04-21</updated>
+ <updated>2012-07-30</updated>
<dc:language>bn-IN</dc:language>
<category label="" scheme="http://lexcycle.com/stanza/header" term="free"/>
<!--dc:issued></dc:issued-->
- <summary>short descriptor
-</summary>
- <content type="text">A short overview and summary of the book's subject and purpose, traditionally no more than one paragraph long. Note: the abstract will appear in the front matter of your book and will also be placed in the #description field of the book's RPM spec file.</content>
+ <summary></summary>
+ <content type="text">This book is a guide for using the RPM Package Manager. It is a work in progress to update Eric Foster-Johnson's original work.</content>
<link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/epub/RPM…">
<dc:format>application/epub+zip</dc:format>
</link>
diff --git a/public_html/bn-IN/opds.xml b/public_html/bn-IN/opds.xml
index b3884ac..4308879 100644
--- a/public_html/bn-IN/opds.xml
+++ b/public_html/bn-IN/opds.xml
@@ -6,7 +6,7 @@
<link rel="http://opds-spec.org/crawlable" type="application/atom+xml" href="http://bookserver.archive.org/catalog/crawlable" title="Crawlable feed"/>
<id>http://docs.fedoraproject.org/bn-IN/opds.xml</id>
<title>Product List</title>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
@@ -15,7 +15,7 @@
<entry>
<title>Community Services Infrastructure</title>
<id>http://docs.fedoraproject.org/bn-IN/Community_Services_Infrastructure/opds-…</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<dc:language>bn-IN</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Community_Services_Infrastructure.xml"/>
@@ -23,7 +23,7 @@
<entry>
<title>Fedora</title>
<id>http://docs.fedoraproject.org/bn-IN/Fedora/opds-Fedora.xml</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<dc:language>bn-IN</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora.xml"/>
@@ -31,7 +31,7 @@
<entry>
<title>Fedora Contributor Documentation</title>
<id>http://docs.fedoraproject.org/bn-IN/Fedora_Contributor_Documentation/opds-F…</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<dc:language>bn-IN</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Contributor_Documentation.xml"/>
@@ -39,7 +39,7 @@
<entry>
<title>Fedora Core</title>
<id>http://docs.fedoraproject.org/bn-IN/Fedora_Core/opds-Fedora_Core.xml</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<dc:language>bn-IN</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Core.xml"/>
@@ -47,7 +47,7 @@
<entry>
<title>Fedora Draft Documentation</title>
<id>http://docs.fedoraproject.org/bn-IN/Fedora_Draft_Documentation/opds-Fedora_…</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<dc:language>bn-IN</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Draft_Documentation.xml"/>
diff --git a/public_html/bn-IN/toc.html b/public_html/bn-IN/toc.html
index 122ddc8..0fc3b04 100644
--- a/public_html/bn-IN/toc.html
+++ b/public_html/bn-IN/toc.html
@@ -19,7 +19,14 @@
<a style="background-image:url(images/web_logo.png)" href="index.html" onclick="window.top.location='index.html'" ><span>Welcome</span></a>
</h1>
<div class="tocnavwrap">
- <p/>
+ <form target="_top" method="get" action="http://www.google.com/search">
+ <div class="search">
+ <input class="searchtxt" type="text" name="q" value="" />
+ <input class="searchsub" type="submit" value="Search" />
+ <input class="searchchk" type="hidden" name="sitesearch" value="http://docs.fedoraproject.org" />
+ </div>
+ </form>
+
<div class="lang">
<div class="reset">
<a href="#" title="collapse document navigation" onclick="clearCookie();">collapse all</a>
@@ -119,7 +126,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Fedora_Live_Images/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Fedora_Live_Images/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Fedora_Live_Images/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Fedora_Live_Images/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-16-Fedora_Live_Images-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-16-Fedora_Live_Images-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.FreeIPA_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.17.FreeIPA_Guide.types');">
@@ -146,7 +153,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Installation_Quick_Start_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Installation_Quick_Start_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Installation_Quick_Start_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Installation_Quick_Start_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora_Draft_Documentation-0.1-Installation_Quick_Start_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora_Draft_Documentation-0.1-Installation_Quick_Start_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.Power_Management_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.17.Power_Management_Guide.types');">
@@ -155,7 +162,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Power_Management_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Power_Management_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Power_Management_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Power_Management_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora--Power_Management_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora--Power_Management_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.Release_Notes' class="book collapsed" onclick="toggle(event, 'Fedora.17.Release_Notes.types');">
@@ -337,7 +344,7 @@
<a class="type" href="../en-US/./Fedora/15/epub/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/15/html/Burning_ISO_images_to_disc/index.html" onclick="window.top.location='../en-US/./Fedora/15/html/Burning_ISO_images_to_disc/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/15/html-single/Burning_ISO_images_to_disc/index.html" onclick="window.top.location='../en-US/./Fedora/15/html-single/Burning_ISO_images_to_disc/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15.0-Burning_ISO_images_to_disc-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15.0-Burning_ISO_images_to_disc-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.15.Deployment_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.15.Deployment_Guide.types');">
@@ -878,7 +885,7 @@
<a class="type" href="../en-US/./Fedora/11/epub/Security_Guide/Fedora-11-Security_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/11/html/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/11/html/Security_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/11/html-single/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/11/html-single/Security_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/11/pdf/Security_Guide/Fedora-11-Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/11/pdf/Security_Guide/Fedora-11-Security_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/11/pdf/Security_Guide/fedora-11-Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/11/pdf/Security_Guide/fedora-11-Security_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.11.User_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.11.User_Guide.types');">
@@ -1007,7 +1014,7 @@
<a class="type" href="../en-US/./Fedora/8/epub/Installation_Guide/Fedora-8-Installation_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/8/html/Installation_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/8/html/Installation_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/8/html-single/Installation_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/8/html-single/Installation_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-9-Installation_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-9-Installation_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-8-Installation_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-8-Installation_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.8.Making_Fedora_Discs' class="book collapsed" onclick="toggle(event, 'Fedora.8.Making_Fedora_Discs.types');">
@@ -1087,7 +1094,7 @@
<div id='Fedora..Security_Guide' class="book collapsed" onclick="toggle(event, 'Fedora..Security_Guide.types');">
<a class="type" href="../en-US/Fedora//html/Security_Guide/index.html" onclick="window.top.location='../en-US/Fedora//html/Security_Guide/index.html'"><span class="book">Security Guide</span></a>
<div id='Fedora..Security_Guide.types' class="types hidden" onclick="work=0;">
- <a class="type" href="../en-US/./Fedora//epub/Security_Guide/Fedora_Documentation--Security_Guide-en-US.epub" >epub</a>
+ <a class="type" href="../en-US/./Fedora//epub/Security_Guide/Fedora--Security_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora//html/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora//html/Security_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora//html-single/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora//html-single/Security_Guide/index.html';return false;">html-single</a>
<a class="type" href="../en-US/./Fedora//pdf/Security_Guide/Fedora--Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora//pdf/Security_Guide/Fedora--Security_Guide-en-US.pdf';return false;">pdf</a>
@@ -1112,7 +1119,7 @@
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/epub/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html/Fedora_Elections_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html/Fedora_Elections_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html-single/Fedora_Elections_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html-single/Fedora_Elections_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation--Fedora_Elections_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation--Fedora_Elections_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora_Contributor_Documentation.1.Software_Collections_Guide' class="book collapsed" onclick="toggle(event, 'Fedora_Contributor_Documentation.1.Software_Collections_Guide.types');">
@@ -1139,7 +1146,7 @@
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/epub/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html/Users_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html/Users_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html-single/Users_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html-single/Users_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1.6-Users_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1.6-Users_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
</div>
diff --git a/public_html/bs-BA/opds-Community_Services_Infrastructure.xml b/public_html/bs-BA/opds-Community_Services_Infrastructure.xml
index 74bc8a3..8720f47 100644
--- a/public_html/bs-BA/opds-Community_Services_Infrastructure.xml
+++ b/public_html/bs-BA/opds-Community_Services_Infrastructure.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/bs-BA/opds-Community_Services_Infrastructure.…</id>
<title>Community Services Infrastructure</title>
<subtitle>Community Services Infrastructure</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/bs-BA/opds-Fedora.xml b/public_html/bs-BA/opds-Fedora.xml
index 6225b1b..6705a61 100644
--- a/public_html/bs-BA/opds-Fedora.xml
+++ b/public_html/bs-BA/opds-Fedora.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/bs-BA/opds-Fedora.xml</id>
<title>Fedora</title>
<subtitle>Fedora</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
@@ -1750,7 +1750,7 @@
</entry>
<entry>
<title>Security Guide</title>
- <id>http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora_Docu…</id>
+ <id>http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora--Sec…</id>
<!--author>
<name></name>
<uri></uri>
@@ -1762,7 +1762,7 @@
<summary>A Guide to Securing Fedora Linux
</summary>
<content type="text">The Fedora Security Guide is designed to assist users of Fedora in learning the processes and practices of securing workstations and servers against local and remote intrusion, exploitation, and malicious activity. Focused on Fedora Linux but detailing concepts and techniques valid for all Linux systems, the Fedora Security Guide details the planning and the tools involved in creating a secured computing environment for the data center, workplace, and home. With proper administrative knowledge, vigilance, and tools, systems running Linux can be both fully functional and secured from most common intrusion and exploit methods.</content>
- <link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora_Docu…">
+ <link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora--Sec…">
<dc:format>application/epub+zip</dc:format>
</link>
<!--link type="application/atom+xml;type=entry" href="" rel="alternate" title="Full entry"/-->
diff --git a/public_html/bs-BA/opds-Fedora_Contributor_Documentation.xml b/public_html/bs-BA/opds-Fedora_Contributor_Documentation.xml
index a2067ca..13ef255 100644
--- a/public_html/bs-BA/opds-Fedora_Contributor_Documentation.xml
+++ b/public_html/bs-BA/opds-Fedora_Contributor_Documentation.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/bs-BA/opds-Fedora_Contributor_Documentation.x…</id>
<title>Fedora Contributor Documentation</title>
<subtitle>Fedora Contributor Documentation</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/bs-BA/opds-Fedora_Core.xml b/public_html/bs-BA/opds-Fedora_Core.xml
index 33d4032..d1a23c2 100644
--- a/public_html/bs-BA/opds-Fedora_Core.xml
+++ b/public_html/bs-BA/opds-Fedora_Core.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/bs-BA/opds-Fedora_Core.xml</id>
<title>Fedora Core</title>
<subtitle>Fedora Core</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/bs-BA/opds-Fedora_Draft_Documentation.xml b/public_html/bs-BA/opds-Fedora_Draft_Documentation.xml
index 6cd722c..d783856 100644
--- a/public_html/bs-BA/opds-Fedora_Draft_Documentation.xml
+++ b/public_html/bs-BA/opds-Fedora_Draft_Documentation.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/bs-BA/opds-Fedora_Draft_Documentation.xml</id>
<title>Fedora Draft Documentation</title>
<subtitle>Fedora Draft Documentation</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<!--author>
<name></name>
<uri></uri>
@@ -171,13 +171,12 @@
<name></name>
<uri></uri>
</author-->
- <updated>2012-04-21</updated>
+ <updated>2012-07-30</updated>
<dc:language>bs-BA</dc:language>
<category label="" scheme="http://lexcycle.com/stanza/header" term="free"/>
<!--dc:issued></dc:issued-->
- <summary>short descriptor
-</summary>
- <content type="text">A short overview and summary of the book's subject and purpose, traditionally no more than one paragraph long. Note: the abstract will appear in the front matter of your book and will also be placed in the #description field of the book's RPM spec file.</content>
+ <summary></summary>
+ <content type="text">This book is a guide for using the RPM Package Manager. It is a work in progress to update Eric Foster-Johnson's original work.</content>
<link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/epub/RPM…">
<dc:format>application/epub+zip</dc:format>
</link>
diff --git a/public_html/bs-BA/opds.xml b/public_html/bs-BA/opds.xml
index e5324d8..50b7b59 100644
--- a/public_html/bs-BA/opds.xml
+++ b/public_html/bs-BA/opds.xml
@@ -6,7 +6,7 @@
<link rel="http://opds-spec.org/crawlable" type="application/atom+xml" href="http://bookserver.archive.org/catalog/crawlable" title="Crawlable feed"/>
<id>http://docs.fedoraproject.org/bs-BA/opds.xml</id>
<title>Product List</title>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
@@ -15,7 +15,7 @@
<entry>
<title>Community Services Infrastructure</title>
<id>http://docs.fedoraproject.org/bs-BA/Community_Services_Infrastructure/opds-…</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<dc:language>bs-BA</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Community_Services_Infrastructure.xml"/>
@@ -23,7 +23,7 @@
<entry>
<title>Fedora</title>
<id>http://docs.fedoraproject.org/bs-BA/Fedora/opds-Fedora.xml</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<dc:language>bs-BA</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora.xml"/>
@@ -31,7 +31,7 @@
<entry>
<title>Fedora Contributor Documentation</title>
<id>http://docs.fedoraproject.org/bs-BA/Fedora_Contributor_Documentation/opds-F…</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<dc:language>bs-BA</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Contributor_Documentation.xml"/>
@@ -39,7 +39,7 @@
<entry>
<title>Fedora Core</title>
<id>http://docs.fedoraproject.org/bs-BA/Fedora_Core/opds-Fedora_Core.xml</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<dc:language>bs-BA</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Core.xml"/>
@@ -47,7 +47,7 @@
<entry>
<title>Fedora Draft Documentation</title>
<id>http://docs.fedoraproject.org/bs-BA/Fedora_Draft_Documentation/opds-Fedora_…</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:13</updated>
<dc:language>bs-BA</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Draft_Documentation.xml"/>
diff --git a/public_html/bs-BA/toc.html b/public_html/bs-BA/toc.html
index f1b2a34..e28fac6 100644
--- a/public_html/bs-BA/toc.html
+++ b/public_html/bs-BA/toc.html
@@ -19,7 +19,14 @@
<a style="background-image:url(images/web_logo.png)" href="index.html" onclick="window.top.location='index.html'" ><span>Welcome</span></a>
</h1>
<div class="tocnavwrap">
- <p/>
+ <form target="_top" method="get" action="http://www.google.com/search">
+ <div class="search">
+ <input class="searchtxt" type="text" name="q" value="" />
+ <input class="searchsub" type="submit" value="Search" />
+ <input class="searchchk" type="hidden" name="sitesearch" value="http://docs.fedoraproject.org" />
+ </div>
+ </form>
+
<div class="lang">
<div class="reset">
<a href="#" title="collapse document navigation" onclick="clearCookie();">collapse all</a>
@@ -119,7 +126,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Fedora_Live_Images/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Fedora_Live_Images/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Fedora_Live_Images/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Fedora_Live_Images/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-16-Fedora_Live_Images-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-16-Fedora_Live_Images-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.FreeIPA_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.17.FreeIPA_Guide.types');">
@@ -146,7 +153,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Installation_Quick_Start_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Installation_Quick_Start_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Installation_Quick_Start_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Installation_Quick_Start_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora_Draft_Documentation-0.1-Installation_Quick_Start_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora_Draft_Documentation-0.1-Installation_Quick_Start_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.Power_Management_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.17.Power_Management_Guide.types');">
@@ -155,7 +162,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Power_Management_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Power_Management_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Power_Management_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Power_Management_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora--Power_Management_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora--Power_Management_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.Release_Notes' class="book collapsed" onclick="toggle(event, 'Fedora.17.Release_Notes.types');">
@@ -337,7 +344,7 @@
<a class="type" href="../en-US/./Fedora/15/epub/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/15/html/Burning_ISO_images_to_disc/index.html" onclick="window.top.location='../en-US/./Fedora/15/html/Burning_ISO_images_to_disc/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/15/html-single/Burning_ISO_images_to_disc/index.html" onclick="window.top.location='../en-US/./Fedora/15/html-single/Burning_ISO_images_to_disc/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15.0-Burning_ISO_images_to_disc-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15.0-Burning_ISO_images_to_disc-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.15.Deployment_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.15.Deployment_Guide.types');">
@@ -887,7 +894,7 @@
<a class="type" href="../en-US/./Fedora/11/epub/Security_Guide/Fedora-11-Security_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/11/html/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/11/html/Security_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/11/html-single/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/11/html-single/Security_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/11/pdf/Security_Guide/Fedora-11-Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/11/pdf/Security_Guide/Fedora-11-Security_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/11/pdf/Security_Guide/fedora-11-Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/11/pdf/Security_Guide/fedora-11-Security_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
</div>
@@ -1007,7 +1014,7 @@
<a class="type" href="../en-US/./Fedora/8/epub/Installation_Guide/Fedora-8-Installation_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/8/html/Installation_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/8/html/Installation_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/8/html-single/Installation_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/8/html-single/Installation_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-9-Installation_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-9-Installation_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-8-Installation_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-8-Installation_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.8.Making_Fedora_Discs' class="book collapsed" onclick="toggle(event, 'Fedora.8.Making_Fedora_Discs.types');">
@@ -1087,7 +1094,7 @@
<div id='Fedora..Security_Guide' class="book collapsed" onclick="toggle(event, 'Fedora..Security_Guide.types');">
<a class="type" href="../en-US/Fedora//html/Security_Guide/index.html" onclick="window.top.location='../en-US/Fedora//html/Security_Guide/index.html'"><span class="book">Security Guide</span></a>
<div id='Fedora..Security_Guide.types' class="types hidden" onclick="work=0;">
- <a class="type" href="../en-US/./Fedora//epub/Security_Guide/Fedora_Documentation--Security_Guide-en-US.epub" >epub</a>
+ <a class="type" href="../en-US/./Fedora//epub/Security_Guide/Fedora--Security_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora//html/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora//html/Security_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora//html-single/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora//html-single/Security_Guide/index.html';return false;">html-single</a>
<a class="type" href="../en-US/./Fedora//pdf/Security_Guide/Fedora--Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora//pdf/Security_Guide/Fedora--Security_Guide-en-US.pdf';return false;">pdf</a>
@@ -1112,7 +1119,7 @@
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/epub/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html/Fedora_Elections_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html/Fedora_Elections_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html-single/Fedora_Elections_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html-single/Fedora_Elections_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation--Fedora_Elections_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation--Fedora_Elections_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora_Contributor_Documentation.1.Software_Collections_Guide' class="book collapsed" onclick="toggle(event, 'Fedora_Contributor_Documentation.1.Software_Collections_Guide.types');">
@@ -1139,7 +1146,7 @@
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/epub/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html/Users_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html/Users_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html-single/Users_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html-single/Users_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1.6-Users_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1.6-Users_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
</div>
diff --git a/public_html/ca-ES/opds-Community_Services_Infrastructure.xml b/public_html/ca-ES/opds-Community_Services_Infrastructure.xml
index ec45ae8..8374715 100644
--- a/public_html/ca-ES/opds-Community_Services_Infrastructure.xml
+++ b/public_html/ca-ES/opds-Community_Services_Infrastructure.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/ca-ES/opds-Community_Services_Infrastructure.…</id>
<title>Community Services Infrastructure</title>
<subtitle>Community Services Infrastructure</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/ca-ES/opds-Fedora.xml b/public_html/ca-ES/opds-Fedora.xml
index 65d93d9..745a0e2 100644
--- a/public_html/ca-ES/opds-Fedora.xml
+++ b/public_html/ca-ES/opds-Fedora.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/ca-ES/opds-Fedora.xml</id>
<title>Fedora</title>
<subtitle>Fedora</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
@@ -1750,7 +1750,7 @@
</entry>
<entry>
<title>Security Guide</title>
- <id>http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora_Docu…</id>
+ <id>http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora--Sec…</id>
<!--author>
<name></name>
<uri></uri>
@@ -1762,7 +1762,7 @@
<summary>A Guide to Securing Fedora Linux
</summary>
<content type="text">The Fedora Security Guide is designed to assist users of Fedora in learning the processes and practices of securing workstations and servers against local and remote intrusion, exploitation, and malicious activity. Focused on Fedora Linux but detailing concepts and techniques valid for all Linux systems, the Fedora Security Guide details the planning and the tools involved in creating a secured computing environment for the data center, workplace, and home. With proper administrative knowledge, vigilance, and tools, systems running Linux can be both fully functional and secured from most common intrusion and exploit methods.</content>
- <link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora_Docu…">
+ <link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora--Sec…">
<dc:format>application/epub+zip</dc:format>
</link>
<!--link type="application/atom+xml;type=entry" href="" rel="alternate" title="Full entry"/-->
diff --git a/public_html/ca-ES/opds-Fedora_Contributor_Documentation.xml b/public_html/ca-ES/opds-Fedora_Contributor_Documentation.xml
index ac776ef..e05fda7 100644
--- a/public_html/ca-ES/opds-Fedora_Contributor_Documentation.xml
+++ b/public_html/ca-ES/opds-Fedora_Contributor_Documentation.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/ca-ES/opds-Fedora_Contributor_Documentation.x…</id>
<title>Fedora Contributor Documentation</title>
<subtitle>Fedora Contributor Documentation</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/ca-ES/opds-Fedora_Core.xml b/public_html/ca-ES/opds-Fedora_Core.xml
index 543eb9c..1e694f4 100644
--- a/public_html/ca-ES/opds-Fedora_Core.xml
+++ b/public_html/ca-ES/opds-Fedora_Core.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/ca-ES/opds-Fedora_Core.xml</id>
<title>Fedora Core</title>
<subtitle>Fedora Core</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/ca-ES/opds-Fedora_Draft_Documentation.xml b/public_html/ca-ES/opds-Fedora_Draft_Documentation.xml
index ee91419..a5f9681 100644
--- a/public_html/ca-ES/opds-Fedora_Draft_Documentation.xml
+++ b/public_html/ca-ES/opds-Fedora_Draft_Documentation.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/ca-ES/opds-Fedora_Draft_Documentation.xml</id>
<title>Fedora Draft Documentation</title>
<subtitle>Fedora Draft Documentation</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
@@ -171,13 +171,12 @@
<name></name>
<uri></uri>
</author-->
- <updated>2012-04-21</updated>
+ <updated>2012-07-30</updated>
<dc:language>ca-ES</dc:language>
<category label="" scheme="http://lexcycle.com/stanza/header" term="free"/>
<!--dc:issued></dc:issued-->
- <summary>short descriptor
-</summary>
- <content type="text">A short overview and summary of the book's subject and purpose, traditionally no more than one paragraph long. Note: the abstract will appear in the front matter of your book and will also be placed in the #description field of the book's RPM spec file.</content>
+ <summary></summary>
+ <content type="text">This book is a guide for using the RPM Package Manager. It is a work in progress to update Eric Foster-Johnson's original work.</content>
<link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/epub/RPM…">
<dc:format>application/epub+zip</dc:format>
</link>
diff --git a/public_html/ca-ES/opds.xml b/public_html/ca-ES/opds.xml
index 7eb153d..8cb59b2 100644
--- a/public_html/ca-ES/opds.xml
+++ b/public_html/ca-ES/opds.xml
@@ -6,7 +6,7 @@
<link rel="http://opds-spec.org/crawlable" type="application/atom+xml" href="http://bookserver.archive.org/catalog/crawlable" title="Crawlable feed"/>
<id>http://docs.fedoraproject.org/ca-ES/opds.xml</id>
<title>Product List</title>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
@@ -15,7 +15,7 @@
<entry>
<title>Community Services Infrastructure</title>
<id>http://docs.fedoraproject.org/ca-ES/Community_Services_Infrastructure/opds-…</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:14</updated>
<dc:language>ca-ES</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Community_Services_Infrastructure.xml"/>
@@ -23,7 +23,7 @@
<entry>
<title>Fedora</title>
<id>http://docs.fedoraproject.org/ca-ES/Fedora/opds-Fedora.xml</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:14</updated>
<dc:language>ca-ES</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora.xml"/>
@@ -31,7 +31,7 @@
<entry>
<title>Fedora Contributor Documentation</title>
<id>http://docs.fedoraproject.org/ca-ES/Fedora_Contributor_Documentation/opds-F…</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:14</updated>
<dc:language>ca-ES</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Contributor_Documentation.xml"/>
@@ -39,7 +39,7 @@
<entry>
<title>Fedora Core</title>
<id>http://docs.fedoraproject.org/ca-ES/Fedora_Core/opds-Fedora_Core.xml</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:14</updated>
<dc:language>ca-ES</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Core.xml"/>
@@ -47,7 +47,7 @@
<entry>
<title>Fedora Draft Documentation</title>
<id>http://docs.fedoraproject.org/ca-ES/Fedora_Draft_Documentation/opds-Fedora_…</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:14</updated>
<dc:language>ca-ES</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Draft_Documentation.xml"/>
diff --git a/public_html/ca-ES/toc.html b/public_html/ca-ES/toc.html
index d4b0ad6..42a0307 100644
--- a/public_html/ca-ES/toc.html
+++ b/public_html/ca-ES/toc.html
@@ -19,7 +19,14 @@
<a style="background-image:url(images/web_logo.png)" href="index.html" onclick="window.top.location='index.html'" ><span>Welcome</span></a>
</h1>
<div class="tocnavwrap">
- <p/>
+ <form target="_top" method="get" action="http://www.google.com/search">
+ <div class="search">
+ <input class="searchtxt" type="text" name="q" value="" />
+ <input class="searchsub" type="submit" value="Search" />
+ <input class="searchchk" type="hidden" name="sitesearch" value="http://docs.fedoraproject.org" />
+ </div>
+ </form>
+
<div class="lang">
<div class="reset">
<a href="#" title="collapse document navigation" onclick="clearCookie();">collapse all</a>
@@ -119,7 +126,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Fedora_Live_Images/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Fedora_Live_Images/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Fedora_Live_Images/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Fedora_Live_Images/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-16-Fedora_Live_Images-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-16-Fedora_Live_Images-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.FreeIPA_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.17.FreeIPA_Guide.types');">
@@ -146,7 +153,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Installation_Quick_Start_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Installation_Quick_Start_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Installation_Quick_Start_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Installation_Quick_Start_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora_Draft_Documentation-0.1-Installation_Quick_Start_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora_Draft_Documentation-0.1-Installation_Quick_Start_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.Power_Management_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.17.Power_Management_Guide.types');">
@@ -155,7 +162,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Power_Management_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Power_Management_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Power_Management_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Power_Management_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora--Power_Management_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora--Power_Management_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.Release_Notes' class="book collapsed" onclick="toggle(event, 'Fedora.17.Release_Notes.types');">
@@ -878,7 +885,7 @@
<a class="type" href="../en-US/./Fedora/11/epub/Security_Guide/Fedora-11-Security_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/11/html/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/11/html/Security_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/11/html-single/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/11/html-single/Security_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/11/pdf/Security_Guide/Fedora-11-Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/11/pdf/Security_Guide/Fedora-11-Security_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/11/pdf/Security_Guide/fedora-11-Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/11/pdf/Security_Guide/fedora-11-Security_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.11.User_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.11.User_Guide.types');">
@@ -1007,7 +1014,7 @@
<a class="type" href="../en-US/./Fedora/8/epub/Installation_Guide/Fedora-8-Installation_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/8/html/Installation_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/8/html/Installation_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/8/html-single/Installation_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/8/html-single/Installation_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-9-Installation_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-9-Installation_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-8-Installation_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-8-Installation_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.8.Making_Fedora_Discs' class="book collapsed" onclick="toggle(event, 'Fedora.8.Making_Fedora_Discs.types');">
@@ -1087,7 +1094,7 @@
<div id='Fedora..Security_Guide' class="book collapsed" onclick="toggle(event, 'Fedora..Security_Guide.types');">
<a class="type" href="../en-US/Fedora//html/Security_Guide/index.html" onclick="window.top.location='../en-US/Fedora//html/Security_Guide/index.html'"><span class="book">Security Guide</span></a>
<div id='Fedora..Security_Guide.types' class="types hidden" onclick="work=0;">
- <a class="type" href="../en-US/./Fedora//epub/Security_Guide/Fedora_Documentation--Security_Guide-en-US.epub" >epub</a>
+ <a class="type" href="../en-US/./Fedora//epub/Security_Guide/Fedora--Security_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora//html/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora//html/Security_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora//html-single/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora//html-single/Security_Guide/index.html';return false;">html-single</a>
<a class="type" href="../en-US/./Fedora//pdf/Security_Guide/Fedora--Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora//pdf/Security_Guide/Fedora--Security_Guide-en-US.pdf';return false;">pdf</a>
@@ -1112,7 +1119,7 @@
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/epub/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html/Fedora_Elections_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html/Fedora_Elections_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html-single/Fedora_Elections_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html-single/Fedora_Elections_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation--Fedora_Elections_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation--Fedora_Elections_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora_Contributor_Documentation.1.Software_Collections_Guide' class="book collapsed" onclick="toggle(event, 'Fedora_Contributor_Documentation.1.Software_Collections_Guide.types');">
@@ -1139,7 +1146,7 @@
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/epub/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html/Users_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html/Users_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html-single/Users_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html-single/Users_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1.6-Users_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1.6-Users_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
</div>
diff --git a/public_html/cs-CZ/opds-Community_Services_Infrastructure.xml b/public_html/cs-CZ/opds-Community_Services_Infrastructure.xml
index 43af127..cd76d3f 100644
--- a/public_html/cs-CZ/opds-Community_Services_Infrastructure.xml
+++ b/public_html/cs-CZ/opds-Community_Services_Infrastructure.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/cs-CZ/opds-Community_Services_Infrastructure.…</id>
<title>Community Services Infrastructure</title>
<subtitle>Community Services Infrastructure</subtitle>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/cs-CZ/opds-Fedora.xml b/public_html/cs-CZ/opds-Fedora.xml
index 8729cfc..ce9054b 100644
--- a/public_html/cs-CZ/opds-Fedora.xml
+++ b/public_html/cs-CZ/opds-Fedora.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/cs-CZ/opds-Fedora.xml</id>
<title>Fedora</title>
<subtitle>Fedora</subtitle>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
@@ -1750,7 +1750,7 @@
</entry>
<entry>
<title>Security Guide</title>
- <id>http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora_Docu…</id>
+ <id>http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora--Sec…</id>
<!--author>
<name></name>
<uri></uri>
@@ -1762,7 +1762,7 @@
<summary>A Guide to Securing Fedora Linux
</summary>
<content type="text">The Fedora Security Guide is designed to assist users of Fedora in learning the processes and practices of securing workstations and servers against local and remote intrusion, exploitation, and malicious activity. Focused on Fedora Linux but detailing concepts and techniques valid for all Linux systems, the Fedora Security Guide details the planning and the tools involved in creating a secured computing environment for the data center, workplace, and home. With proper administrative knowledge, vigilance, and tools, systems running Linux can be both fully functional and secured from most common intrusion and exploit methods.</content>
- <link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora_Docu…">
+ <link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora--Sec…">
<dc:format>application/epub+zip</dc:format>
</link>
<!--link type="application/atom+xml;type=entry" href="" rel="alternate" title="Full entry"/-->
diff --git a/public_html/cs-CZ/opds-Fedora_Contributor_Documentation.xml b/public_html/cs-CZ/opds-Fedora_Contributor_Documentation.xml
index e06b05d..1000983 100644
--- a/public_html/cs-CZ/opds-Fedora_Contributor_Documentation.xml
+++ b/public_html/cs-CZ/opds-Fedora_Contributor_Documentation.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/cs-CZ/opds-Fedora_Contributor_Documentation.x…</id>
<title>Fedora Contributor Documentation</title>
<subtitle>Fedora Contributor Documentation</subtitle>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/cs-CZ/opds-Fedora_Core.xml b/public_html/cs-CZ/opds-Fedora_Core.xml
index 6fbd119..9d836d5 100644
--- a/public_html/cs-CZ/opds-Fedora_Core.xml
+++ b/public_html/cs-CZ/opds-Fedora_Core.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/cs-CZ/opds-Fedora_Core.xml</id>
<title>Fedora Core</title>
<subtitle>Fedora Core</subtitle>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/cs-CZ/opds-Fedora_Draft_Documentation.xml b/public_html/cs-CZ/opds-Fedora_Draft_Documentation.xml
index bb55e5a..94c9cf8 100644
--- a/public_html/cs-CZ/opds-Fedora_Draft_Documentation.xml
+++ b/public_html/cs-CZ/opds-Fedora_Draft_Documentation.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/cs-CZ/opds-Fedora_Draft_Documentation.xml</id>
<title>Fedora Draft Documentation</title>
<subtitle>Fedora Draft Documentation</subtitle>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
@@ -171,13 +171,12 @@
<name></name>
<uri></uri>
</author-->
- <updated>2012-04-21</updated>
+ <updated>2012-07-30</updated>
<dc:language>cs-CZ</dc:language>
<category label="" scheme="http://lexcycle.com/stanza/header" term="free"/>
<!--dc:issued></dc:issued-->
- <summary>short descriptor
-</summary>
- <content type="text">A short overview and summary of the book's subject and purpose, traditionally no more than one paragraph long. Note: the abstract will appear in the front matter of your book and will also be placed in the #description field of the book's RPM spec file.</content>
+ <summary></summary>
+ <content type="text">This book is a guide for using the RPM Package Manager. It is a work in progress to update Eric Foster-Johnson's original work.</content>
<link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/epub/RPM…">
<dc:format>application/epub+zip</dc:format>
</link>
diff --git a/public_html/cs-CZ/opds.xml b/public_html/cs-CZ/opds.xml
index 7df629e..9cf267c 100644
--- a/public_html/cs-CZ/opds.xml
+++ b/public_html/cs-CZ/opds.xml
@@ -6,7 +6,7 @@
<link rel="http://opds-spec.org/crawlable" type="application/atom+xml" href="http://bookserver.archive.org/catalog/crawlable" title="Crawlable feed"/>
<id>http://docs.fedoraproject.org/cs-CZ/opds.xml</id>
<title>Product List</title>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
@@ -15,7 +15,7 @@
<entry>
<title>Community Services Infrastructure</title>
<id>http://docs.fedoraproject.org/cs-CZ/Community_Services_Infrastructure/opds-…</id>
- <updated>2012-07-25T02:52:09</updated>
+ <updated>2012-07-30T18:36:14</updated>
<dc:language>cs-CZ</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Community_Services_Infrastructure.xml"/>
@@ -23,7 +23,7 @@
<entry>
<title>Fedora</title>
<id>http://docs.fedoraproject.org/cs-CZ/Fedora/opds-Fedora.xml</id>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<dc:language>cs-CZ</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora.xml"/>
@@ -31,7 +31,7 @@
<entry>
<title>Fedora Contributor Documentation</title>
<id>http://docs.fedoraproject.org/cs-CZ/Fedora_Contributor_Documentation/opds-F…</id>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<dc:language>cs-CZ</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Contributor_Documentation.xml"/>
@@ -39,7 +39,7 @@
<entry>
<title>Fedora Core</title>
<id>http://docs.fedoraproject.org/cs-CZ/Fedora_Core/opds-Fedora_Core.xml</id>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<dc:language>cs-CZ</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Core.xml"/>
@@ -47,7 +47,7 @@
<entry>
<title>Fedora Draft Documentation</title>
<id>http://docs.fedoraproject.org/cs-CZ/Fedora_Draft_Documentation/opds-Fedora_…</id>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<dc:language>cs-CZ</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Draft_Documentation.xml"/>
diff --git a/public_html/cs-CZ/toc.html b/public_html/cs-CZ/toc.html
index 812c9b5..0ce27f1 100644
--- a/public_html/cs-CZ/toc.html
+++ b/public_html/cs-CZ/toc.html
@@ -19,7 +19,14 @@
<a style="background-image:url(images/web_logo.png)" href="index.html" onclick="window.top.location='index.html'" ><span>Welcome</span></a>
</h1>
<div class="tocnavwrap">
- <p/>
+ <form target="_top" method="get" action="http://www.google.com/search">
+ <div class="search">
+ <input class="searchtxt" type="text" name="q" value="" />
+ <input class="searchsub" type="submit" value="Search" />
+ <input class="searchchk" type="hidden" name="sitesearch" value="http://docs.fedoraproject.org" />
+ </div>
+ </form>
+
<div class="lang">
<div class="reset">
<a href="#" title="collapse document navigation" onclick="clearCookie();">collapse all</a>
@@ -119,7 +126,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Fedora_Live_Images/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Fedora_Live_Images/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Fedora_Live_Images/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Fedora_Live_Images/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-16-Fedora_Live_Images-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-16-Fedora_Live_Images-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.FreeIPA_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.17.FreeIPA_Guide.types');">
@@ -146,7 +153,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Installation_Quick_Start_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Installation_Quick_Start_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Installation_Quick_Start_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Installation_Quick_Start_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora_Draft_Documentation-0.1-Installation_Quick_Start_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora_Draft_Documentation-0.1-Installation_Quick_Start_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.Power_Management_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.17.Power_Management_Guide.types');">
@@ -155,7 +162,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Power_Management_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Power_Management_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Power_Management_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Power_Management_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora--Power_Management_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora--Power_Management_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.Release_Notes' class="book collapsed" onclick="toggle(event, 'Fedora.17.Release_Notes.types');">
@@ -334,7 +341,7 @@
<a class="type" href="./Fedora/15/epub/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-cs-CZ.epub" >epub</a>
<a class="type" href="./Fedora/15/html/Burning_ISO_images_to_disc/index.html" onclick="window.top.location='./Fedora/15/html/Burning_ISO_images_to_disc/index.html';return false;">html</a>
<a class="type" href="./Fedora/15/html-single/Burning_ISO_images_to_disc/index.html" onclick="window.top.location='./Fedora/15/html-single/Burning_ISO_images_to_disc/index.html';return false;">html-single</a>
- <a class="type" href="./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-cs-CZ.pdf" onclick="window.top.location='./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-cs-CZ.pdf';return false;">pdf</a>
+ <a class="type" href="./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15.0-Burning_ISO_images_to_disc-cs-CZ.pdf" onclick="window.top.location='./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15.0-Burning_ISO_images_to_disc-cs-CZ.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.15.Fedora_Live_Images' class="book collapsed">
@@ -878,7 +885,7 @@
<a class="type" href="../en-US/./Fedora/11/epub/Security_Guide/Fedora-11-Security_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/11/html/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/11/html/Security_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/11/html-single/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/11/html-single/Security_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/11/pdf/Security_Guide/Fedora-11-Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/11/pdf/Security_Guide/Fedora-11-Security_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/11/pdf/Security_Guide/fedora-11-Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/11/pdf/Security_Guide/fedora-11-Security_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.11.User_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.11.User_Guide.types');">
@@ -1007,7 +1014,7 @@
<a class="type" href="../en-US/./Fedora/8/epub/Installation_Guide/Fedora-8-Installation_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/8/html/Installation_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/8/html/Installation_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/8/html-single/Installation_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/8/html-single/Installation_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-9-Installation_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-9-Installation_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-8-Installation_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-8-Installation_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.8.Making_Fedora_Discs' class="book collapsed" onclick="toggle(event, 'Fedora.8.Making_Fedora_Discs.types');">
@@ -1087,7 +1094,7 @@
<div id='Fedora..Security_Guide' class="book collapsed" onclick="toggle(event, 'Fedora..Security_Guide.types');">
<a class="type" href="../en-US/Fedora//html/Security_Guide/index.html" onclick="window.top.location='../en-US/Fedora//html/Security_Guide/index.html'"><span class="book">Security Guide</span></a>
<div id='Fedora..Security_Guide.types' class="types hidden" onclick="work=0;">
- <a class="type" href="../en-US/./Fedora//epub/Security_Guide/Fedora_Documentation--Security_Guide-en-US.epub" >epub</a>
+ <a class="type" href="../en-US/./Fedora//epub/Security_Guide/Fedora--Security_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora//html/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora//html/Security_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora//html-single/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora//html-single/Security_Guide/index.html';return false;">html-single</a>
<a class="type" href="../en-US/./Fedora//pdf/Security_Guide/Fedora--Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora//pdf/Security_Guide/Fedora--Security_Guide-en-US.pdf';return false;">pdf</a>
@@ -1112,7 +1119,7 @@
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/epub/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html/Fedora_Elections_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html/Fedora_Elections_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html-single/Fedora_Elections_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html-single/Fedora_Elections_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation--Fedora_Elections_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation--Fedora_Elections_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora_Contributor_Documentation.1.Software_Collections_Guide' class="book collapsed" onclick="toggle(event, 'Fedora_Contributor_Documentation.1.Software_Collections_Guide.types');">
@@ -1139,7 +1146,7 @@
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/epub/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html/Users_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html/Users_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html-single/Users_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html-single/Users_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1.6-Users_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1.6-Users_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
</div>
diff --git a/public_html/da-DK/opds-Community_Services_Infrastructure.xml b/public_html/da-DK/opds-Community_Services_Infrastructure.xml
index 39f9d88..c08ae17 100644
--- a/public_html/da-DK/opds-Community_Services_Infrastructure.xml
+++ b/public_html/da-DK/opds-Community_Services_Infrastructure.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/da-DK/opds-Community_Services_Infrastructure.…</id>
<title>Community Services Infrastructure</title>
<subtitle>Community Services Infrastructure</subtitle>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/da-DK/opds-Fedora.xml b/public_html/da-DK/opds-Fedora.xml
index ee86d86..1cd1d0e 100644
--- a/public_html/da-DK/opds-Fedora.xml
+++ b/public_html/da-DK/opds-Fedora.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/da-DK/opds-Fedora.xml</id>
<title>Fedora</title>
<subtitle>Fedora</subtitle>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
@@ -1750,7 +1750,7 @@
</entry>
<entry>
<title>Security Guide</title>
- <id>http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora_Docu…</id>
+ <id>http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora--Sec…</id>
<!--author>
<name></name>
<uri></uri>
@@ -1762,7 +1762,7 @@
<summary>A Guide to Securing Fedora Linux
</summary>
<content type="text">The Fedora Security Guide is designed to assist users of Fedora in learning the processes and practices of securing workstations and servers against local and remote intrusion, exploitation, and malicious activity. Focused on Fedora Linux but detailing concepts and techniques valid for all Linux systems, the Fedora Security Guide details the planning and the tools involved in creating a secured computing environment for the data center, workplace, and home. With proper administrative knowledge, vigilance, and tools, systems running Linux can be both fully functional and secured from most common intrusion and exploit methods.</content>
- <link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora_Docu…">
+ <link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora--Sec…">
<dc:format>application/epub+zip</dc:format>
</link>
<!--link type="application/atom+xml;type=entry" href="" rel="alternate" title="Full entry"/-->
diff --git a/public_html/da-DK/opds-Fedora_Contributor_Documentation.xml b/public_html/da-DK/opds-Fedora_Contributor_Documentation.xml
index fce5501..17d4728 100644
--- a/public_html/da-DK/opds-Fedora_Contributor_Documentation.xml
+++ b/public_html/da-DK/opds-Fedora_Contributor_Documentation.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/da-DK/opds-Fedora_Contributor_Documentation.x…</id>
<title>Fedora Contributor Documentation</title>
<subtitle>Fedora Contributor Documentation</subtitle>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/da-DK/opds-Fedora_Core.xml b/public_html/da-DK/opds-Fedora_Core.xml
index 0123a76..6c85385 100644
--- a/public_html/da-DK/opds-Fedora_Core.xml
+++ b/public_html/da-DK/opds-Fedora_Core.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/da-DK/opds-Fedora_Core.xml</id>
<title>Fedora Core</title>
<subtitle>Fedora Core</subtitle>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/da-DK/opds-Fedora_Draft_Documentation.xml b/public_html/da-DK/opds-Fedora_Draft_Documentation.xml
index 1a418e5..1e080f3 100644
--- a/public_html/da-DK/opds-Fedora_Draft_Documentation.xml
+++ b/public_html/da-DK/opds-Fedora_Draft_Documentation.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/da-DK/opds-Fedora_Draft_Documentation.xml</id>
<title>Fedora Draft Documentation</title>
<subtitle>Fedora Draft Documentation</subtitle>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
@@ -171,13 +171,12 @@
<name></name>
<uri></uri>
</author-->
- <updated>2012-04-21</updated>
+ <updated>2012-07-30</updated>
<dc:language>da-DK</dc:language>
<category label="" scheme="http://lexcycle.com/stanza/header" term="free"/>
<!--dc:issued></dc:issued-->
- <summary>short descriptor
-</summary>
- <content type="text">A short overview and summary of the book's subject and purpose, traditionally no more than one paragraph long. Note: the abstract will appear in the front matter of your book and will also be placed in the #description field of the book's RPM spec file.</content>
+ <summary></summary>
+ <content type="text">This book is a guide for using the RPM Package Manager. It is a work in progress to update Eric Foster-Johnson's original work.</content>
<link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/epub/RPM…">
<dc:format>application/epub+zip</dc:format>
</link>
diff --git a/public_html/da-DK/opds.xml b/public_html/da-DK/opds.xml
index cab3c43..4a693dd 100644
--- a/public_html/da-DK/opds.xml
+++ b/public_html/da-DK/opds.xml
@@ -6,7 +6,7 @@
<link rel="http://opds-spec.org/crawlable" type="application/atom+xml" href="http://bookserver.archive.org/catalog/crawlable" title="Crawlable feed"/>
<id>http://docs.fedoraproject.org/da-DK/opds.xml</id>
<title>Product List</title>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
@@ -15,7 +15,7 @@
<entry>
<title>Community Services Infrastructure</title>
<id>http://docs.fedoraproject.org/da-DK/Community_Services_Infrastructure/opds-…</id>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<dc:language>da-DK</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Community_Services_Infrastructure.xml"/>
@@ -23,7 +23,7 @@
<entry>
<title>Fedora</title>
<id>http://docs.fedoraproject.org/da-DK/Fedora/opds-Fedora.xml</id>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<dc:language>da-DK</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora.xml"/>
@@ -31,7 +31,7 @@
<entry>
<title>Fedora Contributor Documentation</title>
<id>http://docs.fedoraproject.org/da-DK/Fedora_Contributor_Documentation/opds-F…</id>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<dc:language>da-DK</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Contributor_Documentation.xml"/>
@@ -39,7 +39,7 @@
<entry>
<title>Fedora Core</title>
<id>http://docs.fedoraproject.org/da-DK/Fedora_Core/opds-Fedora_Core.xml</id>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<dc:language>da-DK</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Core.xml"/>
@@ -47,7 +47,7 @@
<entry>
<title>Fedora Draft Documentation</title>
<id>http://docs.fedoraproject.org/da-DK/Fedora_Draft_Documentation/opds-Fedora_…</id>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<dc:language>da-DK</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Draft_Documentation.xml"/>
diff --git a/public_html/da-DK/toc.html b/public_html/da-DK/toc.html
index 46f0b4b..66d7846 100644
--- a/public_html/da-DK/toc.html
+++ b/public_html/da-DK/toc.html
@@ -19,7 +19,14 @@
<a style="background-image:url(images/web_logo.png)" href="index.html" onclick="window.top.location='index.html'" ><span>Welcome</span></a>
</h1>
<div class="tocnavwrap">
- <p/>
+ <form target="_top" method="get" action="http://www.google.com/search">
+ <div class="search">
+ <input class="searchtxt" type="text" name="q" value="" />
+ <input class="searchsub" type="submit" value="Search" />
+ <input class="searchchk" type="hidden" name="sitesearch" value="http://docs.fedoraproject.org" />
+ </div>
+ </form>
+
<div class="lang">
<div class="reset">
<a href="#" title="collapse document navigation" onclick="clearCookie();">collapse all</a>
@@ -119,7 +126,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Fedora_Live_Images/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Fedora_Live_Images/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Fedora_Live_Images/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Fedora_Live_Images/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-16-Fedora_Live_Images-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-16-Fedora_Live_Images-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.FreeIPA_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.17.FreeIPA_Guide.types');">
@@ -146,7 +153,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Installation_Quick_Start_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Installation_Quick_Start_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Installation_Quick_Start_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Installation_Quick_Start_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora_Draft_Documentation-0.1-Installation_Quick_Start_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora_Draft_Documentation-0.1-Installation_Quick_Start_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.Power_Management_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.17.Power_Management_Guide.types');">
@@ -155,7 +162,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Power_Management_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Power_Management_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Power_Management_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Power_Management_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora--Power_Management_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora--Power_Management_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.Release_Notes' class="book collapsed" onclick="toggle(event, 'Fedora.17.Release_Notes.types');">
@@ -337,7 +344,7 @@
<a class="type" href="../en-US/./Fedora/15/epub/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/15/html/Burning_ISO_images_to_disc/index.html" onclick="window.top.location='../en-US/./Fedora/15/html/Burning_ISO_images_to_disc/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/15/html-single/Burning_ISO_images_to_disc/index.html" onclick="window.top.location='../en-US/./Fedora/15/html-single/Burning_ISO_images_to_disc/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15.0-Burning_ISO_images_to_disc-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15.0-Burning_ISO_images_to_disc-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.15.Deployment_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.15.Deployment_Guide.types');">
@@ -878,7 +885,7 @@
<a class="type" href="../en-US/./Fedora/11/epub/Security_Guide/Fedora-11-Security_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/11/html/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/11/html/Security_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/11/html-single/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/11/html-single/Security_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/11/pdf/Security_Guide/Fedora-11-Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/11/pdf/Security_Guide/Fedora-11-Security_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/11/pdf/Security_Guide/fedora-11-Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/11/pdf/Security_Guide/fedora-11-Security_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.11.User_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.11.User_Guide.types');">
@@ -1007,7 +1014,7 @@
<a class="type" href="../en-US/./Fedora/8/epub/Installation_Guide/Fedora-8-Installation_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/8/html/Installation_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/8/html/Installation_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/8/html-single/Installation_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/8/html-single/Installation_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-9-Installation_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-9-Installation_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-8-Installation_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-8-Installation_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.8.Making_Fedora_Discs' class="book collapsed" onclick="toggle(event, 'Fedora.8.Making_Fedora_Discs.types');">
@@ -1087,7 +1094,7 @@
<div id='Fedora..Security_Guide' class="book collapsed" onclick="toggle(event, 'Fedora..Security_Guide.types');">
<a class="type" href="../en-US/Fedora//html/Security_Guide/index.html" onclick="window.top.location='../en-US/Fedora//html/Security_Guide/index.html'"><span class="book">Security Guide</span></a>
<div id='Fedora..Security_Guide.types' class="types hidden" onclick="work=0;">
- <a class="type" href="../en-US/./Fedora//epub/Security_Guide/Fedora_Documentation--Security_Guide-en-US.epub" >epub</a>
+ <a class="type" href="../en-US/./Fedora//epub/Security_Guide/Fedora--Security_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora//html/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora//html/Security_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora//html-single/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora//html-single/Security_Guide/index.html';return false;">html-single</a>
<a class="type" href="../en-US/./Fedora//pdf/Security_Guide/Fedora--Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora//pdf/Security_Guide/Fedora--Security_Guide-en-US.pdf';return false;">pdf</a>
@@ -1112,7 +1119,7 @@
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/epub/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html/Fedora_Elections_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html/Fedora_Elections_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html-single/Fedora_Elections_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html-single/Fedora_Elections_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation--Fedora_Elections_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation--Fedora_Elections_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora_Contributor_Documentation.1.Software_Collections_Guide' class="book collapsed" onclick="toggle(event, 'Fedora_Contributor_Documentation.1.Software_Collections_Guide.types');">
@@ -1139,7 +1146,7 @@
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/epub/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html/Users_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html/Users_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html-single/Users_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html-single/Users_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1.6-Users_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1.6-Users_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
</div>
diff --git a/public_html/de-DE/opds-Community_Services_Infrastructure.xml b/public_html/de-DE/opds-Community_Services_Infrastructure.xml
index 6e0ee3f..41e0d4d 100644
--- a/public_html/de-DE/opds-Community_Services_Infrastructure.xml
+++ b/public_html/de-DE/opds-Community_Services_Infrastructure.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/de-DE/opds-Community_Services_Infrastructure.…</id>
<title>Community Services Infrastructure</title>
<subtitle>Community Services Infrastructure</subtitle>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/de-DE/opds-Fedora.xml b/public_html/de-DE/opds-Fedora.xml
index 4f1f459..0bab76a 100644
--- a/public_html/de-DE/opds-Fedora.xml
+++ b/public_html/de-DE/opds-Fedora.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/de-DE/opds-Fedora.xml</id>
<title>Fedora</title>
<subtitle>Fedora</subtitle>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
@@ -1750,7 +1750,7 @@
</entry>
<entry>
<title>Security Guide</title>
- <id>http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora_Docu…</id>
+ <id>http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora--Sec…</id>
<!--author>
<name></name>
<uri></uri>
@@ -1762,7 +1762,7 @@
<summary>A Guide to Securing Fedora Linux
</summary>
<content type="text">The Fedora Security Guide is designed to assist users of Fedora in learning the processes and practices of securing workstations and servers against local and remote intrusion, exploitation, and malicious activity. Focused on Fedora Linux but detailing concepts and techniques valid for all Linux systems, the Fedora Security Guide details the planning and the tools involved in creating a secured computing environment for the data center, workplace, and home. With proper administrative knowledge, vigilance, and tools, systems running Linux can be both fully functional and secured from most common intrusion and exploit methods.</content>
- <link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora_Docu…">
+ <link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora--Sec…">
<dc:format>application/epub+zip</dc:format>
</link>
<!--link type="application/atom+xml;type=entry" href="" rel="alternate" title="Full entry"/-->
diff --git a/public_html/de-DE/opds-Fedora_Contributor_Documentation.xml b/public_html/de-DE/opds-Fedora_Contributor_Documentation.xml
index 1808c39..3a2faaf 100644
--- a/public_html/de-DE/opds-Fedora_Contributor_Documentation.xml
+++ b/public_html/de-DE/opds-Fedora_Contributor_Documentation.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/de-DE/opds-Fedora_Contributor_Documentation.x…</id>
<title>Fedora Contributor Documentation</title>
<subtitle>Fedora Contributor Documentation</subtitle>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/de-DE/opds-Fedora_Core.xml b/public_html/de-DE/opds-Fedora_Core.xml
index 818d4f1..d89b808 100644
--- a/public_html/de-DE/opds-Fedora_Core.xml
+++ b/public_html/de-DE/opds-Fedora_Core.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/de-DE/opds-Fedora_Core.xml</id>
<title>Fedora Core</title>
<subtitle>Fedora Core</subtitle>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/de-DE/opds-Fedora_Draft_Documentation.xml b/public_html/de-DE/opds-Fedora_Draft_Documentation.xml
index 85ba958..68f1b27 100644
--- a/public_html/de-DE/opds-Fedora_Draft_Documentation.xml
+++ b/public_html/de-DE/opds-Fedora_Draft_Documentation.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/de-DE/opds-Fedora_Draft_Documentation.xml</id>
<title>Fedora Draft Documentation</title>
<subtitle>Fedora Draft Documentation</subtitle>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:15</updated>
<!--author>
<name></name>
<uri></uri>
@@ -171,13 +171,12 @@
<name></name>
<uri></uri>
</author-->
- <updated>2012-04-21</updated>
+ <updated>2012-07-30</updated>
<dc:language>de-DE</dc:language>
<category label="" scheme="http://lexcycle.com/stanza/header" term="free"/>
<!--dc:issued></dc:issued-->
- <summary>short descriptor
-</summary>
- <content type="text">A short overview and summary of the book's subject and purpose, traditionally no more than one paragraph long. Note: the abstract will appear in the front matter of your book and will also be placed in the #description field of the book's RPM spec file.</content>
+ <summary></summary>
+ <content type="text">This book is a guide for using the RPM Package Manager. It is a work in progress to update Eric Foster-Johnson's original work.</content>
<link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/epub/RPM…">
<dc:format>application/epub+zip</dc:format>
</link>
diff --git a/public_html/de-DE/opds.xml b/public_html/de-DE/opds.xml
index 303dc93..2260ccd 100644
--- a/public_html/de-DE/opds.xml
+++ b/public_html/de-DE/opds.xml
@@ -6,7 +6,7 @@
<link rel="http://opds-spec.org/crawlable" type="application/atom+xml" href="http://bookserver.archive.org/catalog/crawlable" title="Crawlable feed"/>
<id>http://docs.fedoraproject.org/de-DE/opds.xml</id>
<title>Product List</title>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:15</updated>
<!--author>
<name></name>
<uri></uri>
@@ -15,7 +15,7 @@
<entry>
<title>Community Services Infrastructure</title>
<id>http://docs.fedoraproject.org/de-DE/Community_Services_Infrastructure/opds-…</id>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<dc:language>de-DE</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Community_Services_Infrastructure.xml"/>
@@ -23,7 +23,7 @@
<entry>
<title>Fedora</title>
<id>http://docs.fedoraproject.org/de-DE/Fedora/opds-Fedora.xml</id>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<dc:language>de-DE</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora.xml"/>
@@ -31,7 +31,7 @@
<entry>
<title>Fedora Contributor Documentation</title>
<id>http://docs.fedoraproject.org/de-DE/Fedora_Contributor_Documentation/opds-F…</id>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:14</updated>
<dc:language>de-DE</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Contributor_Documentation.xml"/>
@@ -39,7 +39,7 @@
<entry>
<title>Fedora Core</title>
<id>http://docs.fedoraproject.org/de-DE/Fedora_Core/opds-Fedora_Core.xml</id>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:15</updated>
<dc:language>de-DE</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Core.xml"/>
@@ -47,7 +47,7 @@
<entry>
<title>Fedora Draft Documentation</title>
<id>http://docs.fedoraproject.org/de-DE/Fedora_Draft_Documentation/opds-Fedora_…</id>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:15</updated>
<dc:language>de-DE</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Draft_Documentation.xml"/>
diff --git a/public_html/de-DE/toc.html b/public_html/de-DE/toc.html
index d4e9cdd..c2b0c8d 100644
--- a/public_html/de-DE/toc.html
+++ b/public_html/de-DE/toc.html
@@ -19,7 +19,14 @@
<a style="background-image:url(images/web_logo.png)" href="index.html" onclick="window.top.location='index.html'" ><span>Welcome</span></a>
</h1>
<div class="tocnavwrap">
- <p/>
+ <form target="_top" method="get" action="http://www.google.com/search">
+ <div class="search">
+ <input class="searchtxt" type="text" name="q" value="" />
+ <input class="searchsub" type="submit" value="Suche" />
+ <input class="searchchk" type="hidden" name="sitesearch" value="http://docs.fedoraproject.org" />
+ </div>
+ </form>
+
<div class="lang">
<div class="reset">
<a href="#" title="collapse document navigation" onclick="clearCookie();">Alles einklappen</a>
@@ -119,7 +126,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Fedora_Live_Images/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Fedora_Live_Images/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Fedora_Live_Images/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Fedora_Live_Images/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-16-Fedora_Live_Images-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-16-Fedora_Live_Images-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.FreeIPA_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.17.FreeIPA_Guide.types');">
@@ -146,7 +153,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Installation_Quick_Start_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Installation_Quick_Start_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Installation_Quick_Start_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Installation_Quick_Start_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora_Draft_Documentation-0.1-Installation_Quick_Start_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora_Draft_Documentation-0.1-Installation_Quick_Start_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.Power_Management_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.17.Power_Management_Guide.types');">
@@ -155,7 +162,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Power_Management_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Power_Management_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Power_Management_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Power_Management_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora--Power_Management_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora--Power_Management_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.Release_Notes' class="book collapsed" onclick="toggle(event, 'Fedora.17.Release_Notes.types');">
@@ -878,7 +885,7 @@
<a class="type" href="../en-US/./Fedora/11/epub/Security_Guide/Fedora-11-Security_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/11/html/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/11/html/Security_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/11/html-single/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/11/html-single/Security_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/11/pdf/Security_Guide/Fedora-11-Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/11/pdf/Security_Guide/Fedora-11-Security_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/11/pdf/Security_Guide/fedora-11-Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/11/pdf/Security_Guide/fedora-11-Security_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.11.User_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.11.User_Guide.types');">
@@ -978,7 +985,7 @@
<a class="type" href="../en-US/./Fedora/10/epub/Security_Guide/Fedora-11-Security_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/10/html/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/10/html/Security_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/10/html-single/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/10/html-single/Security_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/10/pdf/Security_Guide/Fedora-11-Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/10/pdf/Security_Guide/Fedora-11-Security_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/10/pdf/Security_Guide/fedora-11-Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/10/pdf/Security_Guide/fedora-11-Security_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.10.User_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.10.User_Guide.types');">
@@ -1079,7 +1086,7 @@
<a class="type" href="../en-US/./Fedora/8/epub/Installation_Guide/Fedora-8-Installation_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/8/html/Installation_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/8/html/Installation_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/8/html-single/Installation_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/8/html-single/Installation_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-9-Installation_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-9-Installation_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-8-Installation_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/8/pdf/Installation_Guide/Fedora-8-Installation_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.8.SELinux_FAQ' class="book collapsed" onclick="toggle(event, 'Fedora.8.SELinux_FAQ.types');">
@@ -1141,7 +1148,7 @@
<div id='Fedora..Security_Guide' class="book collapsed" onclick="toggle(event, 'Fedora..Security_Guide.types');">
<a class="type" href="../en-US/Fedora//html/Security_Guide/index.html" onclick="window.top.location='../en-US/Fedora//html/Security_Guide/index.html'"><span class="book">Security Guide</span></a>
<div id='Fedora..Security_Guide.types' class="types hidden" onclick="work=0;">
- <a class="type" href="../en-US/./Fedora//epub/Security_Guide/Fedora_Documentation--Security_Guide-en-US.epub" >epub</a>
+ <a class="type" href="../en-US/./Fedora//epub/Security_Guide/Fedora--Security_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora//html/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora//html/Security_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora//html-single/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora//html-single/Security_Guide/index.html';return false;">html-single</a>
<a class="type" href="../en-US/./Fedora//pdf/Security_Guide/Fedora--Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora//pdf/Security_Guide/Fedora--Security_Guide-en-US.pdf';return false;">pdf</a>
@@ -1166,7 +1173,7 @@
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/epub/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html/Fedora_Elections_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html/Fedora_Elections_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html-single/Fedora_Elections_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html-single/Fedora_Elections_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation--Fedora_Elections_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation--Fedora_Elections_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora_Contributor_Documentation.1.Software_Collections_Guide' class="book collapsed" onclick="toggle(event, 'Fedora_Contributor_Documentation.1.Software_Collections_Guide.types');">
@@ -1193,7 +1200,7 @@
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/epub/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html/Users_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html/Users_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html-single/Users_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html-single/Users_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1.6-Users_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1.6-Users_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
</div>
diff --git a/public_html/el-GR/opds-Community_Services_Infrastructure.xml b/public_html/el-GR/opds-Community_Services_Infrastructure.xml
index 43e104c..6c4e37a 100644
--- a/public_html/el-GR/opds-Community_Services_Infrastructure.xml
+++ b/public_html/el-GR/opds-Community_Services_Infrastructure.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/el-GR/opds-Community_Services_Infrastructure.…</id>
<title>Community Services Infrastructure</title>
<subtitle>Community Services Infrastructure</subtitle>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:15</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/el-GR/opds-Fedora.xml b/public_html/el-GR/opds-Fedora.xml
index 34a4d01..118ad47 100644
--- a/public_html/el-GR/opds-Fedora.xml
+++ b/public_html/el-GR/opds-Fedora.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/el-GR/opds-Fedora.xml</id>
<title>Fedora</title>
<subtitle>Fedora</subtitle>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:15</updated>
<!--author>
<name></name>
<uri></uri>
@@ -1750,7 +1750,7 @@
</entry>
<entry>
<title>Security Guide</title>
- <id>http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora_Docu…</id>
+ <id>http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora--Sec…</id>
<!--author>
<name></name>
<uri></uri>
@@ -1762,7 +1762,7 @@
<summary>A Guide to Securing Fedora Linux
</summary>
<content type="text">The Fedora Security Guide is designed to assist users of Fedora in learning the processes and practices of securing workstations and servers against local and remote intrusion, exploitation, and malicious activity. Focused on Fedora Linux but detailing concepts and techniques valid for all Linux systems, the Fedora Security Guide details the planning and the tools involved in creating a secured computing environment for the data center, workplace, and home. With proper administrative knowledge, vigilance, and tools, systems running Linux can be both fully functional and secured from most common intrusion and exploit methods.</content>
- <link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora_Docu…">
+ <link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora//epub/Security_Guide/Fedora--Sec…">
<dc:format>application/epub+zip</dc:format>
</link>
<!--link type="application/atom+xml;type=entry" href="" rel="alternate" title="Full entry"/-->
diff --git a/public_html/el-GR/opds-Fedora_Contributor_Documentation.xml b/public_html/el-GR/opds-Fedora_Contributor_Documentation.xml
index 12b3257..a7a7698 100644
--- a/public_html/el-GR/opds-Fedora_Contributor_Documentation.xml
+++ b/public_html/el-GR/opds-Fedora_Contributor_Documentation.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/el-GR/opds-Fedora_Contributor_Documentation.x…</id>
<title>Fedora Contributor Documentation</title>
<subtitle>Fedora Contributor Documentation</subtitle>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:15</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/el-GR/opds-Fedora_Core.xml b/public_html/el-GR/opds-Fedora_Core.xml
index 85d1a02..3d45929 100644
--- a/public_html/el-GR/opds-Fedora_Core.xml
+++ b/public_html/el-GR/opds-Fedora_Core.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/el-GR/opds-Fedora_Core.xml</id>
<title>Fedora Core</title>
<subtitle>Fedora Core</subtitle>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:15</updated>
<!--author>
<name></name>
<uri></uri>
diff --git a/public_html/el-GR/opds-Fedora_Draft_Documentation.xml b/public_html/el-GR/opds-Fedora_Draft_Documentation.xml
index 19584f4..1dcf762 100644
--- a/public_html/el-GR/opds-Fedora_Draft_Documentation.xml
+++ b/public_html/el-GR/opds-Fedora_Draft_Documentation.xml
@@ -6,7 +6,7 @@
<id>http://docs.fedoraproject.org/el-GR/opds-Fedora_Draft_Documentation.xml</id>
<title>Fedora Draft Documentation</title>
<subtitle>Fedora Draft Documentation</subtitle>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:15</updated>
<!--author>
<name></name>
<uri></uri>
@@ -171,13 +171,12 @@
<name></name>
<uri></uri>
</author-->
- <updated>2012-04-21</updated>
+ <updated>2012-07-30</updated>
<dc:language>el-GR</dc:language>
<category label="" scheme="http://lexcycle.com/stanza/header" term="free"/>
<!--dc:issued></dc:issued-->
- <summary>short descriptor
-</summary>
- <content type="text">A short overview and summary of the book's subject and purpose, traditionally no more than one paragraph long. Note: the abstract will appear in the front matter of your book and will also be placed in the #description field of the book's RPM spec file.</content>
+ <summary></summary>
+ <content type="text">This book is a guide for using the RPM Package Manager. It is a work in progress to update Eric Foster-Johnson's original work.</content>
<link type="application/epub+zip" rel="http://opds-spec.org/acquisition" href="http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/epub/RPM…">
<dc:format>application/epub+zip</dc:format>
</link>
diff --git a/public_html/el-GR/opds.xml b/public_html/el-GR/opds.xml
index c0a61ff..f9cc1a1 100644
--- a/public_html/el-GR/opds.xml
+++ b/public_html/el-GR/opds.xml
@@ -6,7 +6,7 @@
<link rel="http://opds-spec.org/crawlable" type="application/atom+xml" href="http://bookserver.archive.org/catalog/crawlable" title="Crawlable feed"/>
<id>http://docs.fedoraproject.org/el-GR/opds.xml</id>
<title>Product List</title>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:15</updated>
<!--author>
<name></name>
<uri></uri>
@@ -15,7 +15,7 @@
<entry>
<title>Community Services Infrastructure</title>
<id>http://docs.fedoraproject.org/el-GR/Community_Services_Infrastructure/opds-…</id>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:15</updated>
<dc:language>el-GR</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Community_Services_Infrastructure.xml"/>
@@ -23,7 +23,7 @@
<entry>
<title>Fedora</title>
<id>http://docs.fedoraproject.org/el-GR/Fedora/opds-Fedora.xml</id>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:15</updated>
<dc:language>el-GR</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora.xml"/>
@@ -31,7 +31,7 @@
<entry>
<title>Fedora Contributor Documentation</title>
<id>http://docs.fedoraproject.org/el-GR/Fedora_Contributor_Documentation/opds-F…</id>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:15</updated>
<dc:language>el-GR</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Contributor_Documentation.xml"/>
@@ -39,7 +39,7 @@
<entry>
<title>Fedora Core</title>
<id>http://docs.fedoraproject.org/el-GR/Fedora_Core/opds-Fedora_Core.xml</id>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:15</updated>
<dc:language>el-GR</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Core.xml"/>
@@ -47,7 +47,7 @@
<entry>
<title>Fedora Draft Documentation</title>
<id>http://docs.fedoraproject.org/el-GR/Fedora_Draft_Documentation/opds-Fedora_…</id>
- <updated>2012-07-25T02:52:10</updated>
+ <updated>2012-07-30T18:36:15</updated>
<dc:language>el-GR</dc:language>
<content type="text"></content>
<link type="application/atom+xml" href="opds-Fedora_Draft_Documentation.xml"/>
diff --git a/public_html/el-GR/toc.html b/public_html/el-GR/toc.html
index 645c74b..94b0c81 100644
--- a/public_html/el-GR/toc.html
+++ b/public_html/el-GR/toc.html
@@ -19,7 +19,14 @@
<a style="background-image:url(images/web_logo.png)" href="index.html" onclick="window.top.location='index.html'" ><span>Welcome</span></a>
</h1>
<div class="tocnavwrap">
- <p/>
+ <form target="_top" method="get" action="http://www.google.com/search">
+ <div class="search">
+ <input class="searchtxt" type="text" name="q" value="" />
+ <input class="searchsub" type="submit" value="Search" />
+ <input class="searchchk" type="hidden" name="sitesearch" value="http://docs.fedoraproject.org" />
+ </div>
+ </form>
+
<div class="lang">
<div class="reset">
<a href="#" title="collapse document navigation" onclick="clearCookie();">collapse all</a>
@@ -119,7 +126,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Fedora_Live_Images/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Fedora_Live_Images/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Fedora_Live_Images/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Fedora_Live_Images/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-17-Fedora_Live_Images-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-16-Fedora_Live_Images-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Fedora_Live_Images/Fedora-16-Fedora_Live_Images-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.FreeIPA_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.17.FreeIPA_Guide.types');">
@@ -146,7 +153,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Installation_Quick_Start_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Installation_Quick_Start_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Installation_Quick_Start_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Installation_Quick_Start_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora-17-Installation_Quick_Start_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora_Draft_Documentation-0.1-Installation_Quick_Start_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Installation_Quick_Start_Guide/Fedora_Draft_Documentation-0.1-Installation_Quick_Start_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.Power_Management_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.17.Power_Management_Guide.types');">
@@ -155,7 +162,7 @@
<a class="type" href="../en-US/./Fedora/17/epub/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/17/html/Power_Management_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html/Power_Management_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/17/html-single/Power_Management_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/17/html-single/Power_Management_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora--Power_Management_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora--Power_Management_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/17/pdf/Power_Management_Guide/Fedora-17-Power_Management_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.17.Release_Notes' class="book collapsed" onclick="toggle(event, 'Fedora.17.Release_Notes.types');">
@@ -337,7 +344,7 @@
<a class="type" href="../en-US/./Fedora/15/epub/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/15/html/Burning_ISO_images_to_disc/index.html" onclick="window.top.location='../en-US/./Fedora/15/html/Burning_ISO_images_to_disc/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/15/html-single/Burning_ISO_images_to_disc/index.html" onclick="window.top.location='../en-US/./Fedora/15/html-single/Burning_ISO_images_to_disc/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15.0-Burning_ISO_images_to_disc-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15.0-Burning_ISO_images_to_disc-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/15/pdf/Burning_ISO_images_to_disc/Fedora-15-Burning_ISO_images_to_disc-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.15.Deployment_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.15.Deployment_Guide.types');">
@@ -878,7 +885,7 @@
<a class="type" href="../en-US/./Fedora/11/epub/Security_Guide/Fedora-11-Security_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora/11/html/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/11/html/Security_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora/11/html-single/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora/11/html-single/Security_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora/11/pdf/Security_Guide/Fedora-11-Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/11/pdf/Security_Guide/Fedora-11-Security_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora/11/pdf/Security_Guide/fedora-11-Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora/11/pdf/Security_Guide/fedora-11-Security_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora.11.User_Guide' class="book collapsed" onclick="toggle(event, 'Fedora.11.User_Guide.types');">
@@ -1087,7 +1094,7 @@
<div id='Fedora..Security_Guide' class="book collapsed" onclick="toggle(event, 'Fedora..Security_Guide.types');">
<a class="type" href="../en-US/Fedora//html/Security_Guide/index.html" onclick="window.top.location='../en-US/Fedora//html/Security_Guide/index.html'"><span class="book">Security Guide</span></a>
<div id='Fedora..Security_Guide.types' class="types hidden" onclick="work=0;">
- <a class="type" href="../en-US/./Fedora//epub/Security_Guide/Fedora_Documentation--Security_Guide-en-US.epub" >epub</a>
+ <a class="type" href="../en-US/./Fedora//epub/Security_Guide/Fedora--Security_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora//html/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora//html/Security_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora//html-single/Security_Guide/index.html" onclick="window.top.location='../en-US/./Fedora//html-single/Security_Guide/index.html';return false;">html-single</a>
<a class="type" href="../en-US/./Fedora//pdf/Security_Guide/Fedora--Security_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora//pdf/Security_Guide/Fedora--Security_Guide-en-US.pdf';return false;">pdf</a>
@@ -1112,7 +1119,7 @@
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/epub/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html/Fedora_Elections_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html/Fedora_Elections_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html-single/Fedora_Elections_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html-single/Fedora_Elections_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation-1-Fedora_Elections_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation--Fedora_Elections_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Fedora_Elections_Guide/Fedora_Contributor_Documentation--Fedora_Elections_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
<div id='Fedora_Contributor_Documentation.1.Software_Collections_Guide' class="book collapsed" onclick="toggle(event, 'Fedora_Contributor_Documentation.1.Software_Collections_Guide.types');">
@@ -1139,7 +1146,7 @@
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/epub/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.epub" >epub</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html/Users_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html/Users_Guide/index.html';return false;">html</a>
<a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/html-single/Users_Guide/index.html" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/html-single/Users_Guide/index.html';return false;">html-single</a>
- <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1-Users_Guide-en-US.pdf';return false;">pdf</a>
+ <a class="type" href="../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1.6-Users_Guide-en-US.pdf" onclick="window.top.location='../en-US/./Fedora_Contributor_Documentation/1/pdf/Users_Guide/Fedora_Contributor_Documentation-1.6-Users_Guide-en-US.pdf';return false;">pdf</a>
</div>
</div>
</div>
diff --git a/public_html/en-US/Fedora_Draft_Documentation/0.1/epub/RPM_Guide/Fedora_Draft_Documentation-0.1-RPM_Guide-en-US.epub b/public_html/en-US/Fedora_Draft_Documentation/0.1/epub/RPM_Guide/Fedora_Draft_Documentation-0.1-RPM_Guide-en-US.epub
index 4bfc856..03305eb 100644
Binary files a/public_html/en-US/Fedora_Draft_Documentation/0.1/epub/RPM_Guide/Fedora_Draft_Documentation-0.1-RPM_Guide-en-US.epub and b/public_html/en-US/Fedora_Draft_Documentation/0.1/epub/RPM_Guide/Fedora_Draft_Documentation-0.1-RPM_Guide-en-US.epub differ
diff --git a/public_html/en-US/Fedora_Draft_Documentation/0.1/html-single/RPM_Guide/index.html b/public_html/en-US/Fedora_Draft_Documentation/0.1/html-single/RPM_Guide/index.html
index 6909205..ca2e690 100644
--- a/public_html/en-US/Fedora_Draft_Documentation/0.1/html-single/RPM_Guide/index.html
+++ b/public_html/en-US/Fedora_Draft_Documentation/0.1/html-single/RPM_Guide/index.html
@@ -1,16 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>RPM Guide</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta name="generator" content="publican 2.8" /><meta name="package" content="Fedora_Draft_Documentation-RPM_Guide-0.1-en-US-0-0" /><meta name="description" content="A short overview and summary of the book's subject and purpose, traditionally no more than one paragraph long. Note: the abstract will appear in the front matter of your book and will also be placed in the #description field of the book's RPM spec file." /><script type="text/javascript" src="../../../../../toc.js"></script><script type="text/javascript">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>RPM Guide</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta name="generator" content="publican 2.8" /><meta name="package" content="Fedora_Draft_Documentation-RPM_Guide-0.1-en-US-0-0" /><meta name="description" content="This book is a guide for using the RPM Package Manager. It is a work in progress to update Eric Foster-Johnson's original work." /><script type="text/javascript" src="../../../../../toc.js"></script><script type="text/javascript">
addID('Fedora_Draft_Documentation');
addID('Fedora_Draft_Documentation.0.1');
addID('Fedora_Draft_Documentation.0.1.books');
addID('Fedora_Draft_Documentation.0.1.RPM_Guide');
- </script></head><body class="draft toc_embeded "><div id="tocdiv" class="toc"><iframe id="tocframe" class="toc" src="../../../../toc.html">This is an iframe, to view it upgrade your browser or enable iframe display.</iframe></div><p id="title"><a class="left" href="http://www.fedoraproject.org"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://docs.fedoraproject.org"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><div xml:lang="en-US" class="book" id="id851515" lang="en-US"><div class="titlepage"><div><div class="producttitle" font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" font-size="12pt" text-align="center"><span class="productname">Fedora Draft Documentation</span> <span class="productnumber"></span></div><div font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" font-size="12pt" text-align="center"><h1 id="id851515" class="title">RPM Guide</h
1></div><div font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" font-size="12pt" text-align="center"><h2 class="subtitle">short descriptor</h2></div><p class="edition">Edition 0</p><div font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" font-size="12pt" text-align="center"><h3 class="corpauthor">
+ </script></head><body class="draft toc_embeded "><div id="tocdiv" class="toc"><iframe id="tocframe" class="toc" src="../../../../toc.html">This is an iframe, to view it upgrade your browser or enable iframe display.</iframe></div><p id="title"><a class="left" href="http://www.fedoraproject.org"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://docs.fedoraproject.org"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><div xml:lang="en-US" class="book" id="id1549610" lang="en-US"><div class="titlepage"><div><div class="producttitle" font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" font-size="12pt" text-align="center"><span class="productname">Fedora Draft Documentation</span> <span class="productnumber"></span></div><div font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" font-size="12pt" text-align="center"><h1 id="id1549610" class="title">RPM Guide<
/h1></div><p class="edition">Edition 0</p><div font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" font-size="12pt" text-align="center"><h3 class="corpauthor">
<span class="inlinemediaobject"><object data="Common_Content/images/title_logo.svg" type="image/svg+xml"> Logo</object></span>
- </h3></div><div font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" font-size="12pt" text-align="center"><div xml:lang="en-US" class="authorgroup" lang="en-US"><div class="author"><h3 class="author"><span class="firstname">Eric</span> <span class="surname">Foster-Johnson</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Stuart</span> <span class="surname">Ellis</span></h3><code class="email"><a class="email" href="mailto:stuart@elsn.org">stuart(a)elsn.org</a></code></div><div class="author"><h3 class="author"><span class="firstname">Ben</span> <span class="surname">Cotton</span></h3><code class="email"><a class="email" href="mailto:bcotton@fedoraproject.org">bcotton(a)fedoraproject.org</a></code></div></div></div><div font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" font-size="12pt" text-align="center"><p class="copyright">Copyright © 2005,2011 Fedora Project Contributors</p></div><hr /><div font-family="sans-serif,Symbo
l,ZapfDingbats" font-weight="bold" font-size="12pt" text-align="center"><div id="id729587" class="legalnotice"><h1 class="legalnotice">Legal Notice</h1><div class="para">
+ </h3></div><div font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" font-size="12pt" text-align="center"><div xml:lang="en-US" class="authorgroup" lang="en-US"><div class="author"><h3 class="author"><span class="firstname">Eric</span> <span class="surname">Foster-Johnson</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Stuart</span> <span class="surname">Ellis</span></h3><code class="email"><a class="email" href="mailto:stuart@elsn.org">stuart(a)elsn.org</a></code></div><div class="author"><h3 class="author"><span class="firstname">Ben</span> <span class="surname">Cotton</span></h3><code class="email"><a class="email" href="mailto:bcotton@fedoraproject.org">bcotton(a)fedoraproject.org</a></code></div></div></div><div font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" font-size="12pt" text-align="center"><p class="copyright">Copyright © 2005,2011 Fedora Project Contributors</p></div><hr /><div font-family="sans-serif,Symbo
l,ZapfDingbats" font-weight="bold" font-size="12pt" text-align="center"><div id="id620646" class="legalnotice"><h1 class="legalnotice">Legal Notice</h1><div class="para">
Copyright <span class="trademark"></span>© 2005,2011 Fedora Project Contributors.
</div><div class="para">
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at <a href="http://creativecommons.org/licenses/by-sa/3.0/">http://creativecommons.org/licenses/by-sa/3.0/</a>. The original authors of this document, and Red Hat, designate the Fedora Project as the "Attribution Party" for purposes of CC-BY-SA. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
@@ -31,8 +31,8 @@
</div><div class="para">
All other trademarks are the property of their respective owners.
</div></div></div><div font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" font-size="12pt" text-align="center"><div class="abstract"><h6>Abstract</h6><div class="para">
- A short overview and summary of the book's subject and purpose, traditionally no more than one paragraph long. Note: the abstract will appear in the front matter of your book and will also be placed in the #description field of the book's RPM spec file.
- </div></div></div></div><hr /></div><div class="toc"><dl><dt><span class="preface"><a href="#ch-intro-packaging">Introducing Package Management</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id810434">1. Installing, Removing, and Upgrading Applications</a></span></dt><dt><span class="sect1"><a href="#id972105">2. Overcoming the Installation Obstacles</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id901336">2.1. Application-level utilities</a></span></dt><dt><span class="sect2"><a href="#id553446">2.2. Built-in system utilities</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id813359">3. Linux Software Management Tools: Packages</a></span></dt><dt><span class="sect1"><a href="#id814414">4. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-intro-rpm">1. Introduction to RPM</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id522503">1.1. The Need for Linux Package Management Systems</a></span></dt><dt><span class="se
ct1"><a href="#id718986">1.2. RPM Design Goals</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id793788">1.2.1. Ease of use</a></span></dt><dt><span class="sect2"><a href="#id870384">1.2.2. Package-oriented focus</a></span></dt><dt><span class="sect2"><a href="#id777882">1.2.3. Package upgradability</a></span></dt><dt><span class="sect2"><a href="#id873517">1.2.4. Package interdependencies</a></span></dt><dt><span class="sect2"><a href="#id538212">1.2.5. Query capabilities</a></span></dt><dt><span class="sect2"><a href="#id562268">1.2.6. Package verification</a></span></dt><dt><span class="sect2"><a href="#id562280">1.2.7. Multiple architectures</a></span></dt><dt><span class="sect2"><a href="#id708872">1.2.8. Pristine sources</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id778473">1.3. RPM Terminology</a></span></dt><dt><span class="sect1"><a href="#id781148">1.4. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-rpm-overview">2.
RPM Overview</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id982290">2.1. Understanding the Package File</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id965527">2.1.1. RPM file format</a></span></dt><dt><span class="sect2"><a href="#id692241">2.1.2. Binary RPMs and Source RPMs</a></span></dt><dt><span class="sect2"><a href="#id861327">2.1.3. Source RPMs</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id755327">2.2. Querying the RPM Database</a></span></dt><dt><span class="sect1"><a href="#id700937">2.3. Running RPM Commands</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id806154">2.3.1. Working with the <code class="command">rpm</code> command</a></span></dt><dt><span class="sect2"><a href="#id861877">2.3.2. Other RPM commands</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id683559">2.4. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-using-rpm">3. Using RPM</a></span></dt><dd><dl><dt><span class=
"sect1"><a href="#id680504">3.1. The <code class="command">rpm</code> Command</a></span></dt><dt><span class="sect1"><a href="#id851767">3.2. Upgrading and Installing Software</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id712955">3.2.1. Upgrading with the <code class="command">rpm</code> command</a></span></dt><dt><span class="sect2"><a href="#id748014">3.2.2. Upgrading packages</a></span></dt><dt><span class="sect2"><a href="#id1019232">3.2.3. Freshening up</a></span></dt><dt><span class="sect2"><a href="#id785712">3.2.4. Installing Packages</a></span></dt><dt><span class="sect2"><a href="#id530836">3.2.5. Installing Over the Internet</a></span></dt><dt><span class="sect2"><a href="#id1180142">3.2.6. Installing source RPMs</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id795289">3.3. Removing Software</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id886357">3.3.1. Checking that the package has been removed</a></span></dt><dt><span class="s
ect2"><a href="#id683119">3.3.2. Removing multiple packages at a time</a></span></dt><dt><span class="sect2"><a href="#id1163118">3.3.3. Options when removing packages</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id751084">3.4. Other <code class="command">rpm</code> Command Options</a></span></dt><dt><span class="sect1"><a href="#id808610">3.5. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-using-rpm-db">4. Using the RPM Database</a></span></dt><dd><dl><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-querying_database">4.1. Querying the RPM Database</a></span></dt><dd><dl><dt><span class="section"><a href="#id810098">4.1.1. Querying packages</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-query_everything">4.1.2. Querying everything</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-refining_query">4.1.3. Refining the query</a></span></dt><dt><span class="section"><a href="#RPM_
Guide-Using_RPM_DB-which_package">4.1.4. Finding which packages own files</a></span></dt></dl></dd><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-getting_information">4.2. Getting Information on Packages</a></span></dt><dd><dl><dt><span class="section"><a href="#RPM_Guide-USing_RPM_DB-getting_information-describing_packages">4.2.1. Describing packages</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-package_groups">4.2.2. Package groups</a></span></dt><dt><span class="section"><a href="#id750521">4.2.3. Listing the files in a package</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-listing_conf_files">4.2.4. Listing the configuration files for a package</a></span></dt><dt><span class="section"><a href="#id838072">4.2.5. Listing the documentation files for a package</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-file_state">4.2.6. Listing the state of the files in a package</a></span></dt
><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-listing_scripts">4.2.7. Listing the scripts in a package</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Listing_changed">4.2.8. Listing what has changed</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Combining_queries">4.2.9. Combining queries</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Cusomt_queries">4.2.10. Creating custom queries</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Query_format_tags">4.2.11. Working With Query Format Tags</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Querying_for_package_information">4.2.12. Querying for Package Information</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Formatting_arrays">4.2.13. Formatting Arrays</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Special_formatting">4.2.14. Special
Formatting</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-querying_pacakge_dependencies">4.2.15. Querying for Package Dependencies</a></span></dt><dt><span class="section"><a href="#RPM-Guide-Using_RPM_DB-Querying_file_information">4.2.16. Querying for File Information</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Other_Query_Format_Tags">4.2.17. Other Query Format Tags</a></span></dt></dl></dd><dt><span class="section"><a href="#id1006370">4.3. Other queries</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Getting_information_on_package_files">4.4. Getting Information on Package Files</a></span></dt><dd><dl><dt><span class="section"><a href="#RPM_Guide_Using_RPM_DB-Querying_package_files_remotely">4.4.1. Querying Package Files Remotely</a></span></dt><dt><span class="section"><a href="#RPM-Guide-Using_RPM-DB-verifying_packages">4.4.2. Verifying Installed RPM Packages</a></span></dt><dt><span cl
ass="section"><a href="#RPM_GUide-Using_RPM_DB-working_with_RPM_db">4.4.3. Working With the RPM Database</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-summary">4.4.4. Summary</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#ch-dependencies">5. Package Dependencies</a></span></dt><dd><dl><dt><span class="section"><a href="#RPM_Guide-Dependencies-Understanding">5.1. Understanding the Dependency Concept</a></span></dt><dd><dl><dt><span class="section"><a href="#RPM_Guide-Dependencies-capabilities">5.1.1. Capabilities</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Dependencies-version_dependencies">5.1.2. Version dependencies</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Dependencies-conflicts">5.1.3. Conflicts</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Dependencies-obsoletes">5.1.4. Obsoletes</a></span></dt></dl></dd><dt><span class="section"><a href="#id869789">5.2. Checking for De
pendencies</a></span></dt><dd><dl><dt><span class="section"><a href="#id494023">5.2.1. Determining the capabilities a package requires</a></span></dt><dt><span class="section"><a href="#id786625">5.2.2. Determining the capabilities a package provides</a></span></dt><dt><span class="section"><a href="#id1497917">5.2.3. Checking for conflicts</a></span></dt><dt><span class="section"><a href="#id1012657">5.2.4. Determining which packages require a certain capability</a></span></dt><dt><span class="section"><a href="#id948526">5.2.5. Determining which package provides a certain capability</a></span></dt></dl></dd><dt><span class="section"><a href="#id776884">5.3. Triggers</a></span></dt><dt><span class="section"><a href="#id687574">5.4. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-transactions">6. Transactions</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id1284206">6.1. Understanding Transactions</a></span></dt><dd><dl><dt><span class="sect
2"><a href="#id1284121">6.1.1. When do you need transactions?</a></span></dt><dt><span class="sect2"><a href="#id1004485">6.1.2. Backing out of transactions</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id829740">6.2. Transactions with the rpm Command</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id956529">6.2.1. Transaction IDs</a></span></dt><dt><span class="sect2"><a href="#id830531">6.2.2. Rolling Back Transactions</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id991863">6.3. Saving Old Packages</a></span></dt><dt><span class="sect1"><a href="#id943961">6.4. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-management-software">7. RPM Management Software</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id733901">7.1. Locating RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id845486">7.1.1. rpmfind and rpm2html</a></span></dt><dt><span class="sect2"><a href="#id689963">7.1.2. RPM Sites On the
Internet</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id806588">7.2. Graphical RPM Management</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id868548">7.2.1. Nautilus</a></span></dt><dt><span class="sect2"><a href="#id680309">7.2.2. Red Hat Package Management</a></span></dt><dt><span class="sect2"><a href="#id917177">7.2.3. KPackage</a></span></dt><dt><span class="sect2"><a href="#id567193">7.2.4. Gnome-RPM</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id750946">7.3. Extending RPM Management</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id713853">7.3.1. AutoRPM</a></span></dt><dt><span class="sect2"><a href="#id1284978">7.3.2. AutoUpdate</a></span></dt><dt><span class="sect2"><a href="#id692679">7.3.3. The Red Hat Network and up2date</a></span></dt><dt><span class="sect2"><a href="#id843849">7.3.4. Current</a></span></dt><dt><span class="sect2"><a href="#id742428">7.3.5. urpmi and RpmDrake</a></span></dt><dt><span class="sect2"
><a href="#id987690">7.3.6. apt-rpm</a></span></dt><dt><span class="sect2"><a href="#id1009429">7.3.7. The poldek</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id1009458">7.4. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-creating-rpms">8. Creating RPMs: An Overview</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id1006299">8.1. Preparing to Build RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id843921">8.1.1. Planning what you want to build</a></span></dt><dt><span class="sect2"><a href="#id916231">8.1.2. Gathering the software to package</a></span></dt><dt><span class="sect2"><a href="#id847109">8.1.3. Creating a reproducible build of the software</a></span></dt><dt><span class="sect2"><a href="#id944869">8.1.4. Planning for Upgrades</a></span></dt><dt><span class="sect2"><a href="#id721534">8.1.5. Outlining Any Dependencies</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id1076078">8.2. Building RPM
s</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id920198">8.2.1. Setting up the directory structure</a></span></dt><dt><span class="sect2"><a href="#id775374">8.2.2. Placing your sources into the directory structure</a></span></dt><dt><span class="sect2"><a href="#id867411">8.2.3. Creating the spec file</a></span></dt><dt><span class="sect2"><a href="#id519118">8.2.4. Building RPMs with the rpmbuild command</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id865598">8.3. Verifying Your RPMS</a></span></dt><dt><span class="sect1"><a href="#id844584">8.4. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-specfiles">9. Working with Spec Files</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id1040415">9.1. Reading Spec Files</a></span></dt><dt><span class="sect1"><a href="#id1013124">9.2. Writing Spec Files</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id1035826">9.2.1. Comments</a></span></dt><dt><span class="sect2">
<a href="#id494203">9.2.2. Storing spec files on disk</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id1161591">9.3. Defining Package Information</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id775466">9.3.1. Describing the package</a></span></dt><dt><span class="sect2"><a href="#id790951">9.3.2. Setting build locations</a></span></dt><dt><span class="sect2"><a href="#id808829">9.3.3. Naming source files</a></span></dt><dt><span class="sect2"><a href="#id1071873">9.3.4. Naming patches</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id944124">9.4. Controlling the Build</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id908901">9.4.1. Preparing for the build</a></span></dt><dt><span class="sect2"><a href="#id739826">9.4.2. Building the software</a></span></dt><dt><span class="sect2"><a href="#id1007480">9.4.3. Installing the software</a></span></dt><dt><span class="sect2"><a href="#id732133">9.4.4. Cleaning up after the build</a></span
></dt><dt><span class="sect2"><a href="#id792386">9.4.5. Defining installation scripts</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id485875">9.5. Filling the List of Files</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id936953">9.5.1. Using wildcards</a></span></dt><dt><span class="sect2"><a href="#id936981">9.5.2. Naming directories of files</a></span></dt><dt><span class="sect2"><a href="#id761363">9.5.3. Marking files as documentation or configuration files</a></span></dt><dt><span class="sect2"><a href="#id709136">9.5.4. Setting file attributes</a></span></dt><dt><span class="sect2"><a href="#id755047">9.5.5. Verifying the %files section</a></span></dt><dt><span class="sect2"><a href="#id940605">9.5.6. Filling the list of files automatically</a></span></dt><dt><span class="sect2"><a href="#id708152">9.5.7. Handling RPM build errors for unpackaged files</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id997453">9.6. Adding Change Log En
tries</a></span></dt><dt><span class="sect1"><a href="#id736515">9.7. Defining Spec File Macros</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id543113">9.7.1. Built-in macros</a></span></dt><dt><span class="sect2"><a href="#id1004852">9.7.2. Spec file-specific macros</a></span></dt><dt><span class="sect2"><a href="#id738739">9.7.3. Defining new macros</a></span></dt><dt><span class="sect2"><a href="#id1076114">9.7.4. Specifying parameters to macros</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id709255">9.8. Creating XML Spec Files</a></span></dt><dt><span class="sect1"><a href="#id508120">9.9. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-advanced-packaging">10. Advanced RPM Packaging</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id994609">10.1. Defining Package Dependencies</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id804585">10.1.1. Naming dependencies</a></span></dt><dt><span class="sect2"><a href
="#id681905">10.1.2. Setting prerequisites</a></span></dt><dt><span class="sect2"><a href="#id948625">10.1.3. Naming build dependencies</a></span></dt><dt><span class="sect2"><a href="#id1035677">10.1.4. Generating dependencies automatically</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id1012159">10.2. Setting Triggers</a></span></dt><dt><span class="sect1"><a href="#id691746">10.3. Writing Verification Scripts</a></span></dt><dt><span class="sect1"><a href="#id890619">10.4. Creating Subpackages</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id745249">10.4.1. Providing information for subpackages</a></span></dt><dt><span class="sect2"><a href="#id833335">10.4.2. Defining scripts for subpackages</a></span></dt><dt><span class="sect2"><a href="#id950228">10.4.3. Building subpackages</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id806637">10.5. Creating Relocatable Packages</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id536928">1
0.5.1. Setting up the prefixes</a></span></dt><dt><span class="sect2"><a href="#id845178">10.5.2. Define the files section</a></span></dt><dt><span class="sect2"><a href="#id866922">10.5.3. Problems creating relocatable packages</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id924009">10.6. Defining Conditional Builds</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id538159">10.6.1. Defining conditional macros</a></span></dt><dt><span class="sect2"><a href="#id931412">10.6.2. Using conditional blocks</a></span></dt><dt><span class="sect2"><a href="#id686269">10.6.3. Using architecture-based conditionals</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id724856">10.7. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-rpmbuild">11. Controlling the Build with <code class="command">rpmbuild</code></a></span></dt><dd><dl><dt><span class="sect1"><a href="#id770572">11.1. Building RPMs with the rpmbuild Command</a></span></dt><dd
><dl><dt><span class="sect2"><a href="#id687021">11.1.1. Customizing the build</a></span></dt><dt><span class="sect2"><a href="#id867901">11.1.2. Testing the build</a></span></dt><dt><span class="sect2"><a href="#id805077">11.1.3. Debugging the build</a></span></dt><dt><span class="sect2"><a href="#id949136">11.1.4. Cleaning up</a></span></dt><dt><span class="sect2"><a href="#id950508">11.1.5. Building for other platforms</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id1080629">11.2. Building RPMs Without an External Spec File</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id685640">11.2.1. Options for working with tar archives</a></span></dt><dt><span class="sect2"><a href="#id955897">11.2.2. The expected archive structure</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id700284">11.3. Working with Source RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id687049">11.3.1. Rebuilding binary RPMS from source RPMs</a></span></dt><d
t><span class="sect2"><a href="#id1168792">11.3.2. Recompiling binaries from source RPMs</a></span></dt><dt><span class="sect2"><a href="#id846811">11.3.3. SRPMS? Finding source RPMs</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id774266">11.4. Signing Built RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id774279">11.4.1. Checking that the GPG software is installed</a></span></dt><dt><span class="sect2"><a href="#id998112">11.4.2. Configuring a signature</a></span></dt><dt><span class="sect2"><a href="#id987126">11.4.3. Signing with the rpmbuild command</a></span></dt><dt><span class="sect2"><a href="#id1088239">11.4.4. Signing with the rpm command</a></span></dt><dt><span class="sect2"><a href="#id966048">11.4.5. Verifying signatures</a></span></dt><dt><span class="sect2"><a href="#id778504">11.4.6. Importing public keys</a></span></dt><dt><span class="sect2"><a href="#id758687">11.4.7. Getting the Red Hat public key</a></span></dt></dl></dd><dt>
<span class="sect1"><a href="#id717788">11.5. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-extra-packaging-tools">12. Supplemental Packaging Software</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id845230">12.1. Packaging Aids</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id814461">12.1.1. Using VIM spec plugins to improve spec file editing</a></span></dt><dt><span class="sect2"><a href="#id938128">12.1.2. Adding functions with emacs rpm-spec-mode</a></span></dt><dt><span class="sect2"><a href="#id792204">12.1.3. Validating and debugging spec files with rpmlint</a></span></dt><dt><span class="sect2"><a href="#id528594">12.1.4. Generating the %files section with RUST</a></span></dt><dt><span class="sect2"><a href="#id690437">12.1.5. setup.sh and MakeRPM.pl</a></span></dt><dt><span class="sect2"><a href="#id708748">12.1.6. Manipulating Package Files with rpm2cpio</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id85725
3">12.2. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-packaging-guidelines">13. Packaging Guidelines</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id758645">13.1. Avoiding Common Problems</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id794187">13.1.1. Scan the mailing lists</a></span></dt><dt><span class="sect2"><a href="#id758523">13.1.2. Use rpmbuild</a></span></dt><dt><span class="sect2"><a href="#id792004">13.1.3. Don’t try to defeat the system</a></span></dt><dt><span class="sect2"><a href="#id792029">13.1.4. Turn off automatic dependency generation</a></span></dt><dt><span class="sect2"><a href="#id906860">13.1.5. Don't list directories in %files</a></span></dt><dt><span class="sect2"><a href="#id906888">13.1.6. Handling circular dependencies</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id795419">13.2. Following Good Practices</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id1271246">13.2.1. Pre
paration</a></span></dt><dt><span class="sect2"><a href="#id739585">13.2.2. Building</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id913760">13.3. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-scripting">14. Automating RPM with Scripts</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id1572469">14.1. Scripting</a></span></dt><dt><span class="sect1"><a href="#id811446">14.2. Distinguishing Scripting Languages from Programming Languages</a></span></dt><dt><span class="sect1"><a href="#id790904">14.3. Deciding When to Program and When to Script</a></span></dt><dt><span class="sect1"><a href="#id714084">14.4. Shell Scripting Basics</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id714100">14.4.1. Writing a script</a></span></dt><dt><span class="sect2"><a href="#id682831">14.4.2. Running a script</a></span></dt><dt><span class="sect2"><a href="#id743707">14.4.3. Problems running scripts</a></span></dt><dt><span class="sect2"
><a href="#id743730">14.4.4. Turning a script into a command</a></span></dt><dt><span class="sect2"><a href="#id719958">14.4.5. Passing command-line options to your script</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id965791">14.5. Examining RPM Files</a></span></dt><dt><span class="sect1"><a href="#id850438">14.6. Querying the RPM Database</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id692364">14.6.1. Querying for all packages installed at the same time</a></span></dt><dt><span class="sect2"><a href="#id892952">14.6.2. Reading HTML documentation for a package</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id809026">14.7. Where to Go From Here</a></span></dt><dt><span class="sect1"><a href="#id923388">14.8. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-programming-c">15. Programming RPM with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id914923">15.1. Programming with the C Library</a></span></dt>
<dd><dl><dt><span class="sect2"><a href="#id712382">15.1.1. Setting Up a C Programming Environment</a></span></dt><dt><span class="sect2"><a href="#id687797">15.1.2. Setting Up the RPM Programming Environment</a></span></dt><dt><span class="sect2"><a href="#id823277">15.1.3. Using the RPM Library</a></span></dt><dt><span class="sect2"><a href="#id793981">15.1.4. Compiling and Linking RPM Programs</a></span></dt><dt><span class="sect2"><a href="#id754971">15.1.5. Getting information on your RPM environment</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id708073">15.2. The Power of popt</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id832949">15.2.1. Popt aliases</a></span></dt><dt><span class="sect2"><a href="#id490489">15.2.2. Programming with popt</a></span></dt><dt><span class="sect2"><a href="#id758765">15.2.3. Handling Errors</a></span></dt><dt><span class="sect2"><a href="#id875634">15.2.4. Running a popt example</a></span></dt><dt><span class="sec
t2"><a href="#id874536">15.2.5. Handling rpm command-line options</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id1042740">15.3. Working with RPM Files</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id716459">15.3.1. Opening RPM files</a></span></dt><dt><span class="sect2"><a href="#id1003986">15.3.2. Reading the RPM lead and signature</a></span></dt><dt><span class="sect2"><a href="#id490690">15.3.3. Reading header information</a></span></dt><dt><span class="sect2"><a href="#id853222">15.3.4. A shortcut to header information</a></span></dt><dt><span class="sect2"><a href="#id821593">15.3.5. Closing RPM files</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id966275">15.4. Programming with the RPM Database</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id714034">15.4.1. Database iterators</a></span></dt><dt><span class="sect2"><a href="#id1013084">15.4.2. Dependency Sets</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id8
93886">15.5. Comparing an RPM File to an Installed Package</a></span></dt><dt><span class="sect1"><a href="#id502661">15.6. Where to Go from Here</a></span></dt><dt><span class="sect1"><a href="#id947144">15.7. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-rpm-programming-python">16. Programming RPM with Python</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id681532">16.1. Setting Up a Python Development Environment</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id703486">16.1.1. Installing the base Python packages</a></span></dt><dt><span class="sect2"><a href="#id791397">16.1.2. Using Python for graphics</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id904300">16.2. The Python API Hierarchy</a></span></dt><dt><span class="sect1"><a href="#id917287">16.3. Programming with the RPM Database</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id789168">16.3.1. Accessing the RPM database</a></span></dt><dt><span cla
ss="sect2"><a href="#id752688">16.3.2. Querying the RPM database</a></span></dt><dt><span class="sect2"><a href="#id1028363">16.3.3. Examining the package header</a></span></dt><dt><span class="sect2"><a href="#id720177">16.3.4. Querying for specific packages</a></span></dt><dt><span class="sect2"><a href="#id749119">16.3.5. Printing information on packages</a></span></dt><dt><span class="sect2"><a href="#id828406">16.3.6. Refining queries</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id790570">16.4. Reading Package Files</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id790582">16.4.1. Reading headers from package files</a></span></dt><dt><span class="sect2"><a href="#id797854">16.4.2. Setting the verification flags</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id696951">16.5. Dependency Comparisons</a></span></dt><dt><span class="sect1"><a href="#id911674">16.6. Installing and Upgrading Packages</a></span></dt><dd><dl><dt><span class="sec
t2"><a href="#id696780">16.6.1. Building up the transaction set</a></span></dt><dt><span class="sect2"><a href="#id711049">16.6.2. Transaction elements</a></span></dt><dt><span class="sect2"><a href="#id900714">16.6.3. Checking and reordering the transaction elements</a></span></dt><dt><span class="sect2"><a href="#id1484274">16.6.4. Running the transaction</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id1019344">16.7. Where to Go from Here</a></span></dt><dt><span class="sect1"><a href="#id989539">16.8. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-programming-perl">17. Programming RPM with Perl</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id752008">17.1. Getting and Using the Perl RPM Modules</a></span></dt><dt><span class="sect1"><a href="#id857081">17.2. Working with RPM Files</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id530550">17.2.1. Opening package files</a></span></dt><dt><span class="sect2"><a href="#
id738134">17.2.2. Listing tags from the package</a></span></dt><dt><span class="sect2"><a href="#id870861">17.2.3. Convenience methods</a></span></dt><dt><span class="sect2"><a href="#id772832">17.2.4. Listing the name and version</a></span></dt><dt><span class="sect2"><a href="#id828266">17.2.5. Checking whether the package is a source package</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id788833">17.3. Programming with the RPM Database</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id496433">17.3.1. Opening the database</a></span></dt><dt><span class="sect2"><a href="#id920122">17.3.2. Finding packages</a></span></dt><dt><span class="sect2"><a href="#id920141">17.3.3. Iterating over packages</a></span></dt><dt><span class="sect2"><a href="#id885220">17.3.4. Additional query subroutines</a></span></dt><dt><span class="sect2"><a href="#id1679622">17.3.5. Getting information on packages</a></span></dt><dt><span class="sect2"><a href="#id909426">17.3.6.
Comparing versions</a></span></dt><dt><span class="sect2"><a href="#id773955">17.3.7. Closing the database</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id773977">17.4. Where to Go from Here</a></span></dt><dt><span class="sect1"><a href="#id707662">17.5. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-other-linuxes">18. Using RPM on Non-Red Hat Linuxes</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id846330">18.1. Troubleshooting RPM Installation Issues</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id927186">18.1.1. Dealing with RPM versions</a></span></dt><dt><span class="sect2"><a href="#id1567803">18.1.2. Dealing with divisions of software into packages</a></span></dt><dt><span class="sect2"><a href="#id952844">18.1.3. Dealing with dependency issues</a></span></dt><dt><span class="sect2"><a href="#id496672">18.1.4. Dealing with install locations</a></span></dt><dt><span class="sect2"><a href="#id950772">18.1.5. W
hen all else fails, rebuild from the source package</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id829777">18.2. Handling Problems Building RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id829801">18.2.1. Writing distribution-specific packages</a></span></dt><dt><span class="sect2"><a href="#id889523">18.2.2. Dealing with automatic dependency generation</a></span></dt><dt><span class="sect2"><a href="#id995439">18.2.3. Dealing with different macros</a></span></dt><dt><span class="sect2"><a href="#id995466">18.2.4. Making relocatable packages</a></span></dt><dt><span class="sect2"><a href="#id716925">18.2.5. Creating an RPM build environment</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id912973">18.3. Dealing with Non-RPM-Based Linux Versions</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id912985">18.3.1. Handling non-RPM packages with alien</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id830441">18.4. Standar
dizing RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id830459">18.4.1. Filesystem Hierarchy Standard</a></span></dt><dt><span class="sect2"><a href="#id747299">18.4.2. RPM adoption</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id924119">18.5. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-other-os">19. RPM on Other Operating Systems</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id747436">19.1. Running RPM on Other Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id1447799">19.1.1. Getting RPM for your system</a></span></dt><dt><span class="sect2"><a href="#id692927">19.1.2. Running RPM on Windows</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id795001">19.2. Bootstrapping RPM On Other Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id714961">19.2.1. Downloading the RPM software</a></span></dt><dt><span class="sect2"><a href="#id714986">19.2.2. Ext
racting the software</a></span></dt><dt><span class="sect2"><a href="#id816796">19.2.3. Reading the INSTALL file</a></span></dt><dt><span class="sect2"><a href="#id816821">19.2.4. Libraries required by RPM</a></span></dt><dt><span class="sect2"><a href="#id1075839">19.2.5. Tools for building RPM</a></span></dt><dt><span class="sect2"><a href="#id834147">19.2.6. Compiling RPM</a></span></dt><dt><span class="sect2"><a href="#id758567">19.2.7. Handling problems</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id847813">19.3. Setting Up the RPM System</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id847825">19.3.1. Setting up the RPM database</a></span></dt><dt><span class="sect2"><a href="#id857952">19.3.2. Creating the RPM environment</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id570394">19.4. Creating Non-Linux RPMS</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id1509826">19.4.1. Setting up a build environment</a></span></dt><dt><
span class="sect2"><a href="#id1559518">19.4.2. Cross-building packages</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id516189">19.5. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-customizing-rpm">20. Customizing RPM Behavior</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id512367">20.1. Customizing with RPM Macros</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id873993">20.1.1. Defining macros</a></span></dt><dt><span class="sect2"><a href="#id813807">20.1.2. Customizing Macros</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id908966">20.2. Configuring RPM Settings</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id679876">20.2.1. Viewing the current settings</a></span></dt><dt><span class="sect2"><a href="#id688535">20.2.2. Locating the rpmrc files</a></span></dt><dt><span class="sect2"><a href="#id821323">20.2.3. Changing settings</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id9532
33">20.3. Adding Popt Aliases</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id754575">20.3.1. Defining aliases</a></span></dt><dt><span class="sect2"><a href="#id709407">20.3.2. Customizing popt aliases</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id1060350">20.4. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-command-reference">21. RPM Command Reference</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id1517792">21.1. The rpm Command</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id905751">21.1.1. Upgrade, freshen, and install options</a></span></dt><dt><span class="sect2"><a href="#id749420">21.1.2. Erase options</a></span></dt><dt><span class="sect2"><a href="#id544262">21.1.3. Signature options</a></span></dt><dt><span class="sect2"><a href="#id997393">21.1.4. Verify options</a></span></dt><dt><span class="sect2"><a href="#id781772">21.1.5. Database options</a></span></dt><dt><span class="sect2"><a href=
"#id813869">21.1.6. Miscellaneous options</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id834486">21.2. The rpmbuild Command</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id834498">21.2.1. Building from a spec file</a></span></dt><dt><span class="sect2"><a href="#id713607">21.2.2. Building from a compressed tar archive</a></span></dt><dt><span class="sect2"><a href="#id793068">21.2.3. Rebuilding RPMs from source RPMs</a></span></dt><dt><span class="sect2"><a href="#id1017414">21.2.4. Customizing the build</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#ch-specfile-syntax">22. Spec File Syntax</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id721322">22.1. Package Information Tags</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id850030">22.1.1. Comments</a></span></dt><dt><span class="sect2"><a href="#id805833">22.1.2. Build settings</a></span></dt><dt><span class="sect2"><a href="#id907162">22.1.3. Dependency
tags</a></span></dt><dt><span class="sect2"><a href="#id811951">22.1.4. Source files</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id715579">22.2. Macros</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id715590">22.2.1. Variable definition macros</a></span></dt><dt><span class="sect2"><a href="#id1023116">22.2.2. Conditional macros</a></span></dt><dt><span class="sect2"><a href="#id820744">22.2.3. Built-in macros</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id1030515">22.3. Build Sections</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id710341">22.3.1. Build preparation</a></span></dt><dt><span class="sect2"><a href="#id710362">22.3.2. Build</a></span></dt><dt><span class="sect2"><a href="#id693294">22.3.3. Installation</a></span></dt><dt><span class="sect2"><a href="#id693319">22.3.4. Clean up</a></span></dt><dt><span class="sect2"><a href="#id1019320">22.3.5. Install and uninstall scripts</a></span></dt></dl></dd><dt><span clas
s="sect1"><a href="#id685059">22.4. File Tags</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id808413">22.4.1. Making relocatable packages</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id808443">22.5. The Change Log</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-rpm-evolution">23. RPM Feature Evolution</a></span></dt><dt><span class="chapter"><a href="#ch-package-structure">24. RPM Package File Structure</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id928432">24.1. The Package File</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id751960">24.1.1. The file identifier</a></span></dt><dt><span class="sect2"><a href="#id930615">24.1.2. The signature</a></span></dt><dt><span class="sect2"><a href="#id776957">24.1.3. The header</a></span></dt><dt><span class="sect2"><a href="#id829253">24.1.4. The payload</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#ch-online-resources">25. RPM Resources</a></spa
n></dt><dd><dl><dt><span class="sect1"><a href="#id928446">25.1. Finding RPM Sites</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id729878">25.1.1. The main rpm.org site</a></span></dt><dt><span class="sect2"><a href="#id1016040">25.1.2. RPM locator sites</a></span></dt><dt><span class="sect2"><a href="#id721368">25.1.3. RPM tools sites</a></span></dt><dt><span class="sect2"><a href="#id997726">25.1.4. Programming sites</a></span></dt><dt><span class="sect2"><a href="#id689505">25.1.5. Sites related to RPM</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id856382">25.2. Accessing RPM Mailing Lists and Newsgroups</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-development-tools">26. Linux Text Editors and Development Tools</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id992155">26.1. General Text Editors</a></span></dt><dt><span class="sect1"><a href="#id1174069">26.2. Programming Text Editors</a></span></dt><dt><span class="sect
1"><a href="#id1141258">26.3. Integrated Development Environments for C Programming</a></span></dt><dt><span class="sect1"><a href="#id826810">26.4. Integrated Development Environments for Python Programming</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-licensing">27. Licensing RPM</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id678490">27.1. The GNU General Public License</a></span></dt></dl></dd><dt><span class="appendix"><a href="#appe-Publican-Revision_History">A. Revision History</a></span></dt><dt><span class="index"><a href="#id908662">Index</a></span></dt></dl></div><div xml:lang="en-US" class="preface" id="ch-intro-packaging" lang="en-US"><div class="titlepage"><div><div><h1 class="title">Introducing Package Management</h1></div></div></div><div class="para">
+ This book is a guide for using the RPM Package Manager. It is a work in progress to update Eric Foster-Johnson's original work.
+ </div></div></div></div><hr /></div><div class="toc"><dl><dt><span class="preface"><a href="#ch-intro-packaging">Introducing Package Management</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id827678">1. Installing, Removing, and Upgrading Applications</a></span></dt><dt><span class="sect1"><a href="#id755750">2. Overcoming the Installation Obstacles</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id864491">2.1. Application-level utilities</a></span></dt><dt><span class="sect2"><a href="#id699581">2.2. Built-in system utilities</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id570020">3. Linux Software Management Tools: Packages</a></span></dt><dt><span class="sect1"><a href="#id806257">4. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-intro-rpm">1. Introduction to RPM</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id567808">1.1. The Need for Linux Package Management Systems</a></span></dt><dt><span class="se
ct1"><a href="#id826684">1.2. RPM Design Goals</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id733174">1.2.1. Ease of use</a></span></dt><dt><span class="sect2"><a href="#id686691">1.2.2. Package-oriented focus</a></span></dt><dt><span class="sect2"><a href="#id686712">1.2.3. Package upgradability</a></span></dt><dt><span class="sect2"><a href="#id661695">1.2.4. Package interdependencies</a></span></dt><dt><span class="sect2"><a href="#id1037569">1.2.5. Query capabilities</a></span></dt><dt><span class="sect2"><a href="#id1037585">1.2.6. Package verification</a></span></dt><dt><span class="sect2"><a href="#id809828">1.2.7. Multiple architectures</a></span></dt><dt><span class="sect2"><a href="#id809840">1.2.8. Pristine sources</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id793238">1.3. RPM Terminology</a></span></dt><dt><span class="sect1"><a href="#id869034">1.4. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-rpm-overview">2
. RPM Overview</a></span></dt><dd><dl><dt><span class="section"><a href="#id615882">2.1. Understanding the Package File</a></span></dt><dd><dl><dt><span class="section"><a href="#id648919">2.1.1. RPM file format</a></span></dt><dt><span class="section"><a href="#id445138">2.1.2. Binary RPMs and Source RPMs</a></span></dt><dt><span class="section"><a href="#id792790">2.1.3. Source RPMs</a></span></dt></dl></dd><dt><span class="section"><a href="#id758773">2.2. Querying the RPM Database</a></span></dt><dt><span class="section"><a href="#id856826">2.3. Running RPM Commands</a></span></dt><dd><dl><dt><span class="section"><a href="#id665057">2.3.1. Working with the <code class="command">rpm</code> command</a></span></dt><dt><span class="section"><a href="#sect-RPM_Guide-RPM_Overview-Other_RPM_Commands">2.3.2. Other RPM commands</a></span></dt></dl></dd><dt><span class="section"><a href="#id674352">2.4. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-using
-rpm">3. Using RPM</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id549037">3.1. The <code class="command">rpm</code> Command</a></span></dt><dt><span class="sect1"><a href="#id600031">3.2. Upgrading and Installing Software</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id729611">3.2.1. Upgrading with the <code class="command">rpm</code> command</a></span></dt><dt><span class="sect2"><a href="#id565277">3.2.2. Upgrading packages</a></span></dt><dt><span class="sect2"><a href="#id775375">3.2.3. Freshening up</a></span></dt><dt><span class="sect2"><a href="#id555066">3.2.4. Installing Packages</a></span></dt><dt><span class="sect2"><a href="#id859488">3.2.5. Installing Over the Internet</a></span></dt><dt><span class="sect2"><a href="#id607008">3.2.6. Installing source RPMs</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id803435">3.3. Removing Software</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id888144">3.3.1. Checking that the pa
ckage has been removed</a></span></dt><dt><span class="sect2"><a href="#id753845">3.3.2. Removing multiple packages at a time</a></span></dt><dt><span class="sect2"><a href="#id636050">3.3.3. Options when removing packages</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id835062">3.4. Other <code class="command">rpm</code> Command Options</a></span></dt><dt><span class="sect1"><a href="#id815431">3.5. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-using-rpm-db">4. Using the RPM Database</a></span></dt><dd><dl><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-querying_database">4.1. Querying the RPM Database</a></span></dt><dd><dl><dt><span class="section"><a href="#id660300">4.1.1. Querying packages</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-query_everything">4.1.2. Querying everything</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-refining_query">4.1.3. Refining the query<
/a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-which_package">4.1.4. Finding which packages own files</a></span></dt></dl></dd><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-getting_information">4.2. Getting Information on Packages</a></span></dt><dd><dl><dt><span class="section"><a href="#RPM_Guide-USing_RPM_DB-getting_information-describing_packages">4.2.1. Describing packages</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-package_groups">4.2.2. Package groups</a></span></dt><dt><span class="section"><a href="#id744164">4.2.3. Listing the files in a package</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-listing_conf_files">4.2.4. Listing the configuration files for a package</a></span></dt><dt><span class="section"><a href="#id837662">4.2.5. Listing the documentation files for a package</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-file_state">4.2.6. Lis
ting the state of the files in a package</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-listing_scripts">4.2.7. Listing the scripts in a package</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Listing_changed">4.2.8. Listing what has changed</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Combining_queries">4.2.9. Combining queries</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Cusomt_queries">4.2.10. Creating custom queries</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Query_format_tags">4.2.11. Working With Query Format Tags</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Querying_for_package_information">4.2.12. Querying for Package Information</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Formatting_arrays">4.2.13. Formatting Arrays</a></span></dt><dt><span class="section"><a href="#RPM
_Guide-Using_RPM_DB-Special_formatting">4.2.14. Special Formatting</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-querying_pacakge_dependencies">4.2.15. Querying for Package Dependencies</a></span></dt><dt><span class="section"><a href="#RPM-Guide-Using_RPM_DB-Querying_file_information">4.2.16. Querying for File Information</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Other_Query_Format_Tags">4.2.17. Other Query Format Tags</a></span></dt></dl></dd><dt><span class="section"><a href="#id579849">4.3. Other queries</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Getting_information_on_package_files">4.4. Getting Information on Package Files</a></span></dt><dd><dl><dt><span class="section"><a href="#RPM_Guide_Using_RPM_DB-Querying_package_files_remotely">4.4.1. Querying Package Files Remotely</a></span></dt><dt><span class="section"><a href="#RPM-Guide-Using_RPM-DB-verifying_packages">4.4.2. Verify
ing Installed RPM Packages</a></span></dt><dt><span class="section"><a href="#RPM_GUide-Using_RPM_DB-working_with_RPM_db">4.4.3. Working With the RPM Database</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-summary">4.4.4. Summary</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#ch-dependencies">5. Package Dependencies</a></span></dt><dd><dl><dt><span class="section"><a href="#RPM_Guide-Dependencies-Understanding">5.1. Understanding the Dependency Concept</a></span></dt><dd><dl><dt><span class="section"><a href="#RPM_Guide-Dependencies-capabilities">5.1.1. Capabilities</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Dependencies-version_dependencies">5.1.2. Version dependencies</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Dependencies-conflicts">5.1.3. Conflicts</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Dependencies-obsoletes">5.1.4. Obsoletes</a></span></dt></dl></dd><dt><span cl
ass="section"><a href="#id599793">5.2. Checking for Dependencies</a></span></dt><dd><dl><dt><span class="section"><a href="#id666212">5.2.1. Determining the capabilities a package requires</a></span></dt><dt><span class="section"><a href="#id947903">5.2.2. Determining the capabilities a package provides</a></span></dt><dt><span class="section"><a href="#id1414118">5.2.3. Checking for conflicts</a></span></dt><dt><span class="section"><a href="#id1048593">5.2.4. Determining which packages require a certain capability</a></span></dt><dt><span class="section"><a href="#id687390">5.2.5. Determining which package provides a certain capability</a></span></dt></dl></dd><dt><span class="section"><a href="#id700137">5.3. Triggers</a></span></dt><dt><span class="section"><a href="#id832996">5.4. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-transactions">6. Transactions</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id442009">6.1. Understanding Tran
sactions</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id796977">6.1.1. When do you need transactions?</a></span></dt><dt><span class="sect2"><a href="#id796686">6.1.2. Backing out of transactions</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id702494">6.2. Transactions with the rpm Command</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id570504">6.2.1. Transaction IDs</a></span></dt><dt><span class="sect2"><a href="#id556457">6.2.2. Rolling Back Transactions</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id888070">6.3. Saving Old Packages</a></span></dt><dt><span class="sect1"><a href="#id690519">6.4. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-management-software">7. RPM Management Software</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id602809">7.1. Locating RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id648071">7.1.1. rpmfind and rpm2html</a></span></dt><dt><span class="
sect2"><a href="#id415358">7.1.2. RPM Sites On the Internet</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id673720">7.2. Graphical RPM Management</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id950609">7.2.1. Nautilus</a></span></dt><dt><span class="sect2"><a href="#id661371">7.2.2. Red Hat Package Management</a></span></dt><dt><span class="sect2"><a href="#id688872">7.2.3. KPackage</a></span></dt><dt><span class="sect2"><a href="#id1350995">7.2.4. Gnome-RPM</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id554289">7.3. Extending RPM Management</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id554876">7.3.1. AutoRPM</a></span></dt><dt><span class="sect2"><a href="#id603184">7.3.2. AutoUpdate</a></span></dt><dt><span class="sect2"><a href="#id586229">7.3.3. The Red Hat Network and up2date</a></span></dt><dt><span class="sect2"><a href="#id396386">7.3.4. Current</a></span></dt><dt><span class="sect2"><a href="#id383843">7.3.5. urpmi
and RpmDrake</a></span></dt><dt><span class="sect2"><a href="#id441878">7.3.6. apt-rpm</a></span></dt><dt><span class="sect2"><a href="#id659102">7.3.7. The poldek</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id706690">7.4. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-creating-rpms">8. Creating RPMs: An Overview</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id1431423">8.1. Preparing to Build RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id960036">8.1.1. Planning what you want to build</a></span></dt><dt><span class="sect2"><a href="#id748755">8.1.2. Gathering the software to package</a></span></dt><dt><span class="sect2"><a href="#id782000">8.1.3. Creating a reproducible build of the software</a></span></dt><dt><span class="sect2"><a href="#id733209">8.1.4. Planning for Upgrades</a></span></dt><dt><span class="sect2"><a href="#id599967">8.1.5. Outlining Any Dependencies</a></span></dt></dl></dd><dt><span cla
ss="sect1"><a href="#id581323">8.2. Building RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id694517">8.2.1. Setting up the directory structure</a></span></dt><dt><span class="sect2"><a href="#id936291">8.2.2. Placing your sources into the directory structure</a></span></dt><dt><span class="sect2"><a href="#id550242">8.2.3. Creating the spec file</a></span></dt><dt><span class="sect2"><a href="#id621866">8.2.4. Building RPMs with the rpmbuild command</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id667602">8.3. Verifying Your RPMS</a></span></dt><dt><span class="sect1"><a href="#id663503">8.4. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-specfiles">9. Working with Spec Files</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id710431">9.1. Reading Spec Files</a></span></dt><dt><span class="sect1"><a href="#id966090">9.2. Writing Spec Files</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id720793">9.2.1. Com
ments</a></span></dt><dt><span class="sect2"><a href="#id971264">9.2.2. Storing spec files on disk</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id819174">9.3. Defining Package Information</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id819192">9.3.1. Describing the package</a></span></dt><dt><span class="sect2"><a href="#id827452">9.3.2. Setting build locations</a></span></dt><dt><span class="sect2"><a href="#id566895">9.3.3. Naming source files</a></span></dt><dt><span class="sect2"><a href="#id766199">9.3.4. Naming patches</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id366540">9.4. Controlling the Build</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id853841">9.4.1. Preparing for the build</a></span></dt><dt><span class="sect2"><a href="#id835511">9.4.2. Building the software</a></span></dt><dt><span class="sect2"><a href="#id1101704">9.4.3. Installing the software</a></span></dt><dt><span class="sect2"><a href="#id886088">9
.4.4. Cleaning up after the build</a></span></dt><dt><span class="sect2"><a href="#id880531">9.4.5. Defining installation scripts</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id567418">9.5. Filling the List of Files</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id567773">9.5.1. Using wildcards</a></span></dt><dt><span class="sect2"><a href="#id567801">9.5.2. Naming directories of files</a></span></dt><dt><span class="sect2"><a href="#id748892">9.5.3. Marking files as documentation or configuration files</a></span></dt><dt><span class="sect2"><a href="#id732149">9.5.4. Setting file attributes</a></span></dt><dt><span class="sect2"><a href="#id626102">9.5.5. Verifying the %files section</a></span></dt><dt><span class="sect2"><a href="#id1554510">9.5.6. Filling the list of files automatically</a></span></dt><dt><span class="sect2"><a href="#id591104">9.5.7. Handling RPM build errors for unpackaged files</a></span></dt></dl></dd><dt><span class="sect1"><
a href="#id366143">9.6. Adding Change Log Entries</a></span></dt><dt><span class="sect1"><a href="#id753424">9.7. Defining Spec File Macros</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id753441">9.7.1. Built-in macros</a></span></dt><dt><span class="sect2"><a href="#id897256">9.7.2. Spec file-specific macros</a></span></dt><dt><span class="sect2"><a href="#id1139119">9.7.3. Defining new macros</a></span></dt><dt><span class="sect2"><a href="#id563096">9.7.4. Specifying parameters to macros</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id794088">9.8. Creating XML Spec Files</a></span></dt><dt><span class="sect1"><a href="#id381947">9.9. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-advanced-packaging">10. Advanced RPM Packaging</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id904419">10.1. Defining Package Dependencies</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id602123">10.1.1. Naming dependencies</a>
</span></dt><dt><span class="sect2"><a href="#id772312">10.1.2. Setting prerequisites</a></span></dt><dt><span class="sect2"><a href="#id1156893">10.1.3. Naming build dependencies</a></span></dt><dt><span class="sect2"><a href="#id781740">10.1.4. Generating dependencies automatically</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id772300">10.2. Setting Triggers</a></span></dt><dt><span class="sect1"><a href="#id353442">10.3. Writing Verification Scripts</a></span></dt><dt><span class="sect1"><a href="#id669566">10.4. Creating Subpackages</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id716573">10.4.1. Providing information for subpackages</a></span></dt><dt><span class="sect2"><a href="#id681695">10.4.2. Defining scripts for subpackages</a></span></dt><dt><span class="sect2"><a href="#id632118">10.4.3. Building subpackages</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id1048567">10.5. Creating Relocatable Packages</a></span></dt><dd><dl><d
t><span class="sect2"><a href="#id608160">10.5.1. Setting up the prefixes</a></span></dt><dt><span class="sect2"><a href="#id820769">10.5.2. Define the files section</a></span></dt><dt><span class="sect2"><a href="#id369985">10.5.3. Problems creating relocatable packages</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id576132">10.6. Defining Conditional Builds</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id1418879">10.6.1. Defining conditional macros</a></span></dt><dt><span class="sect2"><a href="#id819531">10.6.2. Using conditional blocks</a></span></dt><dt><span class="sect2"><a href="#id558195">10.6.3. Using architecture-based conditionals</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id1330331">10.7. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-rpmbuild">11. Controlling the Build with <code class="command">rpmbuild</code></a></span></dt><dd><dl><dt><span class="sect1"><a href="#id720337">11.1. Building RPMs
with the rpmbuild Command</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id662362">11.1.1. Customizing the build</a></span></dt><dt><span class="sect2"><a href="#id633814">11.1.2. Testing the build</a></span></dt><dt><span class="sect2"><a href="#id733502">11.1.3. Debugging the build</a></span></dt><dt><span class="sect2"><a href="#id641851">11.1.4. Cleaning up</a></span></dt><dt><span class="sect2"><a href="#id758699">11.1.5. Building for other platforms</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id587183">11.2. Building RPMs Without an External Spec File</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id587198">11.2.1. Options for working with tar archives</a></span></dt><dt><span class="sect2"><a href="#id862415">11.2.2. The expected archive structure</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id670401">11.3. Working with Source RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id583104">11.3.1. Rebuilding bi
nary RPMS from source RPMs</a></span></dt><dt><span class="sect2"><a href="#id763454">11.3.2. Recompiling binaries from source RPMs</a></span></dt><dt><span class="sect2"><a href="#id629038">11.3.3. SRPMS? Finding source RPMs</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id404520">11.4. Signing Built RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id404532">11.4.1. Checking that the GPG software is installed</a></span></dt><dt><span class="sect2"><a href="#id682973">11.4.2. Configuring a signature</a></span></dt><dt><span class="sect2"><a href="#id625668">11.4.3. Signing with the rpmbuild command</a></span></dt><dt><span class="sect2"><a href="#id960068">11.4.4. Signing with the rpm command</a></span></dt><dt><span class="sect2"><a href="#id674719">11.4.5. Verifying signatures</a></span></dt><dt><span class="sect2"><a href="#id739780">11.4.6. Importing public keys</a></span></dt><dt><span class="sect2"><a href="#id627464">11.4.7. Getting the Red Ha
t public key</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id718914">11.5. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-extra-packaging-tools">12. Supplemental Packaging Software</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id693194">12.1. Packaging Aids</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id706360">12.1.1. Using VIM spec plugins to improve spec file editing</a></span></dt><dt><span class="sect2"><a href="#id675329">12.1.2. Adding functions with emacs rpm-spec-mode</a></span></dt><dt><span class="sect2"><a href="#id592557">12.1.3. Validating and debugging spec files with rpmlint</a></span></dt><dt><span class="sect2"><a href="#id559265">12.1.4. Generating the %files section with RUST</a></span></dt><dt><span class="sect2"><a href="#id646375">12.1.5. setup.sh and MakeRPM.pl</a></span></dt><dt><span class="sect2"><a href="#id646438">12.1.6. Manipulating Package Files with rpm2cpio</a></span></dt></dl></dd
><dt><span class="sect1"><a href="#id745396">12.2. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-packaging-guidelines">13. Packaging Guidelines</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id574315">13.1. Avoiding Common Problems</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id696398">13.1.1. Scan the mailing lists</a></span></dt><dt><span class="sect2"><a href="#id655966">13.1.2. Use rpmbuild</a></span></dt><dt><span class="sect2"><a href="#id666383">13.1.3. Don’t try to defeat the system</a></span></dt><dt><span class="sect2"><a href="#id879029">13.1.4. Turn off automatic dependency generation</a></span></dt><dt><span class="sect2"><a href="#id785027">13.1.5. Don't list directories in %files</a></span></dt><dt><span class="sect2"><a href="#id570040">13.1.6. Handling circular dependencies</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id621316">13.2. Following Good Practices</a></span></dt><dd><dl><dt><span clas
s="sect2"><a href="#id602674">13.2.1. Preparation</a></span></dt><dt><span class="sect2"><a href="#id1030440">13.2.2. Building</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id671261">13.3. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-scripting">14. Automating RPM with Scripts</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id556420">14.1. Scripting</a></span></dt><dt><span class="sect1"><a href="#id807285">14.2. Distinguishing Scripting Languages from Programming Languages</a></span></dt><dt><span class="sect1"><a href="#id567739">14.3. Deciding When to Program and When to Script</a></span></dt><dt><span class="sect1"><a href="#id821846">14.4. Shell Scripting Basics</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id821862">14.4.1. Writing a script</a></span></dt><dt><span class="sect2"><a href="#id791982">14.4.2. Running a script</a></span></dt><dt><span class="sect2"><a href="#id767093">14.4.3. Problems running scrip
ts</a></span></dt><dt><span class="sect2"><a href="#id584040">14.4.4. Turning a script into a command</a></span></dt><dt><span class="sect2"><a href="#id379840">14.4.5. Passing command-line options to your script</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id746656">14.5. Examining RPM Files</a></span></dt><dt><span class="sect1"><a href="#id703556">14.6. Querying the RPM Database</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id733685">14.6.1. Querying for all packages installed at the same time</a></span></dt><dt><span class="sect2"><a href="#id1014501">14.6.2. Reading HTML documentation for a package</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id896296">14.7. Where to Go From Here</a></span></dt><dt><span class="sect1"><a href="#id685725">14.8. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-programming-c">15. Programming RPM with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id836788">15.1. Prog
ramming with the C Library</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id804092">15.1.1. Setting Up a C Programming Environment</a></span></dt><dt><span class="sect2"><a href="#id1029361">15.1.2. Setting Up the RPM Programming Environment</a></span></dt><dt><span class="sect2"><a href="#id757353">15.1.3. Using the RPM Library</a></span></dt><dt><span class="sect2"><a href="#id746779">15.1.4. Compiling and Linking RPM Programs</a></span></dt><dt><span class="sect2"><a href="#id693423">15.1.5. Getting information on your RPM environment</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id833616">15.2. The Power of popt</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id849360">15.2.1. Popt aliases</a></span></dt><dt><span class="sect2"><a href="#id664639">15.2.2. Programming with popt</a></span></dt><dt><span class="sect2"><a href="#id564210">15.2.3. Handling Errors</a></span></dt><dt><span class="sect2"><a href="#id872226">15.2.4. Running a popt
example</a></span></dt><dt><span class="sect2"><a href="#id1363825">15.2.5. Handling rpm command-line options</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id732667">15.3. Working with RPM Files</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id396476">15.3.1. Opening RPM files</a></span></dt><dt><span class="sect2"><a href="#id562605">15.3.2. Reading the RPM lead and signature</a></span></dt><dt><span class="sect2"><a href="#id657344">15.3.3. Reading header information</a></span></dt><dt><span class="sect2"><a href="#id620121">15.3.4. A shortcut to header information</a></span></dt><dt><span class="sect2"><a href="#id438095">15.3.5. Closing RPM files</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id438129">15.4. Programming with the RPM Database</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id585038">15.4.1. Database iterators</a></span></dt><dt><span class="sect2"><a href="#id690295">15.4.2. Dependency Sets</a></span></dt></dl><
/dd><dt><span class="sect1"><a href="#id600861">15.5. Comparing an RPM File to an Installed Package</a></span></dt><dt><span class="sect1"><a href="#id565252">15.6. Where to Go from Here</a></span></dt><dt><span class="sect1"><a href="#id660537">15.7. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-rpm-programming-python">16. Programming RPM with Python</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id393407">16.1. Setting Up a Python Development Environment</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id579991">16.1.1. Installing the base Python packages</a></span></dt><dt><span class="sect2"><a href="#id580208">16.1.2. Using Python for graphics</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id835916">16.2. The Python API Hierarchy</a></span></dt><dt><span class="sect1"><a href="#id813225">16.3. Programming with the RPM Database</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id625548">16.3.1. Accessing the
RPM database</a></span></dt><dt><span class="sect2"><a href="#id747127">16.3.2. Querying the RPM database</a></span></dt><dt><span class="sect2"><a href="#id676990">16.3.3. Examining the package header</a></span></dt><dt><span class="sect2"><a href="#id675905">16.3.4. Querying for specific packages</a></span></dt><dt><span class="sect2"><a href="#id784121">16.3.5. Printing information on packages</a></span></dt><dt><span class="sect2"><a href="#id567858">16.3.6. Refining queries</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id415931">16.4. Reading Package Files</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id415943">16.4.1. Reading headers from package files</a></span></dt><dt><span class="sect2"><a href="#id709134">16.4.2. Setting the verification flags</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id759372">16.5. Dependency Comparisons</a></span></dt><dt><span class="sect1"><a href="#id385219">16.6. Installing and Upgrading Packages</a>
</span></dt><dd><dl><dt><span class="sect2"><a href="#id708828">16.6.1. Building up the transaction set</a></span></dt><dt><span class="sect2"><a href="#id612178">16.6.2. Transaction elements</a></span></dt><dt><span class="sect2"><a href="#id405061">16.6.3. Checking and reordering the transaction elements</a></span></dt><dt><span class="sect2"><a href="#id733911">16.6.4. Running the transaction</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id574922">16.7. Where to Go from Here</a></span></dt><dt><span class="sect1"><a href="#id809900">16.8. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-programming-perl">17. Programming RPM with Perl</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id382049">17.1. Getting and Using the Perl RPM Modules</a></span></dt><dt><span class="sect1"><a href="#id607339">17.2. Working with RPM Files</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id600658">17.2.1. Opening package files</a></span><
/dt><dt><span class="sect2"><a href="#id438974">17.2.2. Listing tags from the package</a></span></dt><dt><span class="sect2"><a href="#id875749">17.2.3. Convenience methods</a></span></dt><dt><span class="sect2"><a href="#id875766">17.2.4. Listing the name and version</a></span></dt><dt><span class="sect2"><a href="#id877444">17.2.5. Checking whether the package is a source package</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id843962">17.3. Programming with the RPM Database</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id843977">17.3.1. Opening the database</a></span></dt><dt><span class="sect2"><a href="#id818422">17.3.2. Finding packages</a></span></dt><dt><span class="sect2"><a href="#id549058">17.3.3. Iterating over packages</a></span></dt><dt><span class="sect2"><a href="#id740209">17.3.4. Additional query subroutines</a></span></dt><dt><span class="sect2"><a href="#id780687">17.3.5. Getting information on packages</a></span></dt><dt><span clas
s="sect2"><a href="#id804821">17.3.6. Comparing versions</a></span></dt><dt><span class="sect2"><a href="#id680225">17.3.7. Closing the database</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id602711">17.4. Where to Go from Here</a></span></dt><dt><span class="sect1"><a href="#id700565">17.5. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-other-linuxes">18. Using RPM on Non-Red Hat Linuxes</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id636407">18.1. Troubleshooting RPM Installation Issues</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id676205">18.1.1. Dealing with RPM versions</a></span></dt><dt><span class="sect2"><a href="#id933810">18.1.2. Dealing with divisions of software into packages</a></span></dt><dt><span class="sect2"><a href="#id714978">18.1.3. Dealing with dependency issues</a></span></dt><dt><span class="sect2"><a href="#id795964">18.1.4. Dealing with install locations</a></span></dt><dt><span class="
sect2"><a href="#id594768">18.1.5. When all else fails, rebuild from the source package</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id594790">18.2. Handling Problems Building RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id594826">18.2.1. Writing distribution-specific packages</a></span></dt><dt><span class="sect2"><a href="#id593685">18.2.2. Dealing with automatic dependency generation</a></span></dt><dt><span class="sect2"><a href="#id606782">18.2.3. Dealing with different macros</a></span></dt><dt><span class="sect2"><a href="#id780947">18.2.4. Making relocatable packages</a></span></dt><dt><span class="sect2"><a href="#id754827">18.2.5. Creating an RPM build environment</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id888104">18.3. Dealing with Non-RPM-Based Linux Versions</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id888116">18.3.1. Handling non-RPM packages with alien</a></span></dt></dl></dd><dt><span class="sect
1"><a href="#id429430">18.4. Standardizing RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id420203">18.4.1. Filesystem Hierarchy Standard</a></span></dt><dt><span class="sect2"><a href="#id420231">18.4.2. RPM adoption</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id907495">18.5. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-other-os">19. RPM on Other Operating Systems</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id554173">19.1. Running RPM on Other Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id770339">19.1.1. Getting RPM for your system</a></span></dt><dt><span class="sect2"><a href="#id810077">19.1.2. Running RPM on Windows</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id971180">19.2. Bootstrapping RPM On Other Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id971199">19.2.1. Downloading the RPM software</a></span></dt><dt><span class="sec
t2"><a href="#id721350">19.2.2. Extracting the software</a></span></dt><dt><span class="sect2"><a href="#id616975">19.2.3. Reading the INSTALL file</a></span></dt><dt><span class="sect2"><a href="#id702383">19.2.4. Libraries required by RPM</a></span></dt><dt><span class="sect2"><a href="#id402582">19.2.5. Tools for building RPM</a></span></dt><dt><span class="sect2"><a href="#id1550298">19.2.6. Compiling RPM</a></span></dt><dt><span class="sect2"><a href="#id714627">19.2.7. Handling problems</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id674534">19.3. Setting Up the RPM System</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id674546">19.3.1. Setting up the RPM database</a></span></dt><dt><span class="sect2"><a href="#id1356535">19.3.2. Creating the RPM environment</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id826016">19.4. Creating Non-Linux RPMS</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id718509">19.4.1. Setting up a bui
ld environment</a></span></dt><dt><span class="sect2"><a href="#id628112">19.4.2. Cross-building packages</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id383009">19.5. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-customizing-rpm">20. Customizing RPM Behavior</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id751398">20.1. Customizing with RPM Macros</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id1424020">20.1.1. Defining macros</a></span></dt><dt><span class="sect2"><a href="#id760207">20.1.2. Customizing Macros</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id705464">20.2. Configuring RPM Settings</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id598593">20.2.1. Viewing the current settings</a></span></dt><dt><span class="sect2"><a href="#id615653">20.2.2. Locating the rpmrc files</a></span></dt><dt><span class="sect2"><a href="#id372166">20.2.3. Changing settings</a></span></dt></dl></dd><dt><
span class="sect1"><a href="#id855711">20.3. Adding Popt Aliases</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id556596">20.3.1. Defining aliases</a></span></dt><dt><span class="sect2"><a href="#id870402">20.3.2. Customizing popt aliases</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id901066">20.4. Summary</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-command-reference">21. RPM Command Reference</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id861001">21.1. The rpm Command</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id1136374">21.1.1. Upgrade, freshen, and install options</a></span></dt><dt><span class="sect2"><a href="#id1554488">21.1.2. Erase options</a></span></dt><dt><span class="sect2"><a href="#id1046804">21.1.3. Signature options</a></span></dt><dt><span class="sect2"><a href="#id554498">21.1.4. Verify options</a></span></dt><dt><span class="sect2"><a href="#id662021">21.1.5. Database options</a></span><
/dt><dt><span class="sect2"><a href="#id936099">21.1.6. Miscellaneous options</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id398290">21.2. The rpmbuild Command</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id398303">21.2.1. Building from a spec file</a></span></dt><dt><span class="sect2"><a href="#id1029392">21.2.2. Building from a compressed tar archive</a></span></dt><dt><span class="sect2"><a href="#id721888">21.2.3. Rebuilding RPMs from source RPMs</a></span></dt><dt><span class="sect2"><a href="#id561973">21.2.4. Customizing the build</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#ch-specfile-syntax">22. Spec File Syntax</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id787517">22.1. Package Information Tags</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id884553">22.1.1. Comments</a></span></dt><dt><span class="sect2"><a href="#id398650">22.1.2. Build settings</a></span></dt><dt><span class="sect2"><a
href="#id1040543">22.1.3. Dependency tags</a></span></dt><dt><span class="sect2"><a href="#id391275">22.1.4. Source files</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id823209">22.2. Macros</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id718056">22.2.1. Variable definition macros</a></span></dt><dt><span class="sect2"><a href="#id367679">22.2.2. Conditional macros</a></span></dt><dt><span class="sect2"><a href="#id606737">22.2.3. Built-in macros</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id694387">22.3. Build Sections</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id694406">22.3.1. Build preparation</a></span></dt><dt><span class="sect2"><a href="#id625066">22.3.2. Build</a></span></dt><dt><span class="sect2"><a href="#id830057">22.3.3. Installation</a></span></dt><dt><span class="sect2"><a href="#id830082">22.3.4. Clean up</a></span></dt><dt><span class="sect2"><a href="#id899357">22.3.5. Install and uninstall scripts</a></
span></dt></dl></dd><dt><span class="sect1"><a href="#id693527">22.4. File Tags</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id971816">22.4.1. Making relocatable packages</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id700833">22.5. The Change Log</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-rpm-evolution">23. RPM Feature Evolution</a></span></dt><dt><span class="chapter"><a href="#ch-package-structure">24. RPM Package File Structure</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id855346">24.1. The Package File</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id591613">24.1.1. The file identifier</a></span></dt><dt><span class="sect2"><a href="#id594066">24.1.2. The signature</a></span></dt><dt><span class="sect2"><a href="#id585675">24.1.3. The header</a></span></dt><dt><span class="sect2"><a href="#id964854">24.1.4. The payload</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#ch-online-res
ources">25. RPM Resources</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id856978">25.1. Finding RPM Sites</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id438936">25.1.1. The main rpm.org site</a></span></dt><dt><span class="sect2"><a href="#id417226">25.1.2. RPM locator sites</a></span></dt><dt><span class="sect2"><a href="#id879419">25.1.3. RPM tools sites</a></span></dt><dt><span class="sect2"><a href="#id864407">25.1.4. Programming sites</a></span></dt><dt><span class="sect2"><a href="#id741175">25.1.5. Sites related to RPM</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id741199">25.2. Accessing RPM Mailing Lists and Newsgroups</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-development-tools">26. Linux Text Editors and Development Tools</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id686662">26.1. General Text Editors</a></span></dt><dt><span class="sect1"><a href="#id656500">26.2. Programming Text Editors</a><
/span></dt><dt><span class="sect1"><a href="#id568868">26.3. Integrated Development Environments for C Programming</a></span></dt><dt><span class="sect1"><a href="#id592387">26.4. Integrated Development Environments for Python Programming</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch-licensing">27. Licensing RPM</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id589085">27.1. The GNU General Public License</a></span></dt></dl></dd><dt><span class="appendix"><a href="#appe-Publican-Revision_History">A. Revision History</a></span></dt><dt><span class="index"><a href="#id754751">Index</a></span></dt></dl></div><div xml:lang="en-US" class="preface" id="ch-intro-packaging" lang="en-US"><div class="titlepage"><div><div><h1 class="title">Introducing Package Management</h1></div></div></div><div class="para">
This chapter covers:
</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
Issues in software management
@@ -46,7 +46,7 @@
At that time, no full-featured PC operating systems were freely available, so he decided to write his own operating system. Today, that small hobby OS that Linus Torvalds started almost as a whim has become Linux, a significant new variant of Unix that runs millions of the world's network servers and, increasingly, desktop computers and embedded processors.
</div><div class="para">
Linux has grown up, successfully making the transition from a one-man personal project to a functional, full-featured operating system used by many of the world's major corporations and deployed on millions of corporate and personal systems. Along the way, Linux has had to address many of the same issues any new operating system must face. One of these concerns is how software for Linux, and how the Linux operating system itself, should be installed. How can administrators safely remove software packages without affecting other installed packages? And how can you safely upgrade packages? Answering these questions is what this book is all about.
- </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id810434" class="title">Installing, Removing, and Upgrading Applications</h1></div></div></div><div class="para">
+ </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id827678" class="title">Installing, Removing, and Upgrading Applications</h1></div></div></div><div class="para">
Applications for most operating systems consist of multiple files that must be copied to specific locations on the computer's file system before each application can be run. This is true for common PC operating systems such as MS-DOS or Microsoft Windows, as well as for Unix and Linux.
</div><div class="para">
In the case of a Unix-like operating system such as Linux, other issues must also be considered. Unix and Linux are multiple-user systems, so they must track ownership of files. Furthermore, Unix and Linux use a system of file permissions. Administrators can grant some users access to files and can control how users may access those files, for example, allowing some users the permission to read only certain files. Administrators can deny other users access to the same files. So, installation of an application on Linux requires consideration of all these details. After files are copied into their appropriate locations, they must be granted correct permissions and correct ownerships.
@@ -66,17 +66,17 @@
If you like the application you have installed, you will likely find yourself wanting to upgrade it eventually. The Apache Web server, for example, like any network service, must be upgraded whenever security problems are found and fixed. If you find that you need to upgrade Apache, you need to back up your Apache configuration files and then uninstall Apache. The next step is to install a new version of Apache, applying your Apache-configuration customizations to your new installation of Apache.
</div><div class="para">
All of this is a big pain. There has to be a better way. And there is.
- </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id972105" class="title">Overcoming the Installation Obstacles</h1></div></div></div><div class="para">
+ </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id755750" class="title">Overcoming the Installation Obstacles</h1></div></div></div><div class="para">
None of the tasks you must perform to install, upgrade, or uninstall applications are especially difficult. However, these steps quickly become daunting when you consider all the files that must be managed. A full Fedora installation provides around 3,000 executable commands and over 160,000 total files (some other Linux distributions are even larger!). Obviously, managing all these files by hand, although theoretically possible, is not technically feasible. On a smaller scale, even management of single applications is not practical. The Postfix e-mail server application, for example, consists of around 275 files scattered in a dozen or so different directories. Imagine trying to remember and manually remove all of those files (and only those files) to uninstall Postfix from your system!
</div><div class="para">
All the steps needed to manage software on Unix or Linux systems are hardly unique to Unix; all operating systems have similar procedures that must be followed to make software usable on the system. For this reason, many approaches have been adopted toward software installation, uninstallation, and upgrading.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id901336" class="title">Application-level utilities</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id864491" class="title">Application-level utilities</h1></div></div></div><div class="para">
Some operating systems, such as MS-DOS, have supplied absolutely no built-in tools for software management. Installation of applications on such systems occurs in one of two ways: software is installed manually, using file-copy utilities to put all the application files in the appropriate places on the system, or software is installed using a custom-written installation application (as is usually the case for MS-DOS applications).
</div><div class="para">
Once installed, software can be uninstalled in one of two ways: you can manually delete each file installed for the application (assuming you can even remember them all), or the application might come with a custom uninstallation utility that can be run to remove the application. Upgrading an already installed application on such a system uses a similar procedure. If the application comes with an installation utility capable of handling application upgrades, you can use the utility to perform the upgrade. Otherwise, the software must be manually upgraded using the procedure described previously.
</div><div class="note"><div class="admonition_header"><h2>Current Windows Versions</h2></div><div class="admonition"><div class="para">
Current versions of Windows, such as Windows XP, have a central database of installed applications.
- </div></div></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id553446" class="title">Built-in system utilities</h1></div></div></div><div class="para">
+ </div></div></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id699581" class="title">Built-in system utilities</h1></div></div></div><div class="para">
Other operating systems have come with built-in utilities that a system administrator can use to manage the system’s software. These utilities can be run to install the software on the system; typically, they take some of the work out of manually installing software, dealing with issues such as figuring out which files need to be put where on the system. Once installed, these utilities typically track the files that have been installed. This knowledge can usually be used to uninstall those applications automatically. Since the software knows which files are associated with the application, it can be told to uninstall the application, and it can find and delete all the files that belong to that application.
</div><div class="para">
These built-in utilities typically come in two different forms. One type focuses on managing the installation process, providing custom utilities that can be used to perform the otherwise manual tasks of compiling software and copying files into their final locations. The three major freely available Berkeley Unix, or BSD, operating systems, NetBSD, FreeBSD, and OpenBSD, for example, ship with a software-management system called, variously, ports (FreeBSD and OpenBSD) or packages (NetBSD).
@@ -90,7 +90,7 @@
To install software using the System V tools, you must compile the software. After compiling the software in the standard fashion, prepare a list of the files from that compilation that need to be installed on the system. Be certain to state where the files need to be installed and what permissions and ownerships they need to have once installed. Then run a series of commands that look at this list, find the files listed in it, and archive them into one file, along with a copy of this list that specifies where they should be installed and the ownerships and permissions. This single archive file can then be transferred to other machines, where a System V software-management command can be used to install it. This System V installation command (typically called <code class="command">pkgadd</code>) unpacks the archive, copies the files into their final destinations based on the enclosed listing, and sets permissions and ownerships on the files as specified by the listing. Fin
ally, this <code class="command">pkgadd</code> command registers the list of freshly installed files into a system-wide database of installed files.
</div><div class="para">
Such a system offers several advantages over manual software installation. Software can now be installed and uninstalled easily, and the system-wide database of installed files can be readily searched to locate installed applications and files. However, this sort of system also has severe limitations; it is far less flexible in the software-configuration stages than software such as the FreeBSD ports system, which offers great control over the software-compilation stage of software installation.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id813359" class="title">Linux Software Management Tools: Packages</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id570020" class="title">Linux Software Management Tools: Packages</h1></div></div></div><div class="para">
Initially, Linux had neither type of software-management tool. In the early days of Linux, you installed Linux by cross-compiling it under a different operating system (Minix), then manually installing the compiled Linux programs into the appropriate locations to produce a working system. As Linux has matured, however, it has acquired software-management tools that have made software installation, removal, and upgrade significantly easier than in the early days. The exact software-management tool used on modern Linux systems varies from distribution to distribution, but both approaches to system management can be found in the tools used by various distributions.
</div><div class="para">
The Gentoo Linux (<a href="http://www.gentoo.org/">http://www.gentoo.org/</a>) distribution, for example, uses a software-management system called Portage, which is very similar to the FreeBSD ports system. Like ports, Portage provides great control over software compilation and installation, providing a collection of scripts that automate much of the basic work of downloading and compiling software.
@@ -109,7 +109,7 @@
</div><div class="note"><div class="admonition_header"><h2>Change of Name</h2></div><div class="admonition"><div class="para">
RPM was originally called Red Hat Package Manager. After adoption by other Linux distributions, the name has changed to simply the RPM Package Manager. The RPM initials remain the same.
</div></div></div><div class="para">
- As the original name implies, RPM was developed by Red Hat, Inc., the major Linux distributor in the United States. Even though the original name seems to point to a Red Hat-only solution, most Linux distributions use the RPM software. The RPM software provides a foundation needed by Linux system administrators throughout the world. You can even use RPM on other operating systems, both Linux and non-Linux, as covered in <a class="xref" href="#ch-other-linuxes">Chapter 18, <em>Using RPM on Non-Red Hat Linuxes</em></a> and <a class="xref" href="#ch-other-os">Chapter 19, <em>RPM on Other Operating Systems</em></a>, respectively.
+ As the original name implies, RPM was developed by Red Hat, Inc., the major Linux distributor in the United States. Even though the original name seems to point to a Red Hat-only solution, many Linux distributions use the RPM software. The RPM software provides a foundation needed by Linux system administrators throughout the world. You can even use RPM on other operating systems, both Linux and non-Linux, as covered in <a class="xref" href="#ch-other-linuxes">Chapter 18, <em>Using RPM on Non-Red Hat Linuxes</em></a> and <a class="xref" href="#ch-other-os">Chapter 19, <em>RPM on Other Operating Systems</em></a>, respectively.
</div><div class="para">
The RPM system provides all of the features needed to manage applications, including a database of installed packages with their version numbers, the ability to install, remove, and update packages, and the ability to recompile an application from a source code RPM package.
</div><div class="para">
@@ -130,11 +130,11 @@
<a class="xref" href="#ch-management-software">Chapter 7, <em>RPM Management Software</em></a> introduces a host of tools that can help you find RPM packages as well as manage the packages on your system. This includes graphical interfaces on top of the RPM system and special Internet search sites devoted just to RPM packages.
</div></li></ol></div><div class="para">
Later chapters cover creating RPM packages, programming with RPM, and extending the functionality provided by the base RPM system.
- </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id814414" class="title">Summary</h1></div></div></div><div class="para">
+ </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id806257" class="title">Summary</h1></div></div></div><div class="para">
Modern operating systems have large complex sets of applications, resulting in thousands of files to keep track of for upgrades, installation, and removal of packages. All this complexity has lead Linux vendors to develop a variety of package-management tools.
</div><div class="para">
This chapter briefly introduced the RPM Package Manager, or RPM for short. The next chapter provides an overview of the RPM system, showing how all the parts fit together.
- </div></div></div><div xml:lang="en-US" class="chapter" id="ch-intro-rpm" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 1. Introduction to RPM</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#id522503">1.1. The Need for Linux Package Management Systems</a></span></dt><dt><span class="sect1"><a href="#id718986">1.2. RPM Design Goals</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id793788">1.2.1. Ease of use</a></span></dt><dt><span class="sect2"><a href="#id870384">1.2.2. Package-oriented focus</a></span></dt><dt><span class="sect2"><a href="#id777882">1.2.3. Package upgradability</a></span></dt><dt><span class="sect2"><a href="#id873517">1.2.4. Package interdependencies</a></span></dt><dt><span class="sect2"><a href="#id538212">1.2.5. Query capabilities</a></span></dt><dt><span class="sect2"><a href="#id562268">1.2.6. Package verification</a></span></dt><dt><span class="sect2"><a href="#id562280">1.2.7. Multi
ple architectures</a></span></dt><dt><span class="sect2"><a href="#id708872">1.2.8. Pristine sources</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id778473">1.3. RPM Terminology</a></span></dt><dt><span class="sect1"><a href="#id781148">1.4. Summary</a></span></dt></dl></div><div class="para">
+ </div></div></div><div xml:lang="en-US" class="chapter" id="ch-intro-rpm" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 1. Introduction to RPM</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#id567808">1.1. The Need for Linux Package Management Systems</a></span></dt><dt><span class="sect1"><a href="#id826684">1.2. RPM Design Goals</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id733174">1.2.1. Ease of use</a></span></dt><dt><span class="sect2"><a href="#id686691">1.2.2. Package-oriented focus</a></span></dt><dt><span class="sect2"><a href="#id686712">1.2.3. Package upgradability</a></span></dt><dt><span class="sect2"><a href="#id661695">1.2.4. Package interdependencies</a></span></dt><dt><span class="sect2"><a href="#id1037569">1.2.5. Query capabilities</a></span></dt><dt><span class="sect2"><a href="#id1037585">1.2.6. Package verification</a></span></dt><dt><span class="sect2"><a href="#id809828">1.2.7. Mul
tiple architectures</a></span></dt><dt><span class="sect2"><a href="#id809840">1.2.8. Pristine sources</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id793238">1.3. RPM Terminology</a></span></dt><dt><span class="sect1"><a href="#id869034">1.4. Summary</a></span></dt></dl></div><div class="para">
This chapter covers:
</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
Examining the history of package management
@@ -150,16 +150,16 @@
More recently, the RPM package file format has been adopted as the official standard for Linux as part of the Linux Standards Base, or LSB. Described at <a href="http://www.linuxbase.org/">http://www.linuxbase.org/</a>, the Linux Standards Base is an attempt to set a baseline that all Linux distributions should follow. The LSB has helped system administrators by providing some commonality across distributions, as in the location of certain files. The history of Linux package managers is largely intertwined with the history of Linux distributions.
</div><div class="para">
Strictly speaking, Linux refers to a single piece of software, the Unix-like kernel that Linus Torvalds and cohorts have scattered all over the Internet and have been developing since 1991. This Linux kernel is a marvelous piece of software, currently comprising over 3.7 million lines of freely-licensed source code and accompanying documentation. Together, these factors provide a fast, full-featured, stable operating system kernel for use on more than 30 different processor architectures, ranging from embedded systems such as watches and PDAs, to desktop and server systems, all the way up to mainframes and supercomputing clusters.
- </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id522503" class="title">The Need for Linux Package Management Systems</h1></div></div></div><div class="para">
+ </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id567808" class="title">The Need for Linux Package Management Systems</h1></div></div></div><div class="para">
Although Linux is an excellent core component of an operating system suitable for a wide variety of real-world applications, this Linux kernel by itself is not sufficient for accomplishing most tasks. The technical definition of exactly what constitutes an operating system is a matter of debate.
</div><div class="para">
Despite this controversy, it is clear that most users of Linux require both the Linux kernel and a large suite of accompanying software (a shared C library; traditional Unix utilities such as <code class="command">grep</code>, <code class="command">awk</code>, and <code class="command">sed</code>; an editor, such as <code class="command">vi</code>; a shell, such as the Bourne-Again <code class="command">bash</code> shell; and so forth) to complete the various tasks for which they typically employ Linux.
</div><div class="para">
- Users expect Linux to include server software such as the Apache Web server, desktop software such as the OpenOffice.org office productivity suite, and a host of other packages. In fact, most Linux users don’t make the distinction between the kernel (technically the only part that is Linux) and all the extra packages (technically “everything else”) that comes with a Linux distribution. Most users simply refer to the whole thing as “Linux.”
+ Users expect Linux to include server software such as the Apache Web server, desktop software such as the Libre Office productivity suite, and a host of other packages. In fact, most Linux users don’t make the distinction between the kernel (technically the only part that is Linux) and all the extra packages (technically “everything else”) that comes with a Linux distribution. Most users simply refer to the whole thing as “Linux.”
</div><div class="para">
Some Linux distributions include thousands of packages on six or more CD-ROMs. This situation alone cries out for effective package-management software. And this doesn’t include the extra packages that don’t come with Linux distributions but which organizations need to create an effective working environment.
</div><div class="para">
- Furthermore, the Linux kernel and these various software applications are typically made available by their developers in source code formats only, and they can be installed manually only after compiling them from source code.
+ Furthermore, the Linux kernel and these various software applications are sometimes made available by their developers only in source code formats, and they can be installed manually only after compiling them from source code.
</div><div class="para">
Most people do not have the technical skills necessary to cross-compile an entire operating system. Even if they do, they usually do not want to devote the time and effort required to bootstrap and compile an operating system just to be able to run Linux.
</div><div class="para">
@@ -172,7 +172,7 @@
The next logical step in distribution evolution was the development of more advanced tools to control what was installed. Several distributions independently developed the notion of application-level installation management. The developers of these distributions realized that Slackware and similar distributions were heading in the right direction, but simply had not made software management granular enough. Slackware allowed installation and uninstallation (after a fashion) of bundles of related applications, but what was really needed was installation and uninstallation on an application-by-application basis.
</div><div class="para">
In late 1993, Rik Faith, Doug Hoffman, and Kevin Martin began releasing the first public betas of the BOGUS Linux distribution. BOGUS was notable for the package management system (<code class="command">pms</code>) software that was used with it for installation and uninstallation of all software on an application-by-application basis. Shortly thereafter, in the summer of 1994, the first public betas of Red Hat Commercial Linux were released. Red Hat initially used Red Hat Software Program Packages (RPP) as the basis of its Linux distribution. Like <code class="command">pms</code>, RPP was a system-management tool that allowed for easy installation and uninstallation of applications. In late 1993, Ian Murdock founded the Debian Gnu/Linux distribution. He began seriously developing its <code class="command">dpkg</code> application-management software by the summer of 1994. Like <code class="command">pms</code> and RPP, <code class="command">dpkg</code> made it possible to m
anage each application on the system.
- </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id718986" class="title">RPM Design Goals</h1></div></div></div><div class="para">
+ </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id826684" class="title">RPM Design Goals</h1></div></div></div><div class="para">
All of these early system-management tools took a similar approach. They provided the capability to install an entire application with a single command, to track the files it put on the system, and to remove those files by using another single command. As the preponderance of multiple early tools suggests, this approach to system management was popular. All of these early tools, however, had numerous technical or practical deficiencies. Some tools were designed only for Linux on 32-bit Intel-compatible hardware, even though Linux by this point was already running on other CPUs in addition to the IA32 family. As Linux was spreading to multiple architectures, a package-management system that could produce packages for multiple architectures was needed. Other tools had technical flaws in how they prepared packages, making it difficult to verify that packages had been prepared correctly or to see exactly how the software was prepared.
</div><div class="para">
Because of these concerns, after their initial releases of RPP-based distributions, Red Hat looked closely at both their own RPP software and other software such as BOGUS's <code class="command">pms</code> software. Developers at Red Hat, particularly Marc Ewing and Erik Troan, set out to develop what they initially called the Red Hat Package Manager (RPM). Based on experiences with earlier Linux packaging software and knowledge about packaging tools used on other platforms, Red Hat had several design goals in mind when they developed RPM. These design points include the following features:
@@ -194,8 +194,8 @@
Use of pristine sources
</div></li></ul></div><div class="para">
The following sections demonstrate how Red Hat incorporated each of these design goals into RPM.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id793788" class="title">Ease of use</h1></div></div></div><div class="para">
- Perhaps the primary design goal for RPM is that it must be easy to use. Manual software installation has been the primary method of putting software onto Unix boxes for over 30 years now and has worked very well for those three decades. To offer a compelling reason to use the new software, RPM must be significantly easier to use than other Linux package-management tools. For that reason, most tasks that can be handled using RPM were designed to be carried out via a single command. For example, software installation using RPM requires a single command (<strong class="userinput"><code>rpm -U software_package</code></strong>), while manual software installation using older manual methods typically requires at least six steps to complete the same task:
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id733174" class="title">Ease of use</h1></div></div></div><div class="para">
+ Perhaps the primary design goal for RPM is that it must be easy to use. Manual software installation has been the primary method of putting software onto Unix boxes for over 30 years now and has worked very well for those three decades. To offer a compelling reason to use the new software, RPM must be significantly easier to use than other Linux package-management tools. For that reason, most tasks that can be handled using RPM were designed to be carried out via a single command. For example, software installation using RPM requires a single command (<strong class="userinput"><code>rpm -U <em class="replaceable"><code>software_package</code></em></code></strong>), while manual software installation using older manual methods typically requires at least six steps to complete the same task:
</div><div class="orderedlist"><ol><li class="listitem"><div class="para">
<code class="command">tar zxf <em class="replaceable"><code>software_package</code></em></code>
</div></li><li class="listitem"><div class="para">
@@ -210,15 +210,15 @@
<code class="command">make install</code>
</div></li></ol></div><div class="para">
Similarly, removal of applications installed using RPM requires a single command (<strong class="userinput"><code>rpm -e <em class="replaceable"><code>software_package</code></em></code></strong>); manual removal of an installed application requires that each file associated with that application be manually deleted.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id870384" class="title">Package-oriented focus</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id686691" class="title">Package-oriented focus</h1></div></div></div><div class="para">
Like its predecessors, RPM is intended to operate on a package level. Rather than operating on a single-file basis (as when you manually install software using Unix command-line tools like mv and cp) or on an entire system basis (as with many PC operating systems, which provide the ability to upgrade entire releases but not to upgrade individual components), RPM provides software that can manage hundreds or thousands of packages.
</div><div class="para">
Each package is a discrete bundle of related files and associated documentation and configuration information; typically, each package is a separate application. By focusing on the package as the managed unit, RPM makes installation and deletion of applications extremely straightforward.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id777882" class="title">Package upgradability</h1></div></div></div><div class="para">
- In addition to its package-oriented focus, RPM is designed to support upgrading packages. Once an application has been installed from an RPM package, a newer version of the same application can be installed using RPM. Doing so upgrades the existing application, removing its old files and replacing them with new files. In addition, however, RPM takes care to preserve any customizations that have been made to that application. The Apache Web server application, for example, is commonly installed on Linux machines that need the ability to serve Web pages.
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id686712" class="title">Package upgradability</h1></div></div></div><div class="para">
+ In addition to its package-oriented focus, RPM is designed to support upgrading packages. Once an application has been installed from an RPM package, a newer version of the same application can be installed using RPM. Doing so upgrades the existing application, removing its old files and replacing them with new files. In addition, RPM takes care to preserve any customizations that have been made to that application. The Apache Web server application, for example, is commonly installed on Linux machines that need the ability to serve Web pages.
</div><div class="para">
Apache's configuration information, which specifies things such as which files on the system should be made available as Web pages and who should be able to access those Web pages, is stored in a text file, typically <code class="filename">/etc/httpd/conf/httpd.conf</code>. Suppose Apache has been installed using RPM and that you have then customized <code class="filename">httpd.conf</code> to specify its configuration. If you upgrade Apache using RPM, as part of the upgrade procedure, the RPM application will take precautions to preserve the customizations you have made to the Apache configuration. In contrast, manual upgrades of applications often overwrite any existing configuration files, losing all site customizations the system administrator has made.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id873517" class="title">Package interdependencies</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id661695" class="title">Package interdependencies</h1></div></div></div><div class="para">
Software that manages the applications installed on the system on an application level (such as RPM) does have one potential drawback in comparison with system-wide software management systems (such as PC operating systems like Microsoft Windows or OS/2, which allow the entire system to be upgraded but do not generally allow individual components to be upgraded, added, or removed). Software applications often have interdependencies; some applications work only when other applications are installed.
</div><div class="para">
The Postfix and Sendmail mail transfer agent (MTA) applications that are commonly used on Linux boxes to serve e-mail, for example, can both be configured to require users to authenticate themselves (by submitting a correct user name and password) successfully before they can use the e-mail server. This feature is often used to prevent unauthorized access to the e-mail server, preventing unscrupulous advertisers from using the server as a tool to send unsolicited commercial e-mail (or UCE, popularly known as spam). For this optional feature of Postfix and Sendmail to work, however, additional software must be installed. Both applications use another application, Cyrus SASL, which provides the Simple Authentication and Security Layer (SASL) software that Postfix or Sendmail can use to check user names and passwords. In other words, Postfix and Sendmail depend on Cyrus SASL.
@@ -226,11 +226,11 @@
For system-wide software management systems, logical interdependencies between system components such as these are easy to track. All required components are included as part of the system, and upgrading the system upgrades all these components, ensuring that all can still interoperate. On Microsoft Windows 2000, IIS (the application used on Windows to serve Web pages) requires several other applications such as <code class="command">EventLog</code> (the Windows application that records system events, much like the Linux <code class="command">syslogd</code> and <code class="command">klogd</code> software) to be present. Since Windows is managed on a system level, not a package level, this dependency is guaranteed to be satisfied. On Linux systems using RPM, however, the situation is different. On Linux, for example, the Postfix application requires the <code class="command">syslogd</code> application, which records system events. However, RPM provides the flexibility to in
stall some applications but not install others or to uninstall others later. When you install Postfix, you have no guarantee that <code class="command">syslogd</code> is already installed. If <code class="command">syslogd</code> is not installed, Postfix will not work correctly.
</div><div class="para">
To avoid problems, Red Hat developers realized that RPMs must also track dependency information about what software they require for correct functionality, and that the RPM install and uninstall applications must use this dependency information. Because of dependencies, installing Postfix using RPM on a system without <code class="command">syslogd</code> installed generates a warning that <code class="command">syslogd</code> must also be installed. Similarly, attempting to uninstall <code class="command">syslogd</code> from a system that already has Postfix installed generates a warning that installed applications require the software that is being deleted. These warnings can be overridden if necessary, but by default RPM enforces these dependencies (refusing, for example, to let you uninstall <code class="command">syslogd</code> without also uninstalling applications that require it, such as Postfix), preventing you from accidentally breaking applications by inadvertently
uninstalling other software that they require to operate.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id538212" class="title">Query capabilities</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1037569" class="title">Query capabilities</h1></div></div></div><div class="para">
As part of its implementation, the RPM software maintains a database on the system of all packages that have been installed, and documenting which files those packages have installed on the system. RPM is designed to be queried easily, making it possible for you to search this database to determine what applications have been installed on the system and to see which packages have supplied each file on the system. This feature makes RPM-based systems extremely easy to use, since a single RPM command can be used to view all installed applications on the system.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id562268" class="title">Package verification</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1037585" class="title">Package verification</h1></div></div></div><div class="para">
RPM also maintains a variety of information about each installed file in this system database, such as what permissions each file should have and what size each file should be. Red Hat developers designed this database to be useful for software verification. Over time, installed software will fail to work for reasons as mundane as the system administrator setting incorrect permissions on files or as exotic as nuclear decay of one of the computer's atoms releasing an alpha particle that can affect the computer's memory, corrupting that bit of memory and causing errors. Although RPM cannot prevent all errors that cause installed software to fail (obviously, there's not a single thing any software can do to prevent nuclear decay), it can be used to eliminate common errors. When an application fails, you can use the RPM database to make sure that all files associated with that application still have correct Unix file permissions and that no files associated with that applicati
on have become altered or corrupted.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id562280" class="title">Multiple architectures</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id809828" class="title">Multiple architectures</h1></div></div></div><div class="para">
Most of the RPM design goals mentioned so far are intended primarily to ease the life of system administrators and others who regularly install, remove, and upgrade applications or who need to see what is installed or verify that installed applications have been installed correctly. Some of the design goals for RPM are intended primarily not for those sorts of users of RPM but for users who must prepare software to be installed using RPM.
</div><div class="para">
One of the major limitations of early Linux package management utilities was that they could produce packages suitable only for installation on one type of computer: those that used 32-bit Intel-compatible CPUs. By 1994, Linux was beginning to support other CPUs in addition to the originally supported Intel CPUs. (Initially, Digital's Alpha processor and Motorola's 68000 series of processors were among the first additional CPUs that Linux supported. These days, Linux supports dozens of CPU architectures.) This posed a problem for distribution developers such as Red Hat and Debian, and for application vendors who desired to package their software for use on Linux. Because the available packaging methods could not produce packages for multiple architectures, packagers making software for multiple CPUs had to do extra work to prepare their packages.
@@ -238,11 +238,11 @@
Furthermore, once the packagers had prepared packages, no method was available to indicate the architecture the packages targeted, making it difficult for end users to know on which machine types they could install the packages.
</div><div class="para">
Red Hat decided to overcome these limitations by incorporating architecture support into RPM, adding features so that the basic setup a packager performs to create a package could be leveraged to produce packages that would run on various CPUs, and so that end users could look at a package and immediately identify for which types of systems it was intended.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id708872" class="title">Pristine sources</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id809840" class="title">Pristine sources</h1></div></div></div><div class="para">
The BOGUS distribution's <code class="command">pms</code> packaging system introduced the use of pristine source code to prepare packages. With Red Hat's early RPP package system and other similar early efforts, software packagers would compile software manually, then run commands to produce a package of that compiled software. Any changes made to the application's original source code were not recorded and would have to be recreated by the next person to package that software. Furthermore, end users wanting to know what changes had been made to the software they were running had no method of accessing that information.
</div><div class="para">
With RPM, Red Hat developed a package system that produced two types of packages: binary and source. Binary packages are compiled software that can be installed and used. Source packages contain the source code for that software, along with a file documenting how that source code must be compiled to produce that binary package. This feature is probably the single most significant difference between modern Linux packaging software (such as RPM) and the packaging software used on other systems (such as the pkg format that commercial Unix systems use). Source packaging makes the job of software packager easier, since packagers can use old source packages as a reference when preparing new versions of those packages. Source packages are also convenient for the end user, because they make it easily possible to change options with which that software was compiled and to produce a new binary package that supports the features the user needs.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id778473" class="title">RPM Terminology</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id793238" class="title">RPM Terminology</h1></div></div></div><div class="para">
When working with RPM, understanding the package concept is key. RPM packages are provided as compressed archive files that contain one or more files, as well as instructions specifying installation information about those files, including the ownerships and permissions that should be applied to each file during installation. The instructions can also contain scripts to be run after installation or before uninstallation. These package files are extremely convenient; they provide a single file that can be easily transferred between machines for installation rather than having to transfer each file to be installed.
</div><div class="para">
To help in installation and management, all package files are labeled with highly identifiable names. Package files have four-part names, which typically look something like:
@@ -432,10 +432,10 @@
<a class="xref" href="#ch-using-rpm-db">Chapter 4, <em>Using the RPM Database</em></a> covers querying the RPM database in depth.
</div></div></div><div class="para">
I have three different versions installed on this system. Since I have multiple packages installed of the <code class="filename">kernel</code> software, I have to use the full package name (such as <code class="filename">kernel-2.6.32.11-99</code>) whenever I want to work with my installed <code class="filename">kernel</code> packages.
- </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id781148" class="title">Summary</h1></div></div></div><div class="para">
+ </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id869034" class="title">Summary</h1></div></div></div><div class="para">
The RPM system wasn’t created to solve some theoretical problem. Instead, it is the result of years of hard-won practical experience in trying to manage systems with a large number of applications. RPM builds upon older systems that were created to solve some of the problems faced by system administrators. RPM goes further, though, and tries to provide a complete package-management solution. This includes the ability to deal with wrinkles that Linux faces but that many other operating systems do not need to address.
</div><div class="para">
- For example, most other operating systems don’t support more than one or two processor architectures. Sun’s Solaris, for example, supports only the SPARC and Intel architectures. Linux supports these and more. Most other operating systems also don’t include nearly so many applications. From the OpenOffice.org office suite to the Apache Web server, Linux distributions are literally packed with applications. As a final point, most other operating systems provide mainly closed-source applications. Linux, on the other hand, includes thousands of open-source applications.
+ For example, most other operating systems don’t support more than one or two processor architectures. Sun’s Solaris, for example, supports only the SPARC and Intel architectures. Linux supports these and more. Most other operating systems also don’t include nearly so many applications. From the Libre Office suite to the Apache Web server, Linux distributions are packed with applications. As a final point, most other operating systems provide mainly closed-source applications. Linux, on the other hand, includes thousands of open-source applications.
</div><div class="para">
From the perspective of the organizations making Linux distributions, these wrinkles make Linux harder to manage. Luckily for end users, the solution to these problems helps make the RPM system better able to manage user systems:
</div><div class="orderedlist"><ol><li class="listitem"><div class="para">
@@ -450,7 +450,7 @@
Uses Pristine Sourcecode — The RPM system supports building RPM packages from a pristine set of sources. This means you can reproduce the commands required to build an application, improving quality.
</div></li></ol></div><div class="para">
This chapter introduced the RPM system and the history behind it. The next chapter delves into the RPM basics, including files, database, and commands.
- </div></div></div><div xml:lang="en-US" class="chapter" id="ch-rpm-overview" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 2. RPM Overview</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#id982290">2.1. Understanding the Package File</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id965527">2.1.1. RPM file format</a></span></dt><dt><span class="sect2"><a href="#id692241">2.1.2. Binary RPMs and Source RPMs</a></span></dt><dt><span class="sect2"><a href="#id861327">2.1.3. Source RPMs</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id755327">2.2. Querying the RPM Database</a></span></dt><dt><span class="sect1"><a href="#id700937">2.3. Running RPM Commands</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id806154">2.3.1. Working with the <code class="command">rpm</code> command</a></span></dt><dt><span class="sect2"><a href="#id861877">2.3.2. Other RPM commands</a></span></dt></dl></dd><dt><span
class="sect1"><a href="#id683559">2.4. Summary</a></span></dt></dl></div><div class="para">
+ </div></div></div><div xml:lang="en-US" class="chapter" id="ch-rpm-overview" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 2. RPM Overview</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#id615882">2.1. Understanding the Package File</a></span></dt><dd><dl><dt><span class="section"><a href="#id648919">2.1.1. RPM file format</a></span></dt><dt><span class="section"><a href="#id445138">2.1.2. Binary RPMs and Source RPMs</a></span></dt><dt><span class="section"><a href="#id792790">2.1.3. Source RPMs</a></span></dt></dl></dd><dt><span class="section"><a href="#id758773">2.2. Querying the RPM Database</a></span></dt><dt><span class="section"><a href="#id856826">2.3. Running RPM Commands</a></span></dt><dd><dl><dt><span class="section"><a href="#id665057">2.3.1. Working with the <code class="command">rpm</code> command</a></span></dt><dt><span class="section"><a href="#sect-RPM_Guide-RPM_Overview-Other_RPM_Commands">2.3.2.
Other RPM commands</a></span></dt></dl></dd><dt><span class="section"><a href="#id674352">2.4. Summary</a></span></dt></dl></div><div class="para">
This chapter covers:
</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
Understanding the package file
@@ -462,226 +462,226 @@
Working with RPM packages, files, commands, and databases can be complicated. There are thousands of files, for hundreds if not thousands of packages, installed on your system. You need some way to manage it all. The RPM system can help you do that.
</div><div class="para">
This chapter provides an overview of the components that make up the RPM system for package management: package files, databases, and RPM commands.
- </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id982290" class="title">Understanding the Package File</h1></div></div></div><div class="para">
- RPM provides for installing, upgrading and removing packages. Typically, each package is an application and all the necessary files associated with that application. For example, the Apache Web server comes with a number of configuration files, a large set of documentation files, and the Apache server itself. All of this fits into one RPM package.
- </div><div class="para">
- One of the main advantages of the RPM system is that each .rpm file holds a complete package. For example, the following file holds the <code class="filename">mlocate</code> package:
- </div><div class="para">
- <code class="filename">mlocate-0.22.2-2.i686.rpm</code>
- </div><div class="para">
- Based on the naming conventions discussed in <a class="xref" href="#ch-intro-rpm">Chapter 1, <em>Introduction to RPM</em></a>, this package represents <code class="filename">mlocate</code> package, version 0.22.2, second build of an RPM package, for i686 (Intel) architecture systems.
- </div><div class="para">
- With a single command, you can copy an .rpm file to another Linux system and install it, getting the complete contents of the package, or you can use other commands to remove or update the package.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id965527" class="title">RPM file format</h1></div></div></div><div class="para">
- RPM files hold a number of tagged data items and a payload, the files to install on your system. The tagged data items describe the package and can contain optional features. For example, the NAME tag holds the package name. The optional PRE tag holds a pre-installation script, a script that the rpm command runs prior to installing the files in the package payload.
- </div><div class="para">
- Under the covers, RPM package files contain four sections. The first is a leading identification area that marks the file as an RPM package (created with a particular version of the RPM system). The remaining sections are the signature, the tagged data (called the header), and the payload. Each of these sections has important information about the package, although the payload section contains the actual content of the package.
- </div><div class="variablelist"><dl><dt class="varlistentry"><span class="term">Signature</span></dt><dd><div class="para">
- The signature appears after the lead or identifier section, which marks the file as an RPM file. Like your signature when you sign a check, the RPM signature helps verify the integrity of the package. No, the signature doesn’t check for bugs in software applications. Instead, it ensures that you have downloaded a valid RPM archive.
+ </div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h2 class="title" id="id615882">2.1. Understanding the Package File</h2></div></div></div><div class="para">
+ RPM provides for installing, upgrading and removing packages. Typically, each package is an application and all the necessary files associated with that application. For example, the Apache Web server comes with a number of configuration files, a large set of documentation files, and the Apache server itself. All of this fits into one RPM package.
+ </div><div class="para">
+ One of the main advantages of the RPM system is that each .rpm file holds a complete package. For example, the following file holds the <code class="filename">mlocate</code> package:
+ </div><div class="para">
+ <code class="filename">mlocate-0.22.2-2.i686.rpm</code>
+ </div><div class="para">
+ Based on the naming conventions discussed in <a class="xref" href="#ch-intro-rpm">Chapter 1, <em>Introduction to RPM</em></a>, this package represents <code class="filename">mlocate</code> package, version 0.22.2, second build of an RPM package, for i686 (Intel) architecture systems.
+ </div><div class="para">
+ With a single command, you can copy an .rpm file to another Linux system and install it, getting the complete contents of the package, or you can use other commands to remove or update the package.
+ </div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="id648919">2.1.1. RPM file format</h3></div></div></div><div class="para">
+ RPM files hold a number of tagged data items and a payload, the files to install on your system. The tagged data items describe the package and can contain optional features. For example, the NAME tag holds the package name. The optional PRE tag holds a pre-installation script, a script that the rpm command runs prior to installing the files in the package payload.
+ </div><div class="para">
+ Under the covers, RPM package files contain four sections. The first is a leading identification area that marks the file as an RPM package (created with a particular version of the RPM system). The remaining sections are the signature, the tagged data (called the header), and the payload. Each of these sections has important information about the package, although the payload section contains the actual content of the package.
+ </div><div class="variablelist"><dl><dt class="varlistentry"><span class="term">Signature</span></dt><dd><div class="para">
+ The signature appears after the lead or identifier section, which marks the file as an RPM file. Like your signature when you sign a check, the RPM signature helps verify the integrity of the package. No, the signature doesn’t check for bugs in software applications. Instead, it ensures that you have downloaded a valid RPM archive.
+ </div><div class="para">
+ The signature works by performing a mathematical function on the header and archive sections of the file. The mathematical function can be an encryption process, such as PGP (Pretty Good Privacy), or a message digest in MD5 format.
+ </div></dd><dt class="varlistentry"><span class="term">Header</span></dt><dd><div class="para">
+ The header contains zero or more tagged blocks of data that pertain to the package. The header contains information such as copyright messages, version numbers, and package summaries.
+ </div></dd><dt class="varlistentry"><span class="term">Payload</span></dt><dd><div class="para">
+ The payload section contains the actual files used in the package. These files are installed when you install the package. To save space, data in the payload section is compressed in GNU <code class="command">gzip</code> format.
+ </div></dd></dl></div><div class="para">
+ Once uncompressed, the data is in <code class="command">cpio</code> format, which is how the <code class="command">rpm2cpio</code> command (introduced in <a class="xref" href="#sect-RPM_Guide-RPM_Overview-Other_RPM_Commands">Section 2.3.2, “Other RPM commands”</a> later in this chapter) can do its work.
+ </div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="id445138">2.1.2. Binary RPMs and Source RPMs</h3></div></div></div><div class="para">
+ There are two main types of RPM packages: binary (or applications) and source. A binary RPM has been compiled for a particular architecture. For example, the Apache Web server compiled for an Intel Pentium, or i686, architecture won’t work on a Sharp Zaurus, which runs an Intel ARM processor. To run on both systems, you would need two separate packages: one for the Pentium i686 and one for the ARM.
+ </div><div class="para">
+ In addition to binary RPMs, you can get source code RPMs. These RPMs are packages that provide the source code for other packages.
+ </div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h4 class="title" id="id590208">2.1.2.1. Binary RPMs</h4></div></div></div><div class="para">
+ Binary RPMs hold complete applications or libraries of functions compiled for a particular architecture. Most binary RPMs contain complete applications, such as the Apache Web server or the AbiWord word processor. These application binary RPMs usually depend on a number of system libraries which are, in turn, also provided by binary RPMs.
+ </div><div class="note"><div class="admonition_header"><h2>Finding More Software</h2></div><div class="admonition"><div class="para">
+ <a class="xref" href="#ch-management-software">Chapter 7, <em>RPM Management Software</em></a> covers a number of locations where you can find RPM applications galore. Your Linux installation CDs or DVDs are also a great source for applications. Most Linux distributions come with more applications than you can imagine using.
+ </div></div></div><div class="para">
+ Although most binary RPMs are complete applications, others provide libraries. For example, the Simple DirectMedia Layer library (SDL), which provides graphics for many games, can be packaged as an RPM file. A number of programs, mostly games, use this library for enhanced multimedia such as rich graphics. RPMs that provide libraries allow multiple applications to share the same library. Typically, the libraries are packaged into separate RPMs from the applications.
</div><div class="para">
- The signature works by performing a mathematical function on the header and archive sections of the file. The mathematical function can be an encryption process, such as PGP (Pretty Good Privacy), or a message digest in MD5 format.
- </div></dd><dt class="varlistentry"><span class="term">Header</span></dt><dd><div class="para">
- The header contains zero or more tagged blocks of data that pertain to the package. The header contains information such as copyright messages, version numbers, and package summaries.
- </div></dd><dt class="varlistentry"><span class="term">Payload</span></dt><dd><div class="para">
- The payload section contains the actual files used in the package. These files are installed when you install the package. To save space, data in the payload section is compressed in GNU <code class="command">gzip</code> format.
- </div></dd></dl></div><div class="para">
- Once uncompressed, the data is in <code class="command">cpio</code> format, which is how the <code class="command">rpm2cpio</code> command (introduced in the "Other RPM commands" section later in this chapter) can do its work.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id692241" class="title">Binary RPMs and Source RPMs</h1></div></div></div><div class="para">
- There are two main types of RPM packages: binary (or applications) and source. A binary RPM has been compiled for a particular architecture. For example, the Apache Web server compiled for an Intel Pentium, or i686, architecture won’t work on a Sharp Zaurus, which runs an Intel ARM processor. To run on both systems, you would need two separate packages: one for the Pentium i686 and one for the ARM.
- </div><div class="para">
- In addition to binary RPMs, you can get source code RPMs. These RPMs are packages that provide the source code for other packages.
- </div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id926324" class="title">Binary RPMs</h1></div></div></div><div class="para">
- Binary RPMs hold complete applications or libraries of functions compiled for a particular architecture. Most binary RPMs contain complete applications, such as the Apache Web server or the AbiWord word processor. These application binary RPMs usually depend on a number of system libraries which are, in turn, also provided by binary RPMs.
- </div><div class="note"><div class="admonition_header"><h2>Finding More Software</h2></div><div class="admonition"><div class="para">
- <a class="xref" href="#ch-management-software">Chapter 7, <em>RPM Management Software</em></a> covers a number of locations where you can find RPM applications galore. Your Linux installation CDs or DVDs are also a great source for applications. Most Linux distributions come with more applications than you can imagine using.
- </div></div></div><div class="para">
- Although most binary RPMs are complete applications, others provide libraries. For example, the Simple DirectMedia Layer library (SDL), which provides graphics for many games, can be packaged as an RPM file. A number of programs, mostly games, use this library for enhanced multimedia such as rich graphics. RPMs that provide libraries allow multiple applications to share the same library. Typically, the libraries are packaged into separate RPMs from the applications.
- </div><div class="para">
- In addition to binary RPMs that hold applications or libraries compiled for a particular architecture, RPM supports the concept of platform-independent binary RPMs. These platform-independent RPMs, called noarch as a shorted form of “no architecture” dependencies, provide applications or libraries that are not dependent on any platform. Applications written in Perl, Python, or other scripting languages often do not depend on code compiled for a particular architecture. In addition, compiled Java applications are usually free of platform dependencies.
- </div></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id861327" class="title">Source RPMs</h1></div></div></div><div class="para">
- The <code class="filename">mlocate</code> package, mentioned previously, contains the <code class="filename">mlocate</code> application used to search for files on the system. The source code used to create this application is stored in an <code class="filename">mlocate</code> source RPM, for example:
- </div><div class="para">
- <code class="filename">mlocate-0.22.2-2.src.rpm</code>
- </div><div class="para">
- By convention, source RPMs have a file name ending in .src.rpm.
- </div><div class="para">
- Source RPMs should contain all the commands, usually in scripts, necessary to recreate the binary RPM. Having a source RPM means that you can recreate the binary RPM at any time. This is a very important goal of the RPM system.
- </div><div class="note"><div class="admonition_header"><h2>Source RPMs and Open Source Licencing</h2></div><div class="admonition"><div class="para">
- Source RPMs have nothing to do with open-source software licenses. Linux is famous for being an open-source operating system. In RPM terms, that means the source code for the Linux kernel and most Linux applications are freely available as source RPMs. But you can also make source RPMs for proprietary programs. The key issue is that you are unlikely to distribute the source RPMs for proprietary packages.
+ In addition to binary RPMs that hold applications or libraries compiled for a particular architecture, RPM supports the concept of platform-independent binary RPMs. These platform-independent RPMs, called noarch as a shorted form of “no architecture” dependencies, provide applications or libraries that are not dependent on any platform. Applications written in Perl, Python, or other scripting languages often do not depend on code compiled for a particular architecture. In addition, compiled Java applications are usually free of platform dependencies.
+ </div></div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="id792790">2.1.3. Source RPMs</h3></div></div></div><div class="para">
+ The <code class="filename">mlocate</code> package, mentioned previously, contains the <code class="filename">mlocate</code> application used to search for files on the system. The source code used to create this application is stored in an <code class="filename">mlocate</code> source RPM, for example:
+ </div><div class="para">
+ <code class="filename">mlocate-0.22.2-2.src.rpm</code>
+ </div><div class="para">
+ By convention, source RPMs have a file name ending in .src.rpm.
+ </div><div class="para">
+ Source RPMs should contain all the commands, usually in scripts, necessary to recreate the binary RPM. Having a source RPM means that you can recreate the binary RPM at any time. This is a very important goal of the RPM system.
+ </div><div class="note"><div class="admonition_header"><h2>Source RPMs and Open Source Licencing</h2></div><div class="admonition"><div class="para">
+ Source RPMs have nothing to do with open-source software licenses. Linux is famous for being an open-source operating system. In RPM terms, that means the source code for the Linux kernel and most Linux applications are freely available as source RPMs. But you can also make source RPMs for proprietary programs. The key issue is that you are unlikely to distribute the source RPMs for proprietary packages.
+ </div><div class="para">
+ Furthermore, a number of open-source applications are not available as source RPMs. That's a shame, since source RPMs would make these applications easier to install.
+ </div></div></div><div class="para">
+ While source RPMs hold the commands necessary to create the binary RPM, there may be differences in your Linux environment that would result in rebuilding a binary RPM that is different from the original binary RPM. For example, the compile scripts for some packages may add in optional code depending on which libraries or which versions of libraries are found on your system. <a class="xref" href="#ch-packaging-guidelines">Chapter 13, <em>Packaging Guidelines</em></a> covers many issues in creating RPMs, and <a class="xref" href="#ch-other-linuxes">Chapter 18, <em>Using RPM on Non-Red Hat Linuxes</em></a> and <a class="xref" href="#ch-other-os">Chapter 19, <em>RPM on Other Operating Systems</em></a> cover issues related to other versions of Linux and other operating systems, respectively. If you follow the guidelines when making your own RPMs, you should result in source RPMs that reproduce binary RPMs as consistently as possible.
+ </div></div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h2 class="title" id="id758773">2.2. Querying the RPM Database</h2></div></div></div><div class="para">
+ The RPM database holds information about all the RPM packages installed on your system. You can use this database to query what is installed, to help determine if you have the latest versions of software, and to verify that your system is properly set up, at least from a packaging point of view.
</div><div class="para">
- Furthermore, a number of open-source applications are not available as source RPMs. That's a shame, since source RPMs would make these applications easier to install.
- </div></div></div><div class="para">
- While source RPMs hold the commands necessary to create the binary RPM, there may be differences in your Linux environment that would result in rebuilding a binary RPM that is different from the original binary RPM. For example, the compile scripts for some packages may add in optional code depending on which libraries or which versions of libraries are found on your system. <a class="xref" href="#ch-packaging-guidelines">Chapter 13, <em>Packaging Guidelines</em></a> covers many issues in creating RPMs, and <a class="xref" href="#ch-other-linuxes">Chapter 18, <em>Using RPM on Non-Red Hat Linuxes</em></a> and <a class="xref" href="#ch-other-os">Chapter 19, <em>RPM on Other Operating Systems</em></a> cover issues related to other versions of Linux and other operating systems, respectively. If you follow the guidelines when making your own RPMs, you should result in source RPMs that reproduce binary RPMs as consistently as possible.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id755327" class="title">Querying the RPM Database</h1></div></div></div><div class="para">
- The RPM database holds information about all the RPM packages installed on your system. You can use this database to query what is installed, to help determine if you have the latest versions of software, and to verify that your system is properly set up, at least from a packaging point of view.
- </div><div class="para">
- The RPM database itself is stored in the directory <code class="filename">/var/lib/rpm/</code>, and should contain files like the following:
- </div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
- <code class="filename">Basenames</code>
- </div></li><li class="listitem"><div class="para">
- <code class="filename">Conflictname</code>
- </div></li><li class="listitem"><div class="para">
- <code class="filename">__db.001</code>
- </div></li><li class="listitem"><div class="para">
- <code class="filename">__db.002</code>
- </div></li><li class="listitem"><div class="para">
- <code class="filename">__db.003</code>
- </div></li><li class="listitem"><div class="para">
- <code class="filename">Dirnames</code>
- </div></li><li class="listitem"><div class="para">
- <code class="filename">Filemd5s</code>
- </div></li><li class="listitem"><div class="para">
- <code class="filename">Group</code>
- </div></li><li class="listitem"><div class="para">
- <code class="filename">Installtid</code>
- </div></li><li class="listitem"><div class="para">
- <code class="filename">Name</code>
- </div></li><li class="listitem"><div class="para">
- <code class="filename">Packages</code>
- </div></li><li class="listitem"><div class="para">
- <code class="filename">Providename</code>
- </div></li><li class="listitem"><div class="para">
- <code class="filename">Provideversion</code>
- </div></li><li class="listitem"><div class="para">
- <code class="filename">Pubkeys</code>
- </div></li><li class="listitem"><div class="para">
- <code class="filename">Requirename</code>
- </div></li><li class="listitem"><div class="para">
- <code class="filename">Requireversion</code>
- </div></li><li class="listitem"><div class="para">
- <code class="filename">Sha1header</code>
- </div></li><li class="listitem"><div class="para">
- <code class="filename">Sigmd5</code>
- </div></li><li class="listitem"><div class="para">
- <code class="filename">Triggername</code>
- </div></li></ul></div><div class="note"><div class="admonition_header"><h2>The RPM Database</h2></div><div class="admonition"><div class="para">
- <a class="xref" href="#ch-using-rpm-db">Chapter 4, <em>Using the RPM Database</em></a> covers the database in more detail.
- </div></div></div><div class="para">
- These files make up the RPM database. The file <code class="filename">__db.001</code> and similar files are lock files used by the RPM system. The other files are databases in Berkeley DB format. The most important file is <code class="filename">Packages</code>. The <code class="filename">Packages</code> file contains the header tag information for each package indexed by an index number for each package. This number slowly grows with time.
- </div><div class="para">
- The other files, such as <code class="filename">Name</code>, <code class="filename">Providename</code>, and <code class="filename">Group</code>, exist to speed access to particular types of information. Treat your RPM database with care. Back up the files, especially after upgrading, installing, or removing packages.
- </div><div class="note"><div class="admonition_header"><h2>Recreating The RPM Database</h2></div><div class="admonition"><div class="para">
- Only the <code class="filename">Packages</code> file is essential. You can recreate the rest of the files using the <code class="command">rpm <code class="option">--rebuilddb</code></code> command, introduced in <a class="xref" href="#ch-using-rpm-db">Chapter 4, <em>Using the RPM Database</em></a>.
- </div></div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id700937" class="title">Running RPM Commands</h1></div></div></div><div class="para">
- The primary RPM command is simply <code class="command">rpm</code>. One of the original goals of the RPM system is providing ease of use. In support of this goal, just about everything you want to do with the RPM system can be done with this one command. For most usage, the command-line parameters to the <code class="command">rpm</code> command determine the actions it should take.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id806154" class="title">Working with the <code class="command">rpm</code> command</h1></div></div></div><div class="para">
- The <code class="command">rpm</code> command performs the most common package-management functions, along with a host of uncommon functions as well. The table below lists the main operations you can perform with the <code class="command">rpm</code> command and the command-line options to specify the given operations.
- </div><div class="table" id="tb-rpm-operations"><h6>Table 2.1. The main <code class="command">rpm</code> operations</h6><div class="table-contents"><table summary="The main rpm operations" border="1"><colgroup><col class="Operation" width="33%" /><col class="Short Option" width="33%" /><col class="Long Option" width="33%" /></colgroup><thead><tr><th>
- Operation
- </th><th>
- Short Option
- </th><th>
- Long Option
- </th></tr></thead><tbody><tr><td>
- Upgrade/install
- </td><td>
- -U
- </td><td>
- --upgrade
- </td></tr><tr><td>
- Install
- </td><td>
- -I
- </td><td>
- --install
- </td></tr><tr><td>
- Remove
- </td><td>
- -e
- </td><td>
- --erase
- </td></tr><tr><td>
- Query
- </td><td>
- -q
- </td><td>
- --query
- </td></tr><tr><td>
- Verify
- </td><td>
- -V
- </td><td>
- --verify
- </td></tr><tr><td>
- Check signature
- </td><td>
- -K
- </td><td>
- --checksig
- </td></tr><tr><td>
- Freshen (upgrade) already-installed package
- </td><td>
- -F
- </td><td>
- --freshen
- </td></tr><tr><td>
- Initialize database
- </td><td>
- None
- </td><td>
- --initdb
- </td></tr><tr><td>
- Rebuild database
- </td><td>
- None
- </td><td>
- --rebuilddb
- </td></tr></tbody></table></div></div><br class="table-break" /><div class="para">
- Using this table as a guide, you can explore the options to the <code class="command">rpm</code> command. To install or upgrade a package, use the <code class="option">-U</code> command-line option:
- </div><pre class="screen">
+ The RPM database itself is stored in the directory <code class="filename">/var/lib/rpm/</code>, and should contain files like the following:
+ </div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+ <code class="filename">Basenames</code>
+ </div></li><li class="listitem"><div class="para">
+ <code class="filename">Conflictname</code>
+ </div></li><li class="listitem"><div class="para">
+ <code class="filename">__db.001</code>
+ </div></li><li class="listitem"><div class="para">
+ <code class="filename">__db.002</code>
+ </div></li><li class="listitem"><div class="para">
+ <code class="filename">__db.003</code>
+ </div></li><li class="listitem"><div class="para">
+ <code class="filename">Dirnames</code>
+ </div></li><li class="listitem"><div class="para">
+ <code class="filename">Filemd5s</code>
+ </div></li><li class="listitem"><div class="para">
+ <code class="filename">Group</code>
+ </div></li><li class="listitem"><div class="para">
+ <code class="filename">Installtid</code>
+ </div></li><li class="listitem"><div class="para">
+ <code class="filename">Name</code>
+ </div></li><li class="listitem"><div class="para">
+ <code class="filename">Packages</code>
+ </div></li><li class="listitem"><div class="para">
+ <code class="filename">Providename</code>
+ </div></li><li class="listitem"><div class="para">
+ <code class="filename">Provideversion</code>
+ </div></li><li class="listitem"><div class="para">
+ <code class="filename">Pubkeys</code>
+ </div></li><li class="listitem"><div class="para">
+ <code class="filename">Requirename</code>
+ </div></li><li class="listitem"><div class="para">
+ <code class="filename">Requireversion</code>
+ </div></li><li class="listitem"><div class="para">
+ <code class="filename">Sha1header</code>
+ </div></li><li class="listitem"><div class="para">
+ <code class="filename">Sigmd5</code>
+ </div></li><li class="listitem"><div class="para">
+ <code class="filename">Triggername</code>
+ </div></li></ul></div><div class="note"><div class="admonition_header"><h2>The RPM Database</h2></div><div class="admonition"><div class="para">
+ <a class="xref" href="#ch-using-rpm-db">Chapter 4, <em>Using the RPM Database</em></a> covers the database in more detail.
+ </div></div></div><div class="para">
+ These files make up the RPM database. The file <code class="filename">__db.001</code> and similar files are lock files used by the RPM system. The other files are databases in Berkeley DB format. The most important file is <code class="filename">Packages</code>. The <code class="filename">Packages</code> file contains the header tag information for each package indexed by an index number for each package. This number slowly grows with time.
+ </div><div class="para">
+ The other files, such as <code class="filename">Name</code>, <code class="filename">Providename</code>, and <code class="filename">Group</code>, exist to speed access to particular types of information. Treat your RPM database with care. Back up the files, especially after upgrading, installing, or removing packages.
+ </div><div class="note"><div class="admonition_header"><h2>Recreating The RPM Database</h2></div><div class="admonition"><div class="para">
+ Only the <code class="filename">Packages</code> file is essential. You can recreate the rest of the files using the <code class="command">rpm <code class="option">--rebuilddb</code></code> command, introduced in <a class="xref" href="#ch-using-rpm-db">Chapter 4, <em>Using the RPM Database</em></a>.
+ </div></div></div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h2 class="title" id="id856826">2.3. Running RPM Commands</h2></div></div></div><div class="para">
+ The primary RPM command is simply <code class="command">rpm</code>. One of the original goals of the RPM system is providing ease of use. In support of this goal, just about everything you want to do with the RPM system can be done with this one command. For most usage, the command-line parameters to the <code class="command">rpm</code> command determine the actions it should take.
+ </div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="id665057">2.3.1. Working with the <code class="command">rpm</code> command</h3></div></div></div><div class="para">
+ The <code class="command">rpm</code> command performs the most common package-management functions, along with a host of uncommon functions as well. The table below lists the main operations you can perform with the <code class="command">rpm</code> command and the command-line options to specify the given operations.
+ </div><div class="table" id="tb-rpm-operations"><h6>Table 2.1. The main <code class="command">rpm</code> operations</h6><div class="table-contents"><table summary="The main rpm operations" border="1"><colgroup><col class="Operation" width="33%" /><col class="Short Option" width="33%" /><col class="Long Option" width="33%" /></colgroup><thead><tr><th>
+ Operation
+ </th><th>
+ Short Option
+ </th><th>
+ Long Option
+ </th></tr></thead><tbody><tr><td>
+ Upgrade/install
+ </td><td>
+ -U
+ </td><td>
+ --upgrade
+ </td></tr><tr><td>
+ Install
+ </td><td>
+ -I
+ </td><td>
+ --install
+ </td></tr><tr><td>
+ Remove
+ </td><td>
+ -e
+ </td><td>
+ --erase
+ </td></tr><tr><td>
+ Query
+ </td><td>
+ -q
+ </td><td>
+ --query
+ </td></tr><tr><td>
+ Verify
+ </td><td>
+ -V
+ </td><td>
+ --verify
+ </td></tr><tr><td>
+ Check signature
+ </td><td>
+ -K
+ </td><td>
+ --checksig
+ </td></tr><tr><td>
+ Freshen (upgrade) already-installed package
+ </td><td>
+ -F
+ </td><td>
+ --freshen
+ </td></tr><tr><td>
+ Initialize database
+ </td><td>
+ None
+ </td><td>
+ --initdb
+ </td></tr><tr><td>
+ Rebuild database
+ </td><td>
+ None
+ </td><td>
+ --rebuilddb
+ </td></tr></tbody></table></div></div><br class="table-break" /><div class="para">
+ Using this table as a guide, you can explore the options to the <code class="command">rpm</code> command. To install or upgrade a package, use the <code class="option">-U</code> command-line option:
+ </div><pre class="screen">
<strong class="userinput"><code>rpm -U <em class="replaceable"><code>filename.rpm</code></em></code></strong></pre><div class="para">
- For example, to install the <code class="filename">mlocate</code> RPM used as an example in this chapter, run the following command:
- </div><pre class="screen">
+ For example, to install the <code class="filename">mlocate</code> RPM used as an example in this chapter, run the following command:
+ </div><pre class="screen">
<strong class="userinput"><code>rpm -U <em class="replaceable"><code>mlocate-0.22.2-2.i686.rpm</code></em></code></strong></pre><div class="para">
- To get extra feedback, you can use a command like the following, with the <code class="option">-h</code> and <code class="option">-v</code> options in conjunction with the <code class="option">–U</code> option:
- </div><pre class="screen">
+ To get extra feedback, you can use a command like the following, with the <code class="option">-h</code> and <code class="option">-v</code> options in conjunction with the <code class="option">–U</code> option:
+ </div><pre class="screen">
<strong class="userinput"><code>rpm -Uhv <em class="replaceable"><code>mlocate-0.22.2-2.i686.rpm</code></em></code></strong></pre><div class="para">
- When you run this command you will see more output than the default, which is no output unless there are errors. With the <code class="option">–h</code> option, the <code class="command">rpm</code> command will print a series of hash marks, #, to provide feedback that the command is still running. With the <code class="option">–v</code> option, the <code class="command">rpm</code> command provides more verbose messages.
- </div><div class="note"><div class="admonition_header"><h2>Installing a Package</h2></div><div class="admonition"><div class="para">
- The most common command to install a package is:
- </div><pre class="screen">
+ When you run this command you will see more output than the default, which is no output unless there are errors. With the <code class="option">–h</code> option, the <code class="command">rpm</code> command will print a series of hash marks, #, to provide feedback that the command is still running. With the <code class="option">–v</code> option, the <code class="command">rpm</code> command provides more verbose messages.
+ </div><div class="note"><div class="admonition_header"><h2>Installing a Package</h2></div><div class="admonition"><div class="para">
+ The most common command to install a package is:
+ </div><pre class="screen">
<strong class="userinput"><code>rpm -Uhv <em class="replaceable"><code>package_file.rpm</code></em></code></strong></pre><div class="para">
- This command upgrades a package with extra output. If the package has not been installed, this command installs the package. See <a class="xref" href="#ch-using-rpm">Chapter 3, <em>Using RPM</em></a> for more on upgrading and installing.
- </div></div></div><div class="para">
- To remove a package (called erase in RPM terminology), use the <code class="option">–e</code> command-line option:
- </div><pre class="screen">
+ This command upgrades a package with extra output. If the package has not been installed, this command installs the package. See <a class="xref" href="#ch-using-rpm">Chapter 3, <em>Using RPM</em></a> for more on upgrading and installing.
+ </div></div></div><div class="para">
+ To remove a package (called erase in RPM terminology), use the <code class="option">–e</code> command-line option:
+ </div><pre class="screen">
<strong class="userinput"><code>rpm –e <em class="replaceable"><code>package_name</code></em></code></strong></pre><div class="note"><div class="admonition_header"><h2>Using File Extensions</h2></div><div class="admonition"><div class="para">
- Notice that you install a package file using the file name that ends in .rpm, but uninstall or erase a package without the .rpm extension. This is because you install RPM files, but once installed, you work with the installed packages. The file name and the package name do not have to correspond, but typically (and sanely) they have the same base name.
- </div></div></div><div class="para">
- To list every RPM package installed on your system, use a command like the following.
- </div><pre class="screen">
+ Notice that you install a package file using the file name that ends in .rpm, but uninstall or erase a package without the .rpm extension. This is because you install RPM files, but once installed, you work with the installed packages. The file name and the package name do not have to correspond, but typically (and sanely) they have the same base name.
+ </div></div></div><div class="para">
+ To list every RPM package installed on your system, use a command like the following.
+ </div><pre class="screen">
<strong class="userinput"><code>rpm –qa</code></strong></pre><div class="para">
- Expect to wait while this command completes. Most Linux systems have numerous packages installed, which will result in many lines of output. To better see the output, you can pipe this command to the more command, as shown following:
- </div><pre class="screen">
+ Expect to wait while this command completes. Most Linux systems have numerous packages installed, which will result in many lines of output. To better see the output, you can pipe this command to the more command, as shown following:
+ </div><pre class="screen">
<strong class="userinput"><code>rpm –qa | more</code></strong></pre><div class="para">
- You will then see the package listing one screen at a time.
- </div><div class="note"><div class="admonition_header"><h2><code class="command">rpm</code> Options</h2></div><div class="admonition"><div class="para">
- <a class="xref" href="#ch-command-reference">Chapter 21, <em>RPM Command Reference</em></a> lists all the options for the <code class="command">rpm</code> command.
- </div></div></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id861877" class="title">Other RPM commands</h1></div></div></div><div class="para">
- In addition to <code class="command">rpm</code>, the RPM system includes a few more commands, including <code class="command">rpmbuild</code> and <code class="command">rpm2cpio</code>.
- </div><div class="para">
- The <code class="command">rpmbuild</code> command helps build RPM packages. Its usage is discussed in depth in Part II of this book.
- </div><div class="para">
- The <code class="command">rpm2cpio</code> command exports an RPM package file into the format that the <code class="command">cpio</code> command expects. The <code class="filename">cpio</code> command works with many tape-backup packages. You can also take advantage of the fact that <code class="filename">cpio</code> can list the individual files in a <code class="filename">cpio</code> archive or extract files. To list the files in an RPM package, use a command like the following:
- </div><pre class="screen">
+ You will then see the package listing one screen at a time.
+ </div><div class="note"><div class="admonition_header"><h2><code class="command">rpm</code> Options</h2></div><div class="admonition"><div class="para">
+ <a class="xref" href="#ch-command-reference">Chapter 21, <em>RPM Command Reference</em></a> lists all the options for the <code class="command">rpm</code> command.
+ </div></div></div></div><div class="section" id="sect-RPM_Guide-RPM_Overview-Other_RPM_Commands"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="sect-RPM_Guide-RPM_Overview-Other_RPM_Commands">2.3.2. Other RPM commands</h3></div></div></div><div class="para">
+ In addition to <code class="command">rpm</code>, the RPM system includes a few more commands, including <code class="command">rpmbuild</code> and <code class="command">rpm2cpio</code>.
+ </div><div class="para">
+ The <code class="command">rpmbuild</code> command helps build RPM packages. Its usage is discussed in depth in Part II of this book.
+ </div><div class="para">
+ The <code class="command">rpm2cpio</code> command exports an RPM package file into the format that the <code class="command">cpio</code> command expects. The <code class="command">cpio</code> command works with many tape-backup packages. You can also take advantage of the fact that cpio can list the individual files in a cpio archive or extract files. To list the files in an RPM package, use a command like the following:
+ </div><pre class="screen">
<strong class="userinput"><code>rpm2cpio <em class="replaceable"><code>package_file.rpm</code></em> | cpio –t</code></strong></pre><div class="para">
- For example, the following command lists all the files in the <code class="filename">mlocate</code> package:
- </div><pre class="screen">
-<strong class="userinput"><code>rpm2cpio <em class="replaceable"><code>mlocate-0.22.2-2.i686.rpm</code></em> | cpio –t</code></strong></pre><div class="para">
- To display:
- </div><pre class="screen">
+ For example, the following command lists all the files in the <code class="filename">mlocate</code> package:
+ </div><pre class="screen">
+<strong class="userinput"><code>rpm2cpio mlocate-0.22.2-2.i686.rpm | cpio –t</code></strong></pre><div class="para">
+ To display:
+ </div><pre class="screen">
<code class="computeroutput"> ./etc/cron.daily/mlocate.cron ./etc/updatedb.conf ./usr/bin/locate ./usr/bin/updatedb ./usr/share/doc/mlocate-0.22.2 ./usr/share/doc/mlocate-0.22.2/AUTHORS ./usr/share/doc/mlocate-0.22.2/COPYING ./usr/share/doc/mlocate-0.22.2/NEWS ./usr/share/doc/mlocate-0.22.2/README ./usr/share/locale/bg/LC_MESSAGES/mlocate.mo ./usr/share/locale/ca/LC_MESSAGES/mlocate.mo ./usr/share/locale/cs/LC_MESSAGES/mlocate.mo ./usr/share/locale/da/LC_MESSAGES/mlocate.mo ./usr/share/locale/de/LC_MESSAGES/mlocate.mo ./usr/share/locale/es/LC_MESSAGES/mlocate.mo ./usr/share/locale/fr/LC_MESSAGES/mlocate.mo ./usr/share/locale/hu/LC_MESSAGES/mlocate.mo ./usr/share/locale/it/LC_MESSAGES/mlocate.mo ./usr/share/locale/ja/LC_MESSAGES/mlocate.mo ./usr/share/locale/ms/LC_MESSAGES/mlocate.mo ./usr/share/locale/nl/LC_MESSAGES/mlocate.mo ./usr/share/locale/pl/LC_MESSAGES/mlocate.mo ./usr/share/locale/pt/LC_MESSAGES/mlocate.mo ./usr/share/locale/pt_BR/LC_MESSAGES/mlocate.mo ./usr/share/
locale/sr/LC_MESSAGES/mlocate.mo ./usr/share/locale/sr(a)latin/LC_MESSAGES/mlocate.mo ./usr/share/locale/sv/LC_MESSAGES/mlocate.mo ./usr/share/locale/zh_CN/LC_MESSAGES/mlocate.mo ./usr/share/man/man1/locate.1.gz ./usr/share/man/man5/mlocate.db.5.gz ./usr/share/man/man5/updatedb.conf.5.gz ./usr/share/man/man8/updatedb.8.gz ./var/lib/mlocate 555 blocks </code></pre><div class="para">
- The <code class="command">rpm2cpio</code> command can also help if you want to extract a single file from the RPM package, using the <code class="command">cpio <code class="option">–ivd</code></code> command-line options, as follows:
- </div><pre class="screen">
- <strong class="userinput"><code>rpm2cpio <em class="replaceable"><code>mlocate-0.22.2-2.i686.rpm</code></em> | cpio –ivd <em class="replaceable"><code>usr/share/doc/mlocate-0.22.2/README</code></em></code></strong></pre><div class="para">
- This command will output local <code class="filename">usr/share/doc/mlocate-0.22.2/README</code> subdirectories and the <code class="filename">README</code> file located under <code class="filename">usr/share/doc/mlocate-0.22.2</code>.
- </div><div class="para">
- The <code class="option">–i</code> option tells <code class="command">cpio</code> to extract files. The <code class="option">–d</code> option tells <code class="command">cpio</code> to make any local subdirectories as needed (<code class="filename">usr/share/doc/mlocate-0.22.2</code>, in this example), and the <code class="option">–v</code> option asks <code class="command">cpio</code> to politely output verbose messages about what it does. Of course, verbose is in the eye of the beholder; with many Unix and Linux commands, verbose output is still somewhat terse.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id683559" class="title">Summary</h1></div></div></div><div class="para">
- The RPM files, the RPM database, and the RPM commands are the primary components that make up the RPM system. This chapter introduces you to the format and types of RPM files, the importance of maintaining the database, and the basic rpm command.
- </div><div class="para">
- The next chapter covers the most frequently used RPM commands. These commands allow you to install, uninstall, and update RPM packages.
- </div></div></div><div xml:lang="en-US" class="chapter" id="ch-using-rpm" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 3. Using RPM</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#id680504">3.1. The <code class="command">rpm</code> Command</a></span></dt><dt><span class="sect1"><a href="#id851767">3.2. Upgrading and Installing Software</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id712955">3.2.1. Upgrading with the <code class="command">rpm</code> command</a></span></dt><dt><span class="sect2"><a href="#id748014">3.2.2. Upgrading packages</a></span></dt><dt><span class="sect2"><a href="#id1019232">3.2.3. Freshening up</a></span></dt><dt><span class="sect2"><a href="#id785712">3.2.4. Installing Packages</a></span></dt><dt><span class="sect2"><a href="#id530836">3.2.5. Installing Over the Internet</a></span></dt><dt><span class="sect2"><a href="#id1180142">3.2.6. Installing source RPMs</a></span></dt></dl><
/dd><dt><span class="sect1"><a href="#id795289">3.3. Removing Software</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id886357">3.3.1. Checking that the package has been removed</a></span></dt><dt><span class="sect2"><a href="#id683119">3.3.2. Removing multiple packages at a time</a></span></dt><dt><span class="sect2"><a href="#id1163118">3.3.3. Options when removing packages</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id751084">3.4. Other <code class="command">rpm</code> Command Options</a></span></dt><dt><span class="sect1"><a href="#id808610">3.5. Summary</a></span></dt></dl></div><div class="para">
+ The <code class="command">rpm2cpio</code> command can also help if you want to extract a single file from the RPM package, using the <code class="command">cpio <code class="option">–ivd</code></code> command-line options, as follows:
+ </div><pre class="screen">
+ <strong class="userinput"><code>rpm2cpio mlocate-0.22.2-2.i686.rpm | cpio –ivd usr/share/doc/mlocate-0.22.2/README</code></strong></pre><div class="para">
+ This command will output local <code class="filename">usr/share/doc/mlocate-0.22.2/README</code> subdirectories and the <code class="filename">README</code> file located under <code class="filename">usr/share/doc/mlocate-0.22.2</code>.
+ </div><div class="para">
+ The <code class="option">–i</code> option tells <code class="command">cpio</code> to extract files. The <code class="option">–d</code> option tells <code class="command">cpio</code> to make any local subdirectories as needed (<code class="filename">usr/share/doc/mlocate-0.22.2</code>, in this example), and the <code class="option">–v</code> option asks <code class="command">cpio</code> to politely output verbose messages about what it does. Of course, verbose is in the eye of the beholder; with many Unix and Linux commands, verbose output is still somewhat terse.
+ </div></div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h2 class="title" id="id674352">2.4. Summary</h2></div></div></div><div class="para">
+ The RPM files, the RPM database, and the RPM commands are the primary components that make up the RPM system. This chapter introduces you to the format and types of RPM files, the importance of maintaining the database, and the basic rpm command.
+ </div><div class="para">
+ The next chapter covers the most frequently used RPM commands. These commands allow you to install, uninstall, and update RPM packages.
+ </div></div></div><div xml:lang="en-US" class="chapter" id="ch-using-rpm" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 3. Using RPM</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#id549037">3.1. The <code class="command">rpm</code> Command</a></span></dt><dt><span class="sect1"><a href="#id600031">3.2. Upgrading and Installing Software</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id729611">3.2.1. Upgrading with the <code class="command">rpm</code> command</a></span></dt><dt><span class="sect2"><a href="#id565277">3.2.2. Upgrading packages</a></span></dt><dt><span class="sect2"><a href="#id775375">3.2.3. Freshening up</a></span></dt><dt><span class="sect2"><a href="#id555066">3.2.4. Installing Packages</a></span></dt><dt><span class="sect2"><a href="#id859488">3.2.5. Installing Over the Internet</a></span></dt><dt><span class="sect2"><a href="#id607008">3.2.6. Installing source RPMs</a></span></dt></dl></
dd><dt><span class="sect1"><a href="#id803435">3.3. Removing Software</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id888144">3.3.1. Checking that the package has been removed</a></span></dt><dt><span class="sect2"><a href="#id753845">3.3.2. Removing multiple packages at a time</a></span></dt><dt><span class="sect2"><a href="#id636050">3.3.3. Options when removing packages</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id835062">3.4. Other <code class="command">rpm</code> Command Options</a></span></dt><dt><span class="sect1"><a href="#id815431">3.5. Summary</a></span></dt></dl></div><div class="para">
This chapter covers:
</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
Installing and upgrading software
@@ -691,9 +691,9 @@
This chapter covers the most common uses for RPM: installing, removing, and upgrading software. These are the most frequently used RPM commands.
</div><div class="para">
The RPM system includes the options you might expect, such as installing a package, but there’s a lot more you can do. For example, you can install packages from remote sites using HTTP or FTP to download the package to install. There are quite a few other <code class="command">rpm</code> options you can use to get information and feedback on installation, for example.
- </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id680504" class="title">The <code class="command">rpm</code> Command</h1></div></div></div><div class="para">
+ </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id549037" class="title">The <code class="command">rpm</code> Command</h1></div></div></div><div class="para">
Just about everything you do with RPM requires the <code class="command">rpm</code> command. As a nice added benefit, just about everything you do with RPM requires a single invocation of the <code class="command">rpm</code> command. That means common tasks such as installing and removing software can be done quickly and efficiently. The basics of the <code class="command">rpm</code> command are not very hard, and you can perform the basic tasks within a few minutes of reading this chapter.
- </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id851767" class="title">Upgrading and Installing Software</h1></div></div></div><div class="para">
+ </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id600031" class="title">Upgrading and Installing Software</h1></div></div></div><div class="para">
To install software, you need something to install. Typically, this is a file packaged as RPM, using a file-name extension of <code class="filename">rpm</code>. Of course, this isn’t required, but just about every RPM package is stored in a file with a <code class="filename">rpm</code> extension. For example, the following file holds an RPM package, ready to be installed:
</div><div class="para">
<code class="filename">jikes-1.16-1.i386.rpm</code>
@@ -717,7 +717,7 @@
An install operation installs a package for the first time. It also, through special command-line parameters, allows you to install multiple versions of a package, usually not what you want. So, in the vast majority of cases, you want to run the upgrade operation for all package installations.
</div></dd></dl></div><div class="para">
The following sections cover the command-line options that apply to these operations.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id712955" class="title">Upgrading with the <code class="command">rpm</code> command</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id729611" class="title">Upgrading with the <code class="command">rpm</code> command</h1></div></div></div><div class="para">
</div><div class="para">
Almost all installation steps use the <code class="command">rpm</code> command with the <code class="option">–U</code> option, short for upgrade, as introduced in <a class="xref" href="#ch-rpm-overview">Chapter 2, <em>RPM Overview</em></a> . The basic syntax is:
</div><div class="para">
@@ -740,7 +740,7 @@
This warning comes from the fact that the package was signed, but the key was not found. <a class="xref" href="#ch-rpmbuild">Chapter 11, <em>Controlling the Build with <code class="command">rpmbuild</code></em></a> covers signing packages. In most cases, warnings such as this one are not that serious. Errors, though, should be treated seriously.
</div><div class="note"><div class="admonition_header"><h2><code class="systemitem">root</code> Permissions</h2></div><div class="admonition"><div class="para">
Just about every package you want to upgrade or install requires <code class="systemitem">root</code>, or super user, permissions. That’s because most Linux application RPMs hold files that must be installed in a protected directory such as <code class="filename">/usr/bin/</code>. In addition, RPM requires root access to modify the RPM database. Even if you could modify the system directories like <code class="filename">/usr/bin/</code>, you must also be able to modify the RPM database to successfully install or remove packages.
- </div></div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1063929" class="title">Checking That the Package Is Installed</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id578012" class="title">Checking That the Package Is Installed</h1></div></div></div><div class="para">
Use the <code class="command">rpm –q</code> command to quickly verify a package has been installed. To verify, you need to use the name of the installed package, not the name of the RPM file. You can also use a partial package name, such as <code class="filename">jikes</code> in this case. For example:
</div><pre class="screen">
<strong class="userinput"><code>rpm –q <em class="replaceable"><code>jikes</code></em></code></strong></pre><div class="para">
@@ -754,7 +754,7 @@
</div><div class="para">
If the package has been not installed, you will see a message similar to the following:
</div><pre class="screen">
-<code class="computeroutput">package jikes is not installed</code></pre></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id714824" class="title">Getting Feedback During Installation and upgrades</h1></div></div></div><div class="para">
+<code class="computeroutput">package jikes is not installed</code></pre></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id676757" class="title">Getting Feedback During Installation and upgrades</h1></div></div></div><div class="para">
The <code class="option">-h</code> option to the <code class="command">rpm</code> command prints out # signs, also called hash marks (hence the <code class="option">-h</code>). These hash marks provide some confirmation that the <code class="command">rpm</code> command is still running. This is important, since large packages may take a long time to install or upgrade. Run this command like the following:
</div><pre class="screen">
<strong class="userinput"><code>rpm -Uh jikes-1.16-1.i386.rpm</code></strong></pre><div class="para">
@@ -797,7 +797,7 @@
These decimal numbers output by the <code class="option">--percent</code> option are really meant to be input into another program, perhaps a program that shows a graphical progress meter. Each number output then updates the meter.
</div><div class="note"><div class="admonition_header"><h2>Percentages may be Approximate</h2></div><div class="admonition"><div class="para">
Don't trust the numbers too much. Claiming the package is 53.139442 percent installed just asks the user to be skeptical that it is exactly that far.
- </div></div></div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id820644" class="title">The Installation Task In Detail</h1></div></div></div><div class="para">
+ </div></div></div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id804240" class="title">The Installation Task In Detail</h1></div></div></div><div class="para">
You can use the <code class="command">rpm –U</code> command or the <code class="command">rpm –i</code> command to install a package. When the <code class="command">rpm</code> command installs a package, it goes through a number of steps:
</div><div class="orderedlist"><ol><li class="listitem"><div class="para">
Checking the package and the files it wants to install
@@ -817,7 +817,7 @@
After the checks, the <code class="command">rpm</code> command executes the preinstallation tasks (covered in depth in Part II). After all this preparatory work, the <code class="command">rpm</code> command finally gets down to business and installs the files in the package. These files are stored in compressed format (compressed with <code class="command">gzip</code> compression) inside the RPM file.
</div><div class="para">
After installing the files, there may be some post-processing tasks (also covered in Part II). At the end of its run, the <code class="command">rpm</code> command updates the RPM database to reflect the new package information. This update is very important and allows you to track packages.
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id812398" class="title">Taking a Test Drive</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id770191" class="title">Taking a Test Drive</h1></div></div></div><div class="para">
The <code class="option">--test</code> command-line option tells the <code class="command">rpm</code> command to test the installation or upgrade process but not to install the file. For example, the following command performs an upgrade or install of the <code class="filename">jikes</code> package, but in test mode only. No files will actually be installed.
</div><pre class="screen">
<strong class="userinput"><code>rpm -U --test jikes-1.16-1.i386.rpm</code></strong></pre><div class="para">
@@ -864,7 +864,7 @@
</div><pre class="screen">
<code class="computeroutput">error: Failed dependencies: ruby-libs >= 1.6.4 is needed by eruby-libs-0.9.8-2 libruby.so.1.6 is needed by eruby-libs-0.9.8-2</code></pre><div class="para">
This short example shows why it makes sense to test packages prior to installing or upgrading them.
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id884566" class="title">Installing or upgrading More Than One Package At A Time</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id825377" class="title">Installing or upgrading More Than One Package At A Time</h1></div></div></div><div class="para">
Up to now, all the examples shown have used the <code class="command">rpm</code> command to install or upgrade one package at a time. You can optionally choose to install or upgrade a number of packages at the same time. Just list each file name on the <code class="command">rpm</code> command line. The basic syntax follows:
</div><pre class="screen">
<strong class="userinput"><code>rpm -U package1.rpm <em class="replaceable"><code>package2.rpm .. package100.rpm</code></em></code></strong></pre><div class="para">
@@ -874,7 +874,7 @@
This command installs two packages, the <code class="filename">aspell</code> packages for Canadian and British English, respectively.
</div><div class="para">
The <code class="option">--noorder</code> option tells the <code class="command">rpm</code> command not to reorder the packages you are trying to install. Usually, the <code class="command">rpm</code> command will reorder the list of packages in the best order for handling the dependencies. This option really only comes into play when you are installing more than one package where the packages depend on each other. In most cases, you do not want to use this option, since this may mean that packages fail to properly install because necessary packages are not already installed.
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id524279" class="title">Installing in Different Directories</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id617090" class="title">Installing in Different Directories</h1></div></div></div><div class="para">
The <code class="option">--prefix</code> and <code class="option">--relocate</code> options should make the <code class="command">rpm</code> command relocate a package to a new location. Not all packages allow relocations, though. The basic format of the command with the <code class="option">--prefix</code> option is:
</div><pre class="screen">
<strong class="userinput"><code>rpm -U --prefix <em class="replaceable"><code>/new/directory package.rpm</code></em></code></strong></pre><div class="para">
@@ -892,7 +892,7 @@
</div><pre class="screen">
<code class="computeroutput">error: Failed dependencies: ld-linux.so.2 is needed by jikes-1.16-1 libc.so.6 is needed by jikes-1.16-1 libm.so.6 is needed by jikes-1.16-1 libstdc++-libc6.2-2.so.3 is needed by jikes-1.16-1 libc.so.6(GLIBC_2.0) is needed by jikes-1.16-1 libc.so.6(GLIBC_2.1) is needed by jikes-1.16-1 libc.so.6(GLIBC_2.1.3) is needed by jikes-1.16-1</code></pre><div class="para">
You can use the <code class="option">--badreloc</code> option with the <code class="option">--relocate</code> option to permit relocations on all files in the package. Usually, only those paths to files that are listed as relocatable are supported by the <code class="option">--relocate</code> option.
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id912442" class="title">Forcing the Issue</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id633165" class="title">Forcing the Issue</h1></div></div></div><div class="para">
A number of <code class="command">rpm</code> options cause the <code class="command">rpm</code> command to complain about problems and, in general, fail to install your package. You can use a number of options to run roughshod over the RPM and get it to do what you want.
</div><div class="para">
The <code class="option">--replacepkgs</code> option tells the <code class="command">rpm</code> command to replace, or reinstall, packages it may have already installed.
@@ -940,7 +940,7 @@
In addition to forcing the <code class="command">rpm</code> command not to do certain things, you can use the <code class="option">--aid</code> option to have the <code class="command">rpm</code> command do something nice for you. The <code class="option">--aid</code> option tells the <code class="command">rpm</code> command to add all the packages it would suggest into the set of packages to install. The <code class="command">rpm</code> command has enough information to suggest a package or packages that ought to contain the dependent files.
</div><div class="para">
The <code class="option">--aid</code> option depends on a separate package that contains an RPM database with all packages installed. For Red Hat Linux, this package is <code class="filename">rpmdb-redhat</code>. This separate database, built as if all packages were installed (all packages that come with Red Hat Linux in this case), allows the <code class="command">rpm</code> command to search for which packages would solve dependencies.
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id908292" class="title">Skipping the Scripts</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1444146" class="title">Skipping the Scripts</h1></div></div></div><div class="para">
As part of the package installation, as well as removal, the RPM package may have scripts that the <code class="command">rpm</code> command should run. These include pre- and post-installation scripts, as well as pre- and post-uninstallation scripts. These scripts can perform options such as automatically configuring the application based on the target environment. For example, an installation script may try to detect whether a site uses Postfix or Sendmail for transferring mail messages and configure the newly-installed package accordingly.
</div><div class="para">
In most cases, the <code class="command">rpm</code> command will execute these scripts at the proper time, unless you explicitly turn the command to skip the scripts. The <code class="option">--noscripts</code> option tells the <code class="command">rpm</code> command to skip running the pre- and post-installation scripts.
@@ -1062,7 +1062,7 @@
Skip all the triggers; same as <code class="option">--notriggerin</code>, <code class="option">--notriggerun</code>, and <code class="option">--notriggerpostun</code>.
</div>
- </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id680823" class="title">Ignorance Is Bliss</h1></div></div></div><div class="para">
+ </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id820081" class="title">Ignorance Is Bliss</h1></div></div></div><div class="para">
The <code class="command">rpm</code> command supports several ignore options that tell the command to ignore some aspect of a package it would normally complain about.
</div><div class="para">
The <code class="option">--ignorearch</code> option tells the <code class="command">rpm</code> command to ignore the architecture of the package and install the package, even if the architecture of the package and the architecture of your system do not match. This is a very dangerous option. Linux runs on everything from tiny wristwatches, PDAs such as the Sharp Zaurus, PCs, Macintosh PCs, RISC servers, and all the way up to huge supercomputers and mainframes. If you try to install a binary package compiled for the ARM or PowerPC processor on an Intel-architecture Linux system, the package will at best fail. At worst, it may damage parts of your system.
@@ -1078,11 +1078,11 @@
The <code class="option">--nosignature</code> option tells the <code class="command">rpm</code> command to skip the test of the digest, the encrypted key, that helps also verify the package correctness.
</div><div class="warning"><div class="admonition_header"><h2>Unsafe Options</h2></div><div class="admonition"><div class="para">
Use these <code class="command">rpm</code> command-line options with extreme care and only after carefully considering the circumstances. Wrongful use of these options may damage your operating system.
- </div></div></div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id756706" class="title">Documentation? What Documentation?</h1></div></div></div><div class="para">
+ </div></div></div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id678291" class="title">Documentation? What Documentation?</h1></div></div></div><div class="para">
The <code class="option">--excludedocs</code> command-line option tells the <code class="command">rpm</code> command to ignore any files in the RPM package that are marked as documentation. Considering the general lack of documentation for many Linux applications, you are really asking for trouble by invoking this option. If the documentation takes up a lot of disk space, however, you may want to avoid installing documentation files. This is about the only situation in which this option makes sense.
</div><div class="para">
In reverse of <code class="option">--excludedocs</code>, the <code class="option">--includedocs</code> command-line parameter tells the <code class="command">rpm</code> command to install documentation. This is usually the default, so you rarely need this option.
- </div></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id748014" class="title">Upgrading packages</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id565277" class="title">Upgrading packages</h1></div></div></div><div class="para">
The <code class="command">rpm</code> <code class="option">–U</code> command works for both installation of new packages and for upgrading. When you get beyond simple installations, you begin to see the power of the RPM system where most operations require just one command. The <code class="command">rpm -U</code> command is a very powerful tool and performs some complex operations with just one command. For example, the following commands show the sequence for upgrading the <code class="filename">jpilot</code> package, which is used for Palm PDA synchronization.
</div><pre class="screen">
<strong class="userinput"><code># rpm -q jpilot</code></strong></pre><pre class="screen">
@@ -1090,7 +1090,7 @@
<strong class="userinput"><code># rpm -U jpilot-0.99.2-8.i386.rpm # rpm -q jpilot</code></strong></pre><pre class="screen">
<code class="computeroutput">jpilot-0.99.2-8</code></pre><div class="para">
Note that the old version of the <code class="filename">jpilot</code> package is no longer installed. The <code class="command">rpm -U</code> command removed that package.
- </div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id948555" class="title">Options When Upgrading</h1></div></div></div><div class="para">
+ </div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id405496" class="title">Options When Upgrading</h1></div></div></div><div class="para">
You can pass more than one package name on the command line when upgrading. In addition, you can use the installation and upgrade options discussed previously when upgrading.
</div><div class="note"><div class="admonition_header"><h2>Uninstallation Scripts</h2></div><div class="admonition"><div class="para">
When upgrading, the <code class="option">--noscripts</code> option only turns off the scripts from the new package. If an old package is removed, the uninstallation scripts for the old package still get executed.
@@ -1103,7 +1103,7 @@
Upgrading and freshening depend on versions of a particular package keeping the same base package name between versions. For most packages this is true, but some packages violate this convention. For example, the Java programming developer's kit (JDK) uses the name <code class="filename">jdk-1.3.1_01.i386.rpm</code> for the 1.3.1 version but changes to <code class="filename">j2sdk-1_4_0_01-fcs-linux-i386.rpm</code> for the 1.4.0 version.
</div></div></div><div class="para">
Watch out for package-name changes like this.
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id683565" class="title">Smart Upgrades</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id741121" class="title">Smart Upgrades</h1></div></div></div><div class="para">
The <code class="command">rpm</code> command really shines in the upgrade process. Not only can you upgrade a package with one simple command, but the <code class="command">rpm</code> command has some built-in smarts that really help.
</div><div class="para">
When upgrading, the <code class="command">rpm</code> command checks each file in the package. It actually compares checksums of the files. An MD5 checksum is a small value computed from the data in a file. Any change to a file results in a different checksum value.
@@ -1120,14 +1120,14 @@
</div><div class="para">
If the RPM package uses the option <code class="command">%config(noreplace)</code> with the file, then the <code class="command">rpm</code> command will store the new file with a <code class="filename">rpm</code>new extension if you have modified the file on disk.
</div><div class="para">
- </div></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1019232" class="title">Freshening up</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id775375" class="title">Freshening up</h1></div></div></div><div class="para">
A freshen operation means to install a new version of a package only if you have already installed another version of the package. Thus, a freshen operation is very similar to the upgrade operation except that a freshen requires you to have previously installed the package, while an upgrade can install a package for the first time. The basic syntax for freshening a package is to use the <code class="option">-F</code> option.
</div><pre class="screen">
<strong class="userinput"><code>rpm -F <em class="replaceable"><code>package_name</code></em></code></strong></pre><div class="para">
You can also use the <code class="option">--freshen</code> long option in place of <code class="option">-F</code>.
</div><div class="para">
As with upgrading, the options to the <code class="command">rpm</code> command are the same, except for the <code class="option">-F</code> or <code class="option">--freshen</code> option that indicates the operation. These are the options discussed in the sections on upgrading and installing software.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id785712" class="title">Installing Packages</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id555066" class="title">Installing Packages</h1></div></div></div><div class="para">
The <code class="option">–i</code> or <code class="option">--install</code> option tells the <code class="command">rpm</code> command to run an installation operation, which, as you’d suspect, installs packages. The basic syntax is:
</div><pre class="screen">
<strong class="userinput"><code>rpm –i <em class="replaceable"><code>filename.rpm</code></em></code></strong></pre><div class="para">
@@ -1138,13 +1138,13 @@
</div></div></div><div class="para">
The <code class="command">rpm –i</code> command works with the installation options discussed previously. The <code class="option">–U</code>, <code class="option">-F</code> and <code class="option">–i</code> options all accept mostly the same options, except as discussed previously.
</div><div class="para">
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id530836" class="title">Installing Over the Internet</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id859488" class="title">Installing Over the Internet</h1></div></div></div><div class="para">
All the commands to install packages covered so far assume that you have a local RPM file that you want to install. This is by far the most common case, but you can also use the <code class="command">rpm</code> command to install packages available on a network. With the <code class="command">rpm</code> command, you can get the packages to install by using the FTP or HTTP network protocols.
</div><div class="para">
With the File Transfer Protocol (FTP), the <code class="command">rpm</code> command connects to an FTP file server, downloads the named package, and installs that package. With the HyperText Transfer Protocol (HTTP) used for Web pages, the <code class="command">rpm</code> command connects to a Web server, downloads the named package, and installs that package.
</div><div class="warning"><div class="admonition_header"><h2>Name Spoofing</h2></div><div class="admonition"><div class="para">
When using either FTP or HTTP, you need to provide the name of the remote server. An attack on your system can compromise the system of converting server host names into network addresses, thus spoofing the <code class="command">rpm</code> command into installing a malicious package from the wrong host.
- </div></div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id682033" class="title">Installing Using FTP</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id422276" class="title">Installing Using FTP</h1></div></div></div><div class="para">
The key to making the network protocols work with the <code class="command">rpm</code> command is that you need to create a URL for the remote file name. The basic format of the command follows:
</div><pre class="screen">
<strong class="userinput"><code>rpm -i <em class="replaceable"><code>ftp://hostname/path/to/file/filename.rpm</code></em></code></strong></pre><div class="para">
@@ -1169,10 +1169,10 @@
<strong class="userinput"><code>rpm -i ftp://unclejoe:workers@www-126.ibm.com/pub/jikes/jikes-1.16-1.src.rpm</code></strong></pre><div class="para">
In this case, the user name is unclejoe and the password is workers.
</div><div class="para">
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id869708" class="title">Installing Using HTTP</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1412656" class="title">Installing Using HTTP</h1></div></div></div><div class="para">
The <code class="command">rpm</code> command supports the HTTP protocol, used by most Web servers, as well as FTP. Similar to accessing a file via FTP, you need to pass the <code class="command">rpm</code> command a URL identifying the file. For example:
</div><pre class="screen">
-<strong class="userinput"><code>rpm –i http://ftp.redhat.com/pub/contrib/noarch/SRPMS/Squeak-sources-3-1.src.rpm</code></strong></pre></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1180142" class="title">Installing source RPMs</h1></div></div></div><div class="para">
+<strong class="userinput"><code>rpm –i http://ftp.redhat.com/pub/contrib/noarch/SRPMS/Squeak-sources-3-1.src.rpm</code></strong></pre></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id607008" class="title">Installing source RPMs</h1></div></div></div><div class="para">
Source RPMs contain the source code used to build an application or programming library and the scripts used to build the software into the application or library. These scripts are called the recipes for building the software.
</div><div class="para">
Source RPMs usually contain program source code. They may also contain patches to program sources, scripts to build the program, special files used by desktop environments, icons, and other files considered to be part of the source code, such as programming guides.
@@ -1182,7 +1182,7 @@
In most cases, each binary RPM will have a corresponding source RPM. This is not always true, however.
</div><div class="para">
One source RPM may contain enough shared program code to build multiple application RPMs. Furthermore, the source code is not available for all packages. Commercial applications, for example, rarely come with source code. In this case, obviously, no source RPMs are available. Or, a source RPM for a commercial application may provide no source code, but still provide a way to build the resulting application. See <a class="xref" href="#ch-specfiles">Chapter 9, <em>Working with Spec Files</em></a> for more on the source files and options for not including the sources in a source RPM.
- </div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1209482" class="title">Open-source Software</h1></div></div></div><div class="para">
+ </div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id705309" class="title">Open-source Software</h1></div></div></div><div class="para">
Linux, and thousands of applications that run on Linux, are called open-source software. That’s because the program source code for Linux and these applications are available.
</div><div class="para">
Many users feel having access to the source code is vital, especially because:
@@ -1194,7 +1194,7 @@
You can enhance and extend packages for which the program sources are available.
</div></li></ul></div><div class="para">
Linux applications are available under a variety of open-source licenses. (In fact, it may seem that there are as many licenses as packages.) See the site <a href="http://www.opensource.org/licenses/">http://www.opensource.org/licenses/</a> for details.
- </div></div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id795289" class="title">Removing Software</h1></div></div></div><div class="para">
+ </div></div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id803435" class="title">Removing Software</h1></div></div></div><div class="para">
The <code class="command">rpm</code> command is good for more than just installing and upgrading software packages. Many times, you will need to remove packages as well.
</div><div class="para">
To remove a package, use the <code class="option">-e</code> option to the <code class="command">rpm</code> command, short for erase. The basic syntax follows:
@@ -1224,7 +1224,7 @@
</div><pre class="screen">
<code class="computeroutput">error: Failed dependencies: syslinux is needed by (installed) mkbootdisk-1.4.8-1</code></pre><div class="note"><div class="admonition_header"><h2>Alternative Option Name</h2></div><div class="admonition"><div class="para">
When removing packages, you can use the long option name, <code class="option">--erase</code>, in place of <code class="option">–e</code>.
- </div></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id886357" class="title">Checking that the package has been removed</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id888144" class="title">Checking that the package has been removed</h1></div></div></div><div class="para">
As before, you can use the <code class="command">rpm</code> <code class="option">–q</code> command to query whether a package is installed. After running the <code class="command">rpm</code> <code class="option">–e</code> command, you can run the <code class="command">rpm</code> <code class="option">–q</code> command to check whether the package has been removed. If the <code class="command">rpm</code> <code class="option">–q</code> command shows that the package is not installed, that tells you the erase operation has worked.
</div><div class="para">
For example:
@@ -1232,12 +1232,12 @@
<strong class="userinput"><code># rpm -q jikes</code></strong></pre><pre class="screen">
<code class="computeroutput">jikes-1.16-1</code></pre><pre class="screen">
<strong class="userinput"><code># rpm -e jikes-1.16-1 # rpm -q jikes</code></strong></pre><pre class="screen">
-<strong class="userinput"><code>package jikes is not installed</code></strong></pre></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id683119" class="title">Removing multiple packages at a time</h1></div></div></div><div class="para">
+<strong class="userinput"><code>package jikes is not installed</code></strong></pre></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id753845" class="title">Removing multiple packages at a time</h1></div></div></div><div class="para">
You can remove multiple packages at once by listing each package consecutively on the command line. For example:
</div><pre class="screen">
<strong class="userinput"><code>rpm -e aspell-en-ca-0.33.7.1-16 aspell-en-gb-0.33.7.1-16</code></strong></pre><div class="para">
This command removes the <code class="filename">aspell-en-ca-0.33.7.1-16</code> and <code class="filename">aspell-en-gb-0.33.7.1-16</code> packages.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1163118" class="title">Options when removing packages</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id636050" class="title">Options when removing packages</h1></div></div></div><div class="para">
The <code class="option">--allmatches</code> option tells the <code class="command">rpm</code> command to remove all packages with names that match the names you pass on the command line. If you do not use the <code class="option">--allmatches</code> option, the <code class="command">rpm</code> command will issue an error if more than one package matches the name or names you pass on the command line.
</div><div class="para">
The <code class="option">--nodeps</code> option tells the <code class="command">rpm</code> command to skip the test of dependencies. Use this option when you really, really, want to uninstall a package.
@@ -1253,7 +1253,7 @@
The <code class="option">--nopreun</code> option tells the <code class="command">rpm</code> command not to run the pre-uninstallation scripts. The <code class="option">--nopostun</code> option tells the <code class="command">rpm</code> command not to run the post-uninstallation scripts.
</div><div class="para">
The <code class="option">--notriggers</code> option works in a similar fashion. The <code class="option">--notriggers</code> option tells the <code class="command">rpm</code> command not to execute any triggers. For a finer grain of control, use <code class="option">--notriggerun</code> to prevent any uninstallation triggers and <code class="option">--notriggerpostun</code> to prevent any post-uninstallation triggers.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id751084" class="title">Other <code class="command">rpm</code> Command Options</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id835062" class="title">Other <code class="command">rpm</code> Command Options</h1></div></div></div><div class="para">
Options such as <code class="option">-v</code> (for more verbose output) work with the <code class="command">rpm</code> command for installing, removing, and upgrading packages, as well as most other uses of the <code class="command">rpm</code> command.
</div><div class="para">
Other <code class="command">rpm</code> command options, which work with most RPM actions, include <code class="option">--quiet</code> to turn off most output except for errors, and <code class="option">--root</code>, covered previously.
@@ -1298,7 +1298,7 @@
The <code class="option">--pipe</code> option tells the <code class="command">rpm</code> command to send, or pipe, its output to another program. The syntax for this option is:
</div><div class="para">
<code class="option">--pipe</code> <em class="replaceable"><code>command_to_send_out_to</code></em>
- </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id808610" class="title">Summary</h1></div></div></div><div class="para">
+ </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id815431" class="title">Summary</h1></div></div></div><div class="para">
This chapter covered the easy part of managing packages, the common actions of installing, removing, and upgrading software.
</div><div class="para">
The <code class="command">rpm</code> <code class="option">–e</code> command removes packages. The <code class="command">rpm</code> <code class="option">–U</code> command upgrades packages by installing new packages and removing old versions of all the packages upgraded. RPM upgrades also work for installing new packages. The <code class="command">rpm</code> <code class="option">–F</code> command freshens packages. This command only upgrades a package if an older version of the package has already been installed. The <code class="command">rpm</code> <code class="option">–i</code> command installs packages.
@@ -1360,7 +1360,7 @@
</td></tr></tbody></table></div></div><br class="table-break" /><div class="para">
Unfortunately, modern system management gets more complex than that. The next chapter delves into package dependencies and the nightmare you can get into when one package depends on another that then depends on another, ad infinitum.
- </div></div></div><div xml:lang="en-US" class="chapter" id="ch-using-rpm-db" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 4. Using the RPM Database</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-querying_database">4.1. Querying the RPM Database</a></span></dt><dd><dl><dt><span class="section"><a href="#id810098">4.1.1. Querying packages</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-query_everything">4.1.2. Querying everything</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-refining_query">4.1.3. Refining the query</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-which_package">4.1.4. Finding which packages own files</a></span></dt></dl></dd><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-getting_information">4.2. Getting Information on Packages</a></span></dt><dd><dl><dt><span class="section"><a href="#
RPM_Guide-USing_RPM_DB-getting_information-describing_packages">4.2.1. Describing packages</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-package_groups">4.2.2. Package groups</a></span></dt><dt><span class="section"><a href="#id750521">4.2.3. Listing the files in a package</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-listing_conf_files">4.2.4. Listing the configuration files for a package</a></span></dt><dt><span class="section"><a href="#id838072">4.2.5. Listing the documentation files for a package</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-file_state">4.2.6. Listing the state of the files in a package</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-listing_scripts">4.2.7. Listing the scripts in a package</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Listing_changed">4.2.8. Listing what has changed</a></span></dt><dt><span class="sec
tion"><a href="#RPM_Guide-Using_RPM_DB-Combining_queries">4.2.9. Combining queries</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Cusomt_queries">4.2.10. Creating custom queries</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Query_format_tags">4.2.11. Working With Query Format Tags</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Querying_for_package_information">4.2.12. Querying for Package Information</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Formatting_arrays">4.2.13. Formatting Arrays</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Special_formatting">4.2.14. Special Formatting</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-querying_pacakge_dependencies">4.2.15. Querying for Package Dependencies</a></span></dt><dt><span class="section"><a href="#RPM-Guide-Using_RPM_DB-Querying_file_information">4.2.16. Queryin
g for File Information</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Other_Query_Format_Tags">4.2.17. Other Query Format Tags</a></span></dt></dl></dd><dt><span class="section"><a href="#id1006370">4.3. Other queries</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Getting_information_on_package_files">4.4. Getting Information on Package Files</a></span></dt><dd><dl><dt><span class="section"><a href="#RPM_Guide_Using_RPM_DB-Querying_package_files_remotely">4.4.1. Querying Package Files Remotely</a></span></dt><dt><span class="section"><a href="#RPM-Guide-Using_RPM-DB-verifying_packages">4.4.2. Verifying Installed RPM Packages</a></span></dt><dt><span class="section"><a href="#RPM_GUide-Using_RPM_DB-working_with_RPM_db">4.4.3. Working With the RPM Database</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-summary">4.4.4. Summary</a></span></dt></dl></dd></dl></div><div class="para">
+ </div></div></div><div xml:lang="en-US" class="chapter" id="ch-using-rpm-db" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 4. Using the RPM Database</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-querying_database">4.1. Querying the RPM Database</a></span></dt><dd><dl><dt><span class="section"><a href="#id660300">4.1.1. Querying packages</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-query_everything">4.1.2. Querying everything</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-refining_query">4.1.3. Refining the query</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-which_package">4.1.4. Finding which packages own files</a></span></dt></dl></dd><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-getting_information">4.2. Getting Information on Packages</a></span></dt><dd><dl><dt><span class="section"><a href="#
RPM_Guide-USing_RPM_DB-getting_information-describing_packages">4.2.1. Describing packages</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-package_groups">4.2.2. Package groups</a></span></dt><dt><span class="section"><a href="#id744164">4.2.3. Listing the files in a package</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-listing_conf_files">4.2.4. Listing the configuration files for a package</a></span></dt><dt><span class="section"><a href="#id837662">4.2.5. Listing the documentation files for a package</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-file_state">4.2.6. Listing the state of the files in a package</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-listing_scripts">4.2.7. Listing the scripts in a package</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Listing_changed">4.2.8. Listing what has changed</a></span></dt><dt><span class="sec
tion"><a href="#RPM_Guide-Using_RPM_DB-Combining_queries">4.2.9. Combining queries</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Cusomt_queries">4.2.10. Creating custom queries</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Query_format_tags">4.2.11. Working With Query Format Tags</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Querying_for_package_information">4.2.12. Querying for Package Information</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Formatting_arrays">4.2.13. Formatting Arrays</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Special_formatting">4.2.14. Special Formatting</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-querying_pacakge_dependencies">4.2.15. Querying for Package Dependencies</a></span></dt><dt><span class="section"><a href="#RPM-Guide-Using_RPM_DB-Querying_file_information">4.2.16. Queryin
g for File Information</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Other_Query_Format_Tags">4.2.17. Other Query Format Tags</a></span></dt></dl></dd><dt><span class="section"><a href="#id579849">4.3. Other queries</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-Getting_information_on_package_files">4.4. Getting Information on Package Files</a></span></dt><dd><dl><dt><span class="section"><a href="#RPM_Guide_Using_RPM_DB-Querying_package_files_remotely">4.4.1. Querying Package Files Remotely</a></span></dt><dt><span class="section"><a href="#RPM-Guide-Using_RPM-DB-verifying_packages">4.4.2. Verifying Installed RPM Packages</a></span></dt><dt><span class="section"><a href="#RPM_GUide-Using_RPM_DB-working_with_RPM_db">4.4.3. Working With the RPM Database</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Using_RPM_DB-summary">4.4.4. Summary</a></span></dt></dl></dd></dl></div><div class="para">
This chapter covers:
</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
Querying the RPM database
@@ -1390,7 +1390,7 @@
For querying the RPM database, the major command-line option is <code class="literal">–q</code>, short for query. This option tells the rpm command to query the RPM database. You can also use the long option <code class="literal">--query</code>.
</div><div class="para">
In the last few chapters, you've used the <code class="literal">–q</code> option with the rpm command to query just for the presence or absence of installed packages. You can expand the <code class="literal">-q</code> option to perform a wide array of queries to find out information about the packages installed on a Linux system.
- </div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="id810098">4.1.1. Querying packages</h3></div></div></div><div class="para">
+ </div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="id660300">4.1.1. Querying packages</h3></div></div></div><div class="para">
The basic format of the <code class="command">rpm –q</code> command follows:
</div><div class="para">
<code class="command">rpm –q <em class="replaceable"><code>package_name</code></em></code>
@@ -1719,7 +1719,7 @@ like syntax.
bash-4.1.7-1.x86_64
tcsh-6.17-6.x86_64</pre><div class="note"><div class="admonition_header"><h2>Spaces in group names</h2></div><div class="admonition"><div class="para">
This group has a space in its name, so you need quotation marks to pass the group name as one parameter to the rpm command.
- </div></div></div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="id750521">4.2.3. Listing the files in a package</h3></div></div></div><div class="para">
+ </div></div></div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="id744164">4.2.3. Listing the files in a package</h3></div></div></div><div class="para">
The <code class="option">–l</code> (ell) option queries all the files in a package. You can also use the longer option, --list, in place of –l. The basic syntax is:
</div><div class="para">
rpm –ql package
@@ -1858,7 +1858,7 @@ lrwxrwxrwx 1 root root 9 Dec 15 2009 /usr/share/ma
-rw-r--r-- 1 root root 18 May 21 13:32 /etc/skel/.bash_logout
-rw-r--r-- 1 root root 176 May 21 13:32 /etc/skel/.bash_profile
-rw-r--r-- 1 root root 124 May 21 13:32 /etc/skel/.bashrc
-</pre></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="id838072">4.2.5. Listing the documentation files for a package</h3></div></div></div><div class="para">
+</pre></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="id837662">4.2.5. Listing the documentation files for a package</h3></div></div></div><div class="para">
Similarly to the <code class="option">–c</code> option, the <code class="option">–d</code> option tells the <code class="command">rpm –q</code> command to list just the documentation files for a package. The basic syntax is:
</div><div class="para">
<code class="command">rpm –qd <em class="replaceable"><code>package_name</code></em></code>
@@ -3039,7 +3039,7 @@ qt-x11 - rpm 4.7.2
qt-x11 - rpm 4.7.2
</pre><div class="note"><div class="admonition_header"><h2>Cross Reference</h2></div><div class="admonition"><div class="para">
See <a class="xref" href="#ch-package-structure">Chapter 24, <em>RPM Package File Structure</em></a> for a listing of all the tags in an RPM file.
- </div></div></div></div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h2 class="title" id="id1006370">4.3. Other queries</h2></div></div></div><div class="para">
+ </div></div></div></div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h2 class="title" id="id579849">4.3. Other queries</h2></div></div></div><div class="para">
If what you’ve seen so far isn’t enough, the rpm command supports a number of extra queries, mostly of use to developers.
</div><div class="para">
Table 5-7 summarizes these extra queries.
@@ -3589,7 +3589,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
The RPM database maintains a lot of information about the files and packages on your system. Thus, it is crucial for managing your Linux systems. You should back up the RPM database before and after any installation, upgrade, or removal of packages.
</div><div class="para">
You can also use the <code class="option">--rebuilddb</code> option to the rpm command to rebuild a damaged RPM database.
- </div></div></div></div><div xml:lang="en-US" class="chapter" id="ch-dependencies" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 5. Package Dependencies</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#RPM_Guide-Dependencies-Understanding">5.1. Understanding the Dependency Concept</a></span></dt><dd><dl><dt><span class="section"><a href="#RPM_Guide-Dependencies-capabilities">5.1.1. Capabilities</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Dependencies-version_dependencies">5.1.2. Version dependencies</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Dependencies-conflicts">5.1.3. Conflicts</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Dependencies-obsoletes">5.1.4. Obsoletes</a></span></dt></dl></dd><dt><span class="section"><a href="#id869789">5.2. Checking for Dependencies</a></span></dt><dd><dl><dt><span class="section"><a href="#id494023">5.2.1. Determining the capabili
ties a package requires</a></span></dt><dt><span class="section"><a href="#id786625">5.2.2. Determining the capabilities a package provides</a></span></dt><dt><span class="section"><a href="#id1497917">5.2.3. Checking for conflicts</a></span></dt><dt><span class="section"><a href="#id1012657">5.2.4. Determining which packages require a certain capability</a></span></dt><dt><span class="section"><a href="#id948526">5.2.5. Determining which package provides a certain capability</a></span></dt></dl></dd><dt><span class="section"><a href="#id776884">5.3. Triggers</a></span></dt><dt><span class="section"><a href="#id687574">5.4. Summary</a></span></dt></dl></div><div class="para">
+ </div></div></div></div><div xml:lang="en-US" class="chapter" id="ch-dependencies" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 5. Package Dependencies</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#RPM_Guide-Dependencies-Understanding">5.1. Understanding the Dependency Concept</a></span></dt><dd><dl><dt><span class="section"><a href="#RPM_Guide-Dependencies-capabilities">5.1.1. Capabilities</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Dependencies-version_dependencies">5.1.2. Version dependencies</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Dependencies-conflicts">5.1.3. Conflicts</a></span></dt><dt><span class="section"><a href="#RPM_Guide-Dependencies-obsoletes">5.1.4. Obsoletes</a></span></dt></dl></dd><dt><span class="section"><a href="#id599793">5.2. Checking for Dependencies</a></span></dt><dd><dl><dt><span class="section"><a href="#id666212">5.2.1. Determining the capabili
ties a package requires</a></span></dt><dt><span class="section"><a href="#id947903">5.2.2. Determining the capabilities a package provides</a></span></dt><dt><span class="section"><a href="#id1414118">5.2.3. Checking for conflicts</a></span></dt><dt><span class="section"><a href="#id1048593">5.2.4. Determining which packages require a certain capability</a></span></dt><dt><span class="section"><a href="#id687390">5.2.5. Determining which package provides a certain capability</a></span></dt></dl></dd><dt><span class="section"><a href="#id700137">5.3. Triggers</a></span></dt><dt><span class="section"><a href="#id832996">5.4. Summary</a></span></dt></dl></div><div class="para">
This chapter covers:
</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
Understanding dependencies
@@ -3680,7 +3680,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Obsoletes, which describes the capabilities that this package will make obsolete
</div></li></ul></div><div class="para">
Packages advertise this dependency information. Each dependency holds the type, such as requires, a capability, such as a shared library or a package name, and optionally a version number, such as requiring the python package at a version number greater than or equal to 2.2 (python >= 2.2).
- </div></div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h2 class="title" id="id869789">5.2. Checking for Dependencies</h2></div></div></div><div class="para">
+ </div></div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h2 class="title" id="id599793">5.2. Checking for Dependencies</h2></div></div></div><div class="para">
The rpm –q command queries the RPM database or RPM package files. With the right options to this command, you can check for the four types of package dependencies as well. These options are based on the concept of capabilities introduced previously.
</div><div class="para">
You can query what capabilities a package requires. You can also query what capabilities a package provides. You can query for the obsoleting and conflicting information as well. Furthermore, given a capability, you can query which packages require this capability as well as which packages provide this capability.
@@ -3688,7 +3688,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Cross Reference
</div><div class="para">
There are quite a few more options you can use with the rpm –q command for querying packages. See <a class="xref" href="#ch-using-rpm-db">Chapter 4, <em>Using the RPM Database</em></a> for more on querying packages and package files.
- </div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="id494023">5.2.1. Determining the capabilities a package requires</h3></div></div></div><div class="para">
+ </div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="id666212">5.2.1. Determining the capabilities a package requires</h3></div></div></div><div class="para">
The first and most important step is to determine what capabilities a package requires. If all the required capabilities are met, you can safely install the package (barring other things that can go wrong, such as conflicts). The requires dependencies are by far the most important.
</div><div class="para">
The --requires option to the rpm –q command lists the capabilities a given package requires. The basic syntax is:
@@ -3818,7 +3818,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
rpmlib(CompressedFileNames) <= 3.0.4-1
</div><div class="para">
As shown in this example, this package depends only on capabilities of the RPM system itself. The particular requirements shown here specify how the rpm command should treat the package payload, including how the files are listed in the package and what type of compression is used.
- </div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="id786625">5.2.2. Determining the capabilities a package provides</h3></div></div></div><div class="para">
+ </div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="id947903">5.2.2. Determining the capabilities a package provides</h3></div></div></div><div class="para">
Packages require capabilities, and they can provide capabilities for other packages to require. To list the capabilities a package provides, use the --provides option. These capabilities can be arbitrary names, shared libraries (.so files), and the package name itself. The basic syntax is:
</div><div class="para">
rpm –q query_options --provides packages
@@ -3920,7 +3920,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
mod_vhost_alias.so
</div><div class="para">
httpd = 2.0.40-8
- </div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="id1497917">5.2.3. Checking for conflicts</h3></div></div></div><div class="para">
+ </div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="id1414118">5.2.3. Checking for conflicts</h3></div></div></div><div class="para">
Use the --conflicts option to check what conflicts with a given package. The basic syntax is:
</div><div class="para">
rpm –q query_options --conflicts packages
@@ -3936,7 +3936,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
The RPM system will report on the conflicts and indicate an error if you try to install conflicting packages. The idea of conflicts really gives package creators a way to alert users to potential problems and to tell us that one package likely won’t work with another.
</div><div class="para">
The force options discussed in <a class="xref" href="#ch-using-rpm">Chapter 3, <em>Using RPM</em></a> allow you to override conflicts, if absolutely necessary. In most cases, though, a conflict presents you with the choice to install one or the other of the packages, but not both.
- </div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="id1012657">5.2.4. Determining which packages require a certain capability</h3></div></div></div><div class="para">
+ </div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="id1048593">5.2.4. Determining which packages require a certain capability</h3></div></div></div><div class="para">
In addition to querying capabilities and requirements of a particular package, you can query the capabilities themselves. This function allows you to check which packages require a given capability.
</div><div class="para">
The --whatrequires option tells the rpm command to report on which packages in the RPM database require a certain capability. The basic syntax is:
@@ -4150,7 +4150,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
mutt-1.2.5i-17
</div><div class="para">
The first command lists the capabilities that the sendmail package provides, including the generic capability of smtpdaemon. You can then list which packages require this particular capability, as shown in the second command. This is a big help for wading through a mess of packages depending on packages depending on yet more packages.
- </div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="id948526">5.2.5. Determining which package provides a certain capability</h3></div></div></div><div class="para">
+ </div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h3 class="title" id="id687390">5.2.5. Determining which package provides a certain capability</h3></div></div></div><div class="para">
To complete the circle, you can query for which package provides a certain capability. This knowledge allows you to trace a requirement back to the package that provides it.
</div><div class="para">
The --whatprovides option tells the rpm command to list the capabilities a package provides. Use the --whatprovides option with the –q, or query, option to the rpm command. (There is no short form for the --whatrprovides option.)
@@ -4182,7 +4182,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
bash-2.05-8
</div><div class="para">
If you are querying particular files, use rpm –qf. If you are querying capabilities, use --whatprovides.
- </div></div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h2 class="title" id="id776884">5.3. Triggers</h2></div></div></div><div class="para">
+ </div></div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h2 class="title" id="id700137">5.3. Triggers</h2></div></div></div><div class="para">
A trigger is a script that gets run when a package is installed or uninstalled. Triggers allow packages that depend on other packages to properly configure themselves when those other packages are installed or removed.
</div><div class="para">
The --triggers option to the rpm command lists any trigger scripts in a given package. For example:
@@ -4394,7 +4394,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
anonftp-4.0-9
</div><div class="para">
The anonftp package needs to be notified on changes to the glibc package, so that the anonftp package can properly set up its application. It actually uses part of glibc and is therefore highly susceptible to changes in the glibc package. Thus, the use of triggers provides essentially an extended form of dependencies. The anonftp package in this example depends so much on the glibc package that it needs to execute scripts whenever the glibc package changes.
- </div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h2 class="title" id="id687574">5.4. Summary</h2></div></div></div><div class="para">
+ </div></div><div class="section"><div class="titlepage"><div><div keep-together.within-column="always"><h2 class="title" id="id832996">5.4. Summary</h2></div></div></div><div class="para">
Linux comes with many packages. Most of these packages depend on some other packages installed on your system. In RPM terms, packages provide capabilities and depend on capabilities that other packages provide. When the rpm command checks the RPM database for dependencies, it checks to ensure that all the capabilities that a given package requires are met by other installed packages.
</div><div class="para">
You can trace the capabilities a package requires with the --requires option to the rpm command. You can see what capabilities a package provides for others with the --provides option.
@@ -4404,7 +4404,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Triggers are an extended form of dependencies. A trigger is a script that gets executed when other packages are installed or removed. This allows a package with a high dependence on another package to track changes in that package and reconfigure itself as needed.
</div><div class="para">
The next chapter delves into transactions, which provide a safe means to install a set of packages. With transactions, either all the packages get installed, or none.
- </div></div></div><div xml:lang="en-US" class="chapter" id="ch-transactions" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 6. Transactions</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#id1284206">6.1. Understanding Transactions</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id1284121">6.1.1. When do you need transactions?</a></span></dt><dt><span class="sect2"><a href="#id1004485">6.1.2. Backing out of transactions</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id829740">6.2. Transactions with the rpm Command</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id956529">6.2.1. Transaction IDs</a></span></dt><dt><span class="sect2"><a href="#id830531">6.2.2. Rolling Back Transactions</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id991863">6.3. Saving Old Packages</a></span></dt><dt><span class="sect1"><a href="#id943961">6.4. Summary</a></span></dt></dl></div><div class="para"
>
+ </div></div></div><div xml:lang="en-US" class="chapter" id="ch-transactions" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 6. Transactions</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#id442009">6.1. Understanding Transactions</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id796977">6.1.1. When do you need transactions?</a></span></dt><dt><span class="sect2"><a href="#id796686">6.1.2. Backing out of transactions</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id702494">6.2. Transactions with the rpm Command</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id570504">6.2.1. Transaction IDs</a></span></dt><dt><span class="sect2"><a href="#id556457">6.2.2. Rolling Back Transactions</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id888070">6.3. Saving Old Packages</a></span></dt><dt><span class="sect1"><a href="#id690519">6.4. Summary</a></span></dt></dl></div><div class="para">
This chapter covers:
</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
Understanding transactions
@@ -4418,13 +4418,13 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
When packages depend on other packages, you may have to install multiple packages to add a single application. Some of the packages may install cleanly; others may not. But you have to install all of the packages to get the complete application. The designers of the RPM system understood this problem and added the concept of transactions to RPM.
</div><div class="para">
This chapter covers transactions and how they can help you cleanly install a set of dependent packages. But transactions won’t solve all your problems. You still have to resolve conflicts and dependencies by using the techniques provided in the last three chapters.
- </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1284206" class="title">Understanding Transactions</h1></div></div></div><div class="para">
+ </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id442009" class="title">Understanding Transactions</h1></div></div></div><div class="para">
A transaction is a way to delimit a set of operations. All the operations can be undone, often called rolled back. Once rolled back, the system is back in the same state it was prior to the transaction. If all the operations succeed, though, the system will be in a new state. The key issue is that all of the operations must complete successfully, or you can roll back the entire transaction. The assumption is that if any of the operations fail, the system will be in an inconsistent or erroneous state. Transactions are a way to prevent that.
</div><div class="para">
Transactions are common when working with databases, but they are just as important when working with packages.
</div><div class="para">
Starting with RPM version 4.0.4, transactions and rollbacks became a workable part of any administrator's toolkit. With RPM, the rpm command sets up a transaction any time you attempt to install, remove, or upgrade more than one package. The rpm command automatically makes a transaction.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1284121" class="title">When do you need transactions?</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id796977" class="title">When do you need transactions?</h1></div></div></div><div class="para">
Whenever you install or remove packages, the RPM system assigns a transaction and a transaction ID to the set of packages. You can then perform operations on the packages that share the same ID, including rolling back the transaction.
</div><div class="para">
Note
@@ -4436,11 +4436,11 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
The main advantage of transactions with RPM, though, is the fact that the rpm command automatically sets up a transaction for all the packages on each command line and does not perform the operation if any package fails. This ability to automatically set up transactions for each call to the rpm command eliminates many errors when working with packages.
</div><div class="para">
Use a transaction when you need to be sure that a set of packages install properly.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1004485" class="title">Backing out of transactions</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id796686" class="title">Backing out of transactions</h1></div></div></div><div class="para">
With RPM, backing out of a transaction involves two operations: rolling back the transaction and reinstalling the former packages to restore the previous system state. In the simplest case, the rpm command handles all the tasks for you. If you try to install, upgrade, or remove multiple packages and any package fails, the rpm command will restore the system state for you.
</div><div class="para">
This automatic support for transactions is a great help to system administrators, but it only applies when you first install, upgrade, or remove the packages. If you have upgraded your system and later discover problems, then you can also use the --rollback option to roll the system back from a set of upgrades, in a limited set of circumstances.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id829740" class="title">Transactions with the rpm Command</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id702494" class="title">Transactions with the rpm Command</h1></div></div></div><div class="para">
To set up an RPM transaction, you don't have to do much. All you need to do is pass more than one RPM package on the rpm command line. For example, to set up a transaction for installing three packages, use a command like the following:
</div><div class="para">
rpm -ihv package1.rpm package2.rpm package3.rpm
@@ -4516,7 +4516,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
# rpm -q jikes
</div><div class="para">
jikes-1.17-1
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id956529" class="title">Transaction IDs</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id570504" class="title">Transaction IDs</h1></div></div></div><div class="para">
The rpm command gives every package installed a transaction ID. The transaction ID is a Unix time stamp (number of seconds since January 1, 1970). You can then perform some operations on packages based on the transaction ID.
</div><div class="para">
Note
@@ -4526,7 +4526,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
All the packages installed at the same time are given the same transaction ID. This means that you can perform operations on a set of packages, the packages that were installed together.
</div><div class="para">
But there’s also a downside to this. All the packages installed when you first installed or upgraded your Linux system are given the same transaction ID. This means you cannot selectively act on these packages using the transaction ID, because you will likely get far more packages than you want to work on.
- </div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id779001" class="title">Viewing RPM Transaction IDs</h1></div></div></div><div class="para">
+ </div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id886579" class="title">Viewing RPM Transaction IDs</h1></div></div></div><div class="para">
To view the install transaction ID (a date code) for a given package, you can use a command like the following:
</div><div class="para">
$ rpm -q --qf "%-20{NAME} %-20{INSTALLTID}\n" jikes
@@ -4544,7 +4544,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
$ rpm -qa --qf "%-20{NAME} %-20{REMOVETID}\n" termcap
</div><div class="para">
termcap (none)
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id819880" class="title">Viewing the Packages Associated with a Transaction ID</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id567233" class="title">Viewing the Packages Associated with a Transaction ID</h1></div></div></div><div class="para">
Once you have a transaction ID, you can use the --tid option, short for transaction ID, to query for the package associated with a given transaction, using a command like the following:
</div><div class="para">
$ rpm -q --tid 1035589778
@@ -4614,7 +4614,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
This example shows just a few of the packages installed when the Red Hat Linux was installed.
</div><div class="para">
With these options, you can find the transaction IDs for given packages and can use the rpm command to install, remove, or otherwise modify the packages that share a transaction ID.
- </div></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id830531" class="title">Rolling Back Transactions</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id556457" class="title">Rolling Back Transactions</h1></div></div></div><div class="para">
The --rollback option to the rpm command allows you to roll back upgrades based on a time. Use a command like the following:
</div><div class="para">
# rpm –U --rollback "3 months ago"
@@ -4631,7 +4631,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Because of all these limitations, rollbacks do not work in all situations. In place of the --rollback option, you can use the query shortcuts introduced in <a class="xref" href="#ch-using-rpm-db">Chapter 4, <em>Using the RPM Database</em></a> and find the packages you have installed recently (if that is what you want to roll back). In this case, you can use the rpm command to remove the packages you want to get rid of and reinstall the packages you want to restore.
</div><div class="para">
In many cases, this manual approach is safest, and you will have a clearer understanding about what was installed or upgraded on your system.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id991863" class="title">Saving Old Packages</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id888070" class="title">Saving Old Packages</h1></div></div></div><div class="para">
When installing, removing, or upgrading, you can use the --repackage command-line option to save a version of something like the old package to a file, making a backup of the older package contents.
</div><div class="para">
Warning
@@ -4690,7 +4690,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Written by Eric Gerbier, rpmrebuild allows you to create an RPM from the installed, and perhaps modified, version of a package. You don’t have to upgrade, remove, or install a new package, as you do with the --repackage option.
</div><div class="para">
Download rpmrebuild from http://rpmrebuild.sourceforge.net/.
- </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id943961" class="title">Summary</h1></div></div></div><div class="para">
+ </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id690519" class="title">Summary</h1></div></div></div><div class="para">
Transactions allow you to install multiple packages as a group and know that either all the packages will succeed in installing or none of them will. This is very important if you have a set of interlocking packages that you need to install.
</div><div class="para">
All the packages you install, remove, or upgrade on the same command line are automatically made part of a transaction. The rpm command will ensure that all packages can be installed, removed, or upgraded, and will not perform the operation unless all will succeed.
@@ -4699,7 +4699,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
</div><div class="para">
The --repackage option tells the rpm command to make a backup RPM of the current package when you are installing or upgrading a more recent version or removing the package. By default, the backup RPM is placed in the /var/spool/repackage directory. Note that a package created this way is not exactly the same as the original package. Files may have changed on disk. In addition, packages created with the --repackage option are not real valid RPM packages. You cannot install these packages without performing extra operations to create a real RPM package from the repackaged data.
</div><div class="para">
- </div></div></div><div xml:lang="en-US" class="chapter" id="ch-management-software" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 7. RPM Management Software</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#id733901">7.1. Locating RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id845486">7.1.1. rpmfind and rpm2html</a></span></dt><dt><span class="sect2"><a href="#id689963">7.1.2. RPM Sites On the Internet</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id806588">7.2. Graphical RPM Management</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id868548">7.2.1. Nautilus</a></span></dt><dt><span class="sect2"><a href="#id680309">7.2.2. Red Hat Package Management</a></span></dt><dt><span class="sect2"><a href="#id917177">7.2.3. KPackage</a></span></dt><dt><span class="sect2"><a href="#id567193">7.2.4. Gnome-RPM</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id750946">7.3. Extending
RPM Management</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id713853">7.3.1. AutoRPM</a></span></dt><dt><span class="sect2"><a href="#id1284978">7.3.2. AutoUpdate</a></span></dt><dt><span class="sect2"><a href="#id692679">7.3.3. The Red Hat Network and up2date</a></span></dt><dt><span class="sect2"><a href="#id843849">7.3.4. Current</a></span></dt><dt><span class="sect2"><a href="#id742428">7.3.5. urpmi and RpmDrake</a></span></dt><dt><span class="sect2"><a href="#id987690">7.3.6. apt-rpm</a></span></dt><dt><span class="sect2"><a href="#id1009429">7.3.7. The poldek</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id1009458">7.4. Summary</a></span></dt></dl></div><div class="para">
+ </div></div></div><div xml:lang="en-US" class="chapter" id="ch-management-software" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 7. RPM Management Software</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#id602809">7.1. Locating RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id648071">7.1.1. rpmfind and rpm2html</a></span></dt><dt><span class="sect2"><a href="#id415358">7.1.2. RPM Sites On the Internet</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id673720">7.2. Graphical RPM Management</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id950609">7.2.1. Nautilus</a></span></dt><dt><span class="sect2"><a href="#id661371">7.2.2. Red Hat Package Management</a></span></dt><dt><span class="sect2"><a href="#id688872">7.2.3. KPackage</a></span></dt><dt><span class="sect2"><a href="#id1350995">7.2.4. Gnome-RPM</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id554289">7.3. Extending
RPM Management</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id554876">7.3.1. AutoRPM</a></span></dt><dt><span class="sect2"><a href="#id603184">7.3.2. AutoUpdate</a></span></dt><dt><span class="sect2"><a href="#id586229">7.3.3. The Red Hat Network and up2date</a></span></dt><dt><span class="sect2"><a href="#id396386">7.3.4. Current</a></span></dt><dt><span class="sect2"><a href="#id383843">7.3.5. urpmi and RpmDrake</a></span></dt><dt><span class="sect2"><a href="#id441878">7.3.6. apt-rpm</a></span></dt><dt><span class="sect2"><a href="#id659102">7.3.7. The poldek</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id706690">7.4. Summary</a></span></dt></dl></div><div class="para">
This chapter covers:
</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
Finding packages in RPM format
@@ -4711,7 +4711,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
You can find a variety of software packages to ease the work of managing RPM-based systems. These utilities can help you find a specific software application packaged using RPM or search through a collection of RPM-packaged software to locate applications with specific features. Similarly, several utilities provide features to ease long-term system-management tasks. These applications provide features such as automatic updating of existing installed software with more recent versions or simplification of software installation by automating installation of any required software dependencies.
</div><div class="para">
This chapter covers a number of tools for finding packages in RPM format, as well as tools to help manage the RPMs on your system.
- </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id733901" class="title">Locating RPMs</h1></div></div></div><div class="para">
+ </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id602809" class="title">Locating RPMs</h1></div></div></div><div class="para">
RPM provides a powerful tool for managing software installed on a system. With a single command, an entire application can be installed on the system in a ready-to-run configuration. With a different command, the entire application can be removed without having manually to track down all of the associated files scattered throughout the hard drive. For RPM to work, however, the software being managed must be packaged in the proper RPM format. RPM packages can be easily prepared if necessary, but you can save time by using the wide variety of software already available in the RPM format. The only trick to using this RPM-packaged software is finding it.
</div><div class="para">
As you start to search for RPM packages on the Internet, you’ll find thousands of packages available. Many of these packages are built specifically for various Linux distributions, such as Conectiva, SUSE, Red Hat, or Mandrake. In many cases, the Linux distribution won’t matter, but in general it's best to download packages built for your version of Linux, such as Red Hat.
@@ -4721,7 +4721,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Although the examples in this book assume Red Hat Linux as a base, just about everything applies to all versions of Linux that use the RPM system, unless noted otherwise.
</div><div class="para">
Internet search engines are popular, but they aren’t very helpful for finding RPM packages, especially because lots of Web pages have the term rpm (including those covering revolutions per minute). A more efficient approach is to use one of the RPM-specific Internet search tools such as rpmfind.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id845486" class="title">rpmfind and rpm2html</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id648071" class="title">rpmfind and rpm2html</h1></div></div></div><div class="para">
One popular free tool for locating RPMs is rpmfind, written by Daniel Veillard. This tool provides a command-line utility that can search for packages by name or description, displaying or optionally downloading any matching packages it finds. It can even provide a list of the dependencies that those matching packages require to run and can download those required dependencies as well.
</div><div class="para">
When searching for packages, rpmfind can search both the software already installed on the local system and remote databases, including the databases located at http://rpmfind.net/.
@@ -4938,7 +4938,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
In addition to rpm2html, the program pdbv creates a set of cross-linked HTML files that list the packages on your system. Pdbv doesn’t support searching and wasn’t built as a front end for search sites, so it is simpler than rpm2html. Instead, pdbv just creates a set of HTML pages that list data that you can query with the rpm command, including the package descriptions, the capabilities required and provided, as well as all the files in the package.
</div><div class="para">
The primary advantage of pdbv is that it runs relatively quickly to provide you a snapshot of your system.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id689963" class="title">RPM Sites On the Internet</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id415358" class="title">RPM Sites On the Internet</h1></div></div></div><div class="para">
In addition to the command-line RPM search tools, a number of Web sites provide handy front ends to databases of available packages. These Web sites make it easy to query for packages and also provide snapshots of what is happening in Linux development, especially with the sites that list recently created RPMs.
</div><div class="para">
The following sections list some of the more popular sites.
@@ -4946,7 +4946,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Note
</div><div class="para">
As with anything on the Internet, sites come and go. I’ve used rpmfind.net for years, but it is always possible that any of these sites may suddenly disappear.
- </div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id791919" class="title">rpmfind.net</h1></div></div></div><div class="para">
+ </div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id707542" class="title">rpmfind.net</h1></div></div></div><div class="para">
The rpmfind utility is associated with an online database available at www.rpmfind.net. You can search this site and see the results in the same format as that created by the rpm2html utility. In essence, this site acts as an HTML front end to the rpmfind query commands. By providing a search engine accessible from a Web browser, instead of the command line as used by the rpmfind utility, the rpmfind.net site is easy to search and also displays the data in an easier-to-read format.
</div><div class="para">
Use the rpmfind command when you know you want to install something. Use the rpmfind.net Web site when you want to browse through the lists of available RPMs.
@@ -4954,7 +4954,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Note
</div><div class="para">
You can download the rpmfind command RPM from the rpmfind.net site.
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id696974" class="title">freshrpms.net</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id706717" class="title">freshrpms.net</h1></div></div></div><div class="para">
The site name,freshrpms.net, is a play on the popular but oddly named Linux site freshmeat.net. The freshmeat.net site provides listings of newly-updated applications for Linux and other operating systems. The freshrpms.net site provides a similar service devoted to freshly-made RPMs.
</div><div class="para">
Note
@@ -4966,12 +4966,12 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Cross Reference
</div><div class="para">
See <a class="xref" href="#ch-specfiles">Chapter 9, <em>Working with Spec Files</em></a> for more on RPM spec files.
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id821351" class="title">RPM PBone Search</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id612232" class="title">RPM PBone Search</h1></div></div></div><div class="para">
The site http://rpm.pbone.net/ provides a database of RPM packages you can search. This site also lists quite a few recently created RPMs. In fact, much of the focus here lies in finding the latest updates to the applications you run.
</div><div class="para">
The feature I like most about the PBone search is the ability to specify which Linux distributions to search by using a set of check boxes. Although in theory most Linux RPMs should work on most Linux distributions, I prefer to get something made for and tested on my version of Linux.
</div><div class="para">
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id874406" class="title">Other Sites</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id612256" class="title">Other Sites</h1></div></div></div><div class="para">
Table 8-2 lists additional sites where you can find RPMs. As with all listings of Internet sites, these may come and go.
</div><div class="para">
Table 8-2MORE RPM SITES
@@ -5035,11 +5035,11 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Owl River Company RPMs
</div>
- </td></tr></tbody></table></div></div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id806588" class="title">Graphical RPM Management</h1></div></div></div><div class="para">
+ </td></tr></tbody></table></div></div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id673720" class="title">Graphical RPM Management</h1></div></div></div><div class="para">
Once appropriate RPMs have been obtained, they have to be installed before the application they provide can be used. You can use the rpm command-line utility to do this. The rpmfind utility also has the capability to launch the rpm utility automatically to install any software located. In addition to these two tools, however, several graphical applications are available that provide basic RPM package-management capabilities. Most of these programs offer easy-to-use GUIs that can be used to install and uninstall packages, to query packages, and to verify installed packages.
</div><div class="para">
Even though Linux and Unix fans generally aren’t bothered by command-line tools such as rpm, many newcomers to Linux fret over the seeming difficulty of the command line. They are more used to graphical applications and, in many cases, are more productive in a graphical environment. Keeping with the Linux tradition of freedom of choice, you can use the command-line tools such as the rpm commandor pick from a variety of graphical tools.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id868548" class="title">Nautilus</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id950609" class="title">Nautilus</h1></div></div></div><div class="para">
Nautilus provides a visually appealing file manager that is part of the GNOME desktop. Nautilus acts as a normal file manager that can also display some types of files, such as images. In addition, you can launch applications that Nautilus knows about when you double click files. Figure 8-1 shows Nautilus in action.
</div><div class="para">
Insert 54965-0 fg0801.tif
@@ -5063,7 +5063,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Note
</div><div class="para">
Nautilus only supports RPM functionality starting with Red Hat Linux 8.0. This functionality may not be supported in other versions of Linux.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id680309" class="title">Red Hat Package Management</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id661371" class="title">Red Hat Package Management</h1></div></div></div><div class="para">
The redhat-config-packages application (say that three times fast) comes new with Red Hat Linux 8.0. You can use the Python program in this package to manage the packages that come with Red Hat Linux, using an interface that is very similar to the Red Hat Linux installation program. This similarity may make it easier for many users to manage their packages, although I found the program a bit short on explanations.
</div><div class="para">
To run this program, you first have to do a bit of searching to find it. It appears under the System Settings menu from the main Red Hat Start menu under the default Bluecurve desktop. Select the Packages choice to launch this program. You can also start the program from the command line with the following command:
@@ -5107,7 +5107,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Figure 8-7: The Show Details window.
</div><div class="para">
The package-management tool worries me. It has an absolutely beautiful look, but it tries to do too much, especially when removing packages. Always use this program with care. I much prefer to just launch it with single packages from the Nautilus file manager.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id917177" class="title">KPackage</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id688872" class="title">KPackage</h1></div></div></div><div class="para">
One popular graphical RPM management tool is KPackage, supplied with the KDE Desktop. (You can find this product at www.kde.org) KPackage offers basic package-management functionality. It can install and uninstall packages and display information about installed and available packages’ contents and headers. In addition, KPackage supports a wide variety of package formats in addition to RPMs. Be aware, however, that KPackage cannot automatically resolve dependencies. When you are installing new software packages, any dependencies required by that software must first be manually installed.
</div><div class="para">
When started, KPackage presents a basic two-paned interface.
@@ -5129,7 +5129,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Figure 8-9: KPackage installs the selected package on your command.
</div><div class="para">
In addition to supporting RPM, KPackage can be used on systems that use other packaging methods. Current versions of KPackage support Debian’s dpkg and the BSD projects’ package formats as well as RPM.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id567193" class="title">Gnome-RPM</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1350995" class="title">Gnome-RPM</h1></div></div></div><div class="para">
The GNOME Desktop (www.gnome.org) provides another graphical RPM-management tool, Gnome-RPM. Also known as gnorpm, Gnome-RPM is very similar to KPackage in terms of its basic functionality, although Gnome-RPM can manage only RPMs.
</div><div class="para">
When started, Gnome-RPM presents a hierarchical list of installed packages, arranged by group, as shown in Figure 8-10:
@@ -5151,7 +5151,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Figure 78-12: Filtering to see only the uninstalled packages.
</div><div class="para">
Like KPackage, when installing new software, Gnome-RPM lacks the ability to automatically install any dependencies needed by that software.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id750946" class="title">Extending RPM Management</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id554289" class="title">Extending RPM Management</h1></div></div></div><div class="para">
RPM makes it very easy to install and uninstall software from systems. One simple command installs an entire application onto the computer, and another removes all files associated with an application. Using RPM to install and uninstall software can become tedious in some situations, however. Manually installing software on one system is no great task, but what if that same software package needs to be installed on all the computers in the department? Or on all the computers in a company? Suddenly, that one rpm -i command has become a major chore!
</div><div class="para">
Similarly, keeping one system up-to-date with the latest vendor errata, although an extremely important administrative task, is not terribly time-consuming or difficult — simply download all the errata and associated packages from the vendor; then use the command rpm -Fvh to install the packages on the system, freshening all installed software with the latest updates of that software.
@@ -5167,7 +5167,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Like any regular system-administration task, it should be automated. When installing new software on machines, managing dependencies and downloading and installing required support software becomes tiresome as well.
</div><div class="para">
To aid with these common problems, a variety of helper applications are available for RPM. These management aids can perform functions such as automatically managing dependencies. When an application is being installed using one of these helpers, the utility also finds and installs any required dependencies. Similarly, when errata are being installed, these management aids can automatically determine which errata are needed by the current system, even in situations in which rpm -F does not work. Some of these tools can even be used to manage clusters of computers. Running one command applies the RPM install or delete on the entire group of machines. All of these commands are designed with scriptability in mind, making them perfect for use automatically via tools such as cron or at.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id713853" class="title">AutoRPM</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id554876" class="title">AutoRPM</h1></div></div></div><div class="para">
One popular tool to lessen the work involved with administering RPM-based systems is AutoRPM. Written by Kirk Bauer, AutoRPM is available under a free MIT-style license from the home page www.autorpm.org.
</div><div class="para">
A Perl script, AutoRPM provides several features that make it especially useful. First, it can create local mirrors of RPM repositories. Typically, this feature might be used to create a local archive of errata for a Linux distribution. AutoRPM can also compare all currently installed RPMs against a list stored elsewhere. This list can be either an FTP site or a directory on the local system. After comparing the currently-installed RPMs against the list, AutoRPM can then update any packages from the list site that are newer than what is installed on the local system. This way, you can define one site or directory as the master site of the package versions that need to get installed on all systems and let AutoRPM ensure that all computers on your network are up to date.
@@ -5325,7 +5325,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
In addition to interactive mode, AutoRPM provides a noninteractive mode, suitable for use through cron. In noninteractive mode, invoked by the command autorpm --notty auto, AutoRPM consults the configuration file /etc/autorpm.conf to decide what to do. By default, /etc/autorpm.d/autorpm.conf is configured to download, but not automatically install, all errata for the release of Red Hat Linux running on the local system. Editing this file makes it possible to use AutoRPM to download all errata — or errata for other Linux distributions — or to install errata automatically once downloaded.
</div><div class="para">
Typically, AutoRPM is used to automate installation of errata updates and other software on all machines in the enterprise. To do this, one machine is selected to serve as a file server. On it, AutoRPM is configured to download and install all errata. The directory where the errata are stored on that server is then exported to the other machines in the enterprise, which also run AutoRPM. These other machines have AutoRPM configured to install all files that the file server exports. Using a configuration such as this, all machines in the enterprise get all security updates automatically installed. In addition, installing a desired new software application on all hosts in the enterprise can be done simply by copying an RPM of the application onto the file server, making it available for the AutoRPM nightly updates to access and install automatically.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1284978" class="title">AutoUpdate</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id603184" class="title">AutoUpdate</h1></div></div></div><div class="para">
AutoUpdate, written by Gerald Teschl, is another Perl script that can be used to automate RPM downloads or installations. Available freely under the terms of the GNU GPL from www.mat.univie.ac.at/~gerald/ftp/autoupdate, AutoUpdate is very similar to AutoRPM in terms of both functionality and potential applications. Unlike AutoRPM, AutoUpdate offers no interactive capability. However, AutoUpdate does have the capability to manage dependencies correctly; when using AutoUpdate to install software that depends upon other uninstalled software, AutoUpdate attempts to resolve the dependencies and to install all necessary software packages.
</div><div class="para">
AutoUpdate bases all decisions about what software to download or install upon its configuration file, /etc/autoupdate.d/autoupdate.conf. By default, AutoUpdate provides several additional configuration files pre-defined for downloading updates for the most popular RPM-based Linux distributions (Red Hat Linux, Mandrake Linux, Caldera/SCO OpenLinux, and SUSE Linux). The autoupdate.conf file can be modified to configure AutoUpdate to install software automatically.
@@ -5405,7 +5405,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
</td></tr></tbody></table></div><div class="para">
These tools can access remote files by using a variety of methods. Like AutoRPM, AutoUptodate can download files if given an FTP URL. AutoUpdate can also access HTTP URLs and local files. Its additional dependency-tracking functionality and support for additional file-access methods make it suitable for use in cases where AutoRPM might be inappropriate. AutoUpdate cannot be used interactively, however, making AutoRPM more useful for nonautomated purposes.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id692679" class="title">The Red Hat Network and up2date</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id586229" class="title">The Red Hat Network and up2date</h1></div></div></div><div class="para">
Some vendors of RPM-based Linux distributions also provide utilities that can help with management of the distributions they create. Red Hat has created two complementary products, the Red Hat Network (RHN) and up2date, which together provide much the same functionality for managing Red Hat Linux installations as tools such as AutoUpdate and AutoRPM, as well as offering more advanced features.
</div><div class="para">
Red Hat Network is a subscription-based service offered by Red Hat Red Hat Network makes software available for installation via the network. (A free evaluation is also available.) After registering machines with Red Hat Network, administrators can pull updates or new software for installation to those registered machines. In addition, administrators have access to a Web-based administrative console from which they can view the systems they manage and can push software out to those systems.
@@ -5605,11 +5605,11 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Provide more verbose output
</div>
- </td></tr></tbody></table></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id843849" class="title">Current</h1></div></div></div><div class="para">
+ </td></tr></tbody></table></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id396386" class="title">Current</h1></div></div></div><div class="para">
The up2date command, the Red Hat Network client software, is open-source software released by Red Hat under the terms of the GNU GPL. Red Hat Network Proxy Server and Red Hat Network Satellite, the server applications with which up2date interacts, are not freely available, open-source applications. For this reason, an effort is underway to develop servers available under the terms of the GNU GPL that can be used with up2date clients. The main program in this effort is called current, which refers to keeping your systems current.
</div><div class="para">
The current server can be downloaded from http://current.tigris.org. Although not yet as functional as Red Hat Network Proxy Server or Red Hat Network Satellite, current can already be used to create a RPM repository from which up2date-using clients can retrieve and install software. More advanced features, such as support for multiple “channels” of software, will be added to current in future releases.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id742428" class="title">urpmi and RpmDrake</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id383843" class="title">urpmi and RpmDrake</h1></div></div></div><div class="para">
Mandrake provides a set of software similar to the combination of up2date and Red Hat Network or current that can be used with the Mandrake Linux distribution. Links to the source code for the Mandrake applications can be found at www.linux-mandrake.com/cooker/urpmi.html. This suite of applications is typically referred to as urpmi and includes both the urpmi command and several helper applications. urpmi itself is a command that acts as a wrapper around the rpm command. When given the name of a package to install, urpmi determines what dependencies, if any, required by the application are not already resolved and offers to install the packages necessary to fulfill those dependencies.
</div><div class="para">
When installing packages, urpmi can install from a variety of sources: FTP repositories, Web servers, local or NFS directories, and removable media such as CD-ROMs. The helper application urpmi.addmedia is used to add package sources, and the corresponding utility urpmi.removemedia is used to remove package sources no longer desired.
@@ -5617,7 +5617,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Mandrake’s urpmi program includes one very handy feature. It comes with an autoirpm helper utility that can be used to configure the system to install packages on demand. This is done by running the command autoirpm.update-all, an application that scans all packages available for installation via urpmi. For every package available through urpmi, autoirpm.update-all determines what executable programs it provides, and it creates a symbolic link from that executable’s name to the autoirpm script. Attempting to execute such a symbolic link executes autoirpm, which in turn automatically uses urpmi to install the associated package. The result: on-demand installation of packages when users on the system attempt to execute the programs that those packages provide.
</div><div class="para">
Two different interfaces are available for urpmi. The urpmi command starts up urpmi in command-line mode, and the gurpmi command (or urpmi --X) starts urpmi in a graphical X-based mode. In addition, Mandrake provides a more full-featured graphical application: RpmDrake. RpmDrake provides the same package-management capabilities as urpmi, including the capability to install all required dependencies whenever installing any new packages.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id987690" class="title">apt-rpm</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id441878" class="title">apt-rpm</h1></div></div></div><div class="para">
Another free RPM management utility is available that provides many of the features of both vendor solutions such as up2date or urpmi and of third-party utilities such as autoUpdate or KPackage. This tool is apt-rpm, a port of the Debian Project’s excellent apt (Advanced Package Tool) software.
</div><div class="para">
The Debian Project (www.debian.org/) is a nonprofit volunteer group that develops a Linux distribution, Debian GNU/Linux. The group uses a different package format, dpkg, which was developed independently of and simultaneous to Red Hat’s creation of RPM. The two formats, dpkg and RPM, are very similar in terms of utility and functionality. In addition to having created a package format, the Debian Project later developed a collection of software, apt, which could be used to manage and install dpkg-format software. And, since Debian distributions are typically installed over the Internet, this apt software has to supply advanced distributed package management functionality.
@@ -5653,7 +5653,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
In addition, apt simplifies interactive installation of RPMs on systems that are using it. The command apt-get install package retrieves the named RPM from the apt-capable software repository and installs it. If the package requires any dependencies that are not already resolved, apt will ask for confirmation, then download and install the package and all dependencies. Similarly, apt-get remove package uninstalls the named RPM. If any other packages depend on it, it will prompt for confirmation, then uninstall the named RPM and all of its dependencies.
</div><div class="para">
In addition to these command-line utilities, several graphical front-end tools for manipulating apt are currently being ported for use with apt-rpm. Because of its ease of use for automating installation of system errata and necessary custom software, and because of the excellent dependency tracking it provides for interactive installation and uninstallation of software, apt-rpm can be excellent for managing RPM-based systems.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1009429" class="title">The poldek</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id659102" class="title">The poldek</h1></div></div></div><div class="para">
Also similar to the Debian apt tool, a utility called the poldek works like apt-get. The poldek was designed to quickly scan through dependencies and install a number of packages at once. You can specify all the packages to install in a file.
</div><div class="para">
The poldek automatically downloads any needed dependencies. The poldek can download files over the Internet and also help create the packages for storage on CD-ROMs. The poldek optimizes the set of packages to reduce the number of times users have to switch CDs.
@@ -5661,7 +5661,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Cross Reference
</div><div class="para">
For more on the poldek, see poldek.pld.org.pl.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1009458" class="title">Summary</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id706690" class="title">Summary</h1></div></div></div><div class="para">
This chapter has covered a number of tools for finding packages in RPM format, as well as tools to help manage the RPMs on your system. The rpm command does a great job of installing, removing, and upgrading packages. You can use it or choose from one of the many graphical RPM management tools shown in this chapter.
</div><div class="para">
The rpmfind utility helps find RPM packages on Internet servers. You can use rpmfind to find the latest version of the packages installed on your system.
@@ -5675,7 +5675,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
The Debian GNU/Linux apt system provides many of the same capabilities as RPM, along with the network-updating capabilities of up2date and the Red Hat Network. You can use special apt packages that adapt apt for RPM-based Linux distributions and get the best of both the RPM system and the apt system.
</div><div class="para">
The next chapter starts the major section on creating RPMs. The RPM system reduces a lot of the burden of administering Linux systems. You can take advantage of this when building any sort of software for distribution--or even when managing your own system.
- </div></div></div><div xml:lang="en-US" class="chapter" id="ch-creating-rpms" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 8. Creating RPMs: An Overview</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#id1006299">8.1. Preparing to Build RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id843921">8.1.1. Planning what you want to build</a></span></dt><dt><span class="sect2"><a href="#id916231">8.1.2. Gathering the software to package</a></span></dt><dt><span class="sect2"><a href="#id847109">8.1.3. Creating a reproducible build of the software</a></span></dt><dt><span class="sect2"><a href="#id944869">8.1.4. Planning for Upgrades</a></span></dt><dt><span class="sect2"><a href="#id721534">8.1.5. Outlining Any Dependencies</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id1076078">8.2. Building RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id920198">8.2.1. Setting up the directory st
ructure</a></span></dt><dt><span class="sect2"><a href="#id775374">8.2.2. Placing your sources into the directory structure</a></span></dt><dt><span class="sect2"><a href="#id867411">8.2.3. Creating the spec file</a></span></dt><dt><span class="sect2"><a href="#id519118">8.2.4. Building RPMs with the rpmbuild command</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id865598">8.3. Verifying Your RPMS</a></span></dt><dt><span class="sect1"><a href="#id844584">8.4. Summary</a></span></dt></dl></div><div class="para">
+ </div></div></div><div xml:lang="en-US" class="chapter" id="ch-creating-rpms" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 8. Creating RPMs: An Overview</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#id1431423">8.1. Preparing to Build RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id960036">8.1.1. Planning what you want to build</a></span></dt><dt><span class="sect2"><a href="#id748755">8.1.2. Gathering the software to package</a></span></dt><dt><span class="sect2"><a href="#id782000">8.1.3. Creating a reproducible build of the software</a></span></dt><dt><span class="sect2"><a href="#id733209">8.1.4. Planning for Upgrades</a></span></dt><dt><span class="sect2"><a href="#id599967">8.1.5. Outlining Any Dependencies</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id581323">8.2. Building RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id694517">8.2.1. Setting up the directory str
ucture</a></span></dt><dt><span class="sect2"><a href="#id936291">8.2.2. Placing your sources into the directory structure</a></span></dt><dt><span class="sect2"><a href="#id550242">8.2.3. Creating the spec file</a></span></dt><dt><span class="sect2"><a href="#id621866">8.2.4. Building RPMs with the rpmbuild command</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id667602">8.3. Verifying Your RPMS</a></span></dt><dt><span class="sect1"><a href="#id663503">8.4. Summary</a></span></dt></dl></div><div class="para">
This chapter covers:
</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
Preparing to build RPMs
@@ -5695,7 +5695,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Creating RPMs allows you to create a consistent set of applications for use on all systems in your organization and easily manage those applications. You may create RPMs of applications developed in house or RPMs of applications developed elsewhere that you need to customize for your environment. Making RPMs of the customized applications reduces work and makes the customizations consistent.
</div><div class="para">
This chapter introduces the RPM system from the point of view of creating RPMs and demonstrates the steps and planning necessary to make your own packages. As such, this chapter introduces the RPM-building topics covered in depth in the remaining chapters in this part.
- </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1006299" class="title">Preparing to Build RPMs</h1></div></div></div><div class="para">
+ </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1431423" class="title">Preparing to Build RPMs</h1></div></div></div><div class="para">
The RPM-building task starts with gathering all the material you want to bundle into an RPM package and then defining the RPM directives to make your package. The final steps are to build and test an RPM. This sounds easy, and for the most part it is fairly straightforward.
</div><div class="para">
The main problems arise when you try to define the many RPM directives for your package. In addition, some of the elements in an RPM can be complex, such as upgrade scripts.
@@ -5719,7 +5719,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
8.Testing the RPMs
</div><div class="para">
The sections in this chapter cover the initial planning stages and provide an overview of the process of building RPMs. The remaining chapters in Part II go in depth into the process of building RPMs.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id843921" class="title">Planning what you want to build</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id960036" class="title">Planning what you want to build</h1></div></div></div><div class="para">
The first step in the entire RPM-building process is simply to decide exactly what you want to make into an RPM. Is this an application, a programming library, a set of system configuration files, or a documentation package? If this is an application, is it customized or patched? Think these issues over and decide what you want to package as an RPM.
</div><div class="para">
In most cases, you want to create both a source package and a binary package containing the built sources. You need a binary package because that holds the RPM you want to install on other systems. You need the source package so you can recreate the binary package at any time. And, if the sources get updated, you can quickly make a new binary RPM from the updated sources if you have already defined a source RPM.
@@ -5735,7 +5735,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Source packages are not that hard to make, and they provide a single package, and single file, that holds all the sources necessary to build your binary package. In addition, once you have a source RPM, it is very easy to build a binary RPM.
</div><div class="para">
Binary packages are likely the real reason you want to make an RPM. You can package an application, a programming library, or almost anything you want. Armed with a binary RPM, you can transfer one file to another machine and install the application there, taking full advantage of the RPM system.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id916231" class="title">Gathering the software to package</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id748755" class="title">Gathering the software to package</h1></div></div></div><div class="para">
Whether you are writing your own software or merely packaging software found elsewhere, the next step is to gather the software you want to bundle into an RPM. This includes the applications or libraries you want to package, as well as the program source code.
</div><div class="para">
In general, you’ll be doing one of three things:
@@ -5763,11 +5763,11 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Cross Reference
</div><div class="para">
See the online manual pages for the patch and diff commands for more information on how to create and apply a patch.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id847109" class="title">Creating a reproducible build of the software</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id782000" class="title">Creating a reproducible build of the software</h1></div></div></div><div class="para">
The RPM system will automate the steps to create an application, as long as you configure the RPM with the proper steps, such as which make targets to run. Unfortunately, configuring the proper steps is not always easy. So before trying to make an RPM, you need to figure out how to build the application or library you plan to package into an RPM. Once you have figured out how to build the application or library, you can set up a reproducible build. The RPM system can then automate this build.
</div><div class="para">
To build the software, you’ll need to use a variety of Linux tools. The specific tools you need depend largely on where the original software came from. The following sections outline some of the more common techniques for preparing and building Linux software.
- </div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id754381" class="title">Unpacking Software</h1></div></div></div><div class="para">
+ </div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id770870" class="title">Unpacking Software</h1></div></div></div><div class="para">
Many applications are downloaded in compressed tar format, often called a tarball. A tarball is merely an archive file built by the tar command that has been compressed, usually using the gzip command.
</div><div class="para">
In most cases, these files have a name such as the following:
@@ -5789,7 +5789,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
In the case of a file name ending in .Z, use the uncompress program instead of gunzip.
</div><div class="para">
Once you have unpacked the sources, start looking around at the files.
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1007165" class="title">Reading the README</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id594882" class="title">Reading the README</h1></div></div></div><div class="para">
Many applications come with a very handy file named README, or something similar, such as README.txt. As the name implies, you should read this file. The README file answers some of the most common questions about a particular application.
</div><div class="para">
Note
@@ -5799,7 +5799,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Other useful files include those named INSTALL or some close variant. Read these files, too. Usually, the README or the INSTALL file will tell you what you need to do to build the software.
</div><div class="para">
Once you have extracted the source code files and read all the available documentation, the next step is to build, usually compile, the application or library.
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id747824" class="title">Building Programs with Linux Build Tools</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id704646" class="title">Building Programs with Linux Build Tools</h1></div></div></div><div class="para">
Most applications or libraries need to be built into executable programs or compiled archived libraries. This process of building can be as simple as just compiling, but is usually more involved. Most Linux applications and libraries use a build tool called make to manage the building of the source code and creation of the executable programs. The make command uses a file, normally named Makefile, that contains the rules for building the software. You will usually find a Makefile in each directory in the source code
</div><div class="para">
Each Makefile contains a set of targets that define things that make can build. Each target defines the commands to run to build a particular thing (make targets are purely arbitrary, although some conventions are usually followed). Some combination of the targets results in a built application. The make program runs the targets that you specify on the command line, or the Makefile rules indicate it needs to run based on the targets you specify on the command line.
@@ -5827,7 +5827,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
</div><div class="para">
The following sections discuss other tools for creating Makefiles.
</div><div class="para">
- </div><div class="sect4"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id923910" class="title">imake</h1></div></div></div><div class="para">
+ </div><div class="sect4"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id549430" class="title">imake</h1></div></div></div><div class="para">
A program called imake is used mostly for X Window graphical applications, and typically older X Window applications. The imake command uses a file named Imakefile that contains rules used to build a platform-specific Makefile. This allows X Window applications, which run on many architectures and operating systems, to come with fairly generic build scripts.
</div><div class="para">
When you see an Imakefile, use the following general set of commands to compileand install an application:
@@ -5849,7 +5849,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Cross Reference
</div><div class="para">
For more on imake, see www.dubois.ws/software/imake-stuff/.
- </div></div><div class="sect4"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id875361" class="title">The configure script</h1></div></div></div><div class="para">
+ </div></div><div class="sect4"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id966141" class="title">The configure script</h1></div></div></div><div class="para">
Most Linux programs, especially server-side or command-line programs, use a script called configure. The configure script outputs a platform-specific Makefile.
</div><div class="para">
If you see a script named configure in the source files, try the following commands to build and install the program:
@@ -5869,7 +5869,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Cross Reference
</div><div class="para">
For more on the configure system, autoconf, and automake, see www.airs.com/ian/configure/.
- </div></div><div class="sect4"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id849068" class="title">Building Perl modules</h1></div></div></div><div class="para">
+ </div></div><div class="sect4"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id599069" class="title">Building Perl modules</h1></div></div></div><div class="para">
Perl is a scripting language used heavily on Linux systems, especially by administrators. Most Perl modules and packages use the following set of commands to create a system-specific Makefile and to build the module:
</div><div class="para">
$ perl Makefile.PL
@@ -5883,7 +5883,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
If you see a file named Makefile.PL, chances are these are the commands to run to build the application or module.
</div><div class="para">
The goal of all these steps is to figure out how to make a reproducible build of the application or library you want to package in RPM format. Once you have a build, the next step is to plan for upgrades.
- </div></div></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id944869" class="title">Planning for Upgrades</h1></div></div></div><div class="para">
+ </div></div></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id733209" class="title">Planning for Upgrades</h1></div></div></div><div class="para">
Any application or library you package in RPM format is likely to get upgraded sometime. When this happens, you’ll need to make a new RPM. This new RPM must handle not only installing the package, but also handling any upgrade issues. You need to think about the following issues:
</div><div class="para">
*How to install the RPM for the new version of the software. Are there any necessary install scripts?
@@ -5891,13 +5891,13 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
*How to remove the previous RPM package. If your package has an install script, then you may need an uninstall script to cleanly remove any changes made to the system by the install script. The RPM system handles the removal of the files in the package. You need to handle the task of undoing any changes made to the system during installation.
</div><div class="para">
At this point in time, the main effort is to keep these issues in mind and plan ahead, since these issues will come up with any upgrade.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id721534" class="title">Outlining Any Dependencies</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id599967" class="title">Outlining Any Dependencies</h1></div></div></div><div class="para">
Often, the hardest task is getting make to build a program properly. One potential problem is assuring that all the dependencies are included. As you work with make, keep track of any other libraries that the program you are trying to build requires. These libraries will become dependencies when you get to the stage of making the RPM.
</div><div class="para">
In most cases you do not want to include the dependencies in your RPM. Instead, each dependency should have its own RPM for each necessary library. In many cases, you should be able to find RPMs for these dependencies. Keep track of the packages that provide the dependencies.
</div><div class="para">
After you have built the application, planned for upgrades and outlined dependencies, you can make an RPM.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1076078" class="title">Building RPMs</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id581323" class="title">Building RPMs</h1></div></div></div><div class="para">
In previous chapters, just about everything you want to do with RPMs is accomplished with the rpm command. Building RPMs is one exception. Just about everything you want to do to build an RPM is done by the rpmbuild command, often with a single command.
</div><div class="para">
Warning
@@ -5915,7 +5915,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
4.Build the source and binary RPMs.
</div><div class="para">
The following sections provide details for these steps.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id920198" class="title">Setting up the directory structure</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id694517" class="title">Setting up the directory structure</h1></div></div></div><div class="para">
The RPM system expects five directories, as listed in Table 9-1.
</div><div class="para">
Table 9-1 RPM directories
@@ -6033,7 +6033,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
*Your sources in the SOURCES directory
</div><div class="para">
*Your spec file in the SPECS directory
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id775374" class="title">Placing your sources into the directory structure</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id936291" class="title">Placing your sources into the directory structure</h1></div></div></div><div class="para">
You can place all the source files directly in the /usr/src/redhat/SOURCES directory. In most cases, however, it is easier to create a tarball of the sources you want to build and place the tarball file in the /usr/src/redhat/SOURCES directory. The RPM specifications for commands necessary to extract the sources from such a file are trivial. Furthermore, the tarball, when extracted, should create a subdirectory specific to your package. This keeps your source code separate from other packages that also have source code in the SOURCES directory.
</div><div class="para">
The best strategy is to start in a directory of your own making, create the tarball file from the sources, and then copy the tarball file to the /usr/src/redhat/SOURCES directory.
@@ -6043,13 +6043,13 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
jikes-1.17.tar.gz
</div><div class="para">
Place a file like this into the /usr/src/redhat/SOURCES directory. This file should include all the sources, all the build scripts, and any documentation you want to install as part of the package.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id867411" class="title">Creating the spec file</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id550242" class="title">Creating the spec file</h1></div></div></div><div class="para">
The spec file, short for specification file, defines all the actions the rpmbuild command should take to build your application, as well as all the actions necessary for the rpm command to install and remove the application. Each source RPM should have the necessary spec file for building a binary RPM.
</div><div class="para">
The spec file is a text file. The normal naming convention is to name the file with the package name and a .spec filename extension. For example, the jikes package spec file would be named jikes.spec.
</div><div class="para">
Inside the spec file, format the information on the package using a special syntax. This syntax defines how to build the package, version numbers, dependency information, and everything else you can query about a package. This syntax differs slightly depending on the sections in the spec file. The following sections describe these spec file sections and the necessary syntax in each section.
- </div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1174190" class="title">The introduction section</h1></div></div></div><div class="para">
+ </div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id445393" class="title">The introduction section</h1></div></div></div><div class="para">
The introduction section contains information about the package, the type of information shown with the rpm -qi command. For example:
</div><div class="para">
Summary: java source to bytecode compiler
@@ -6100,7 +6100,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
*Should not include a Copyright tag, as this tag is deprecated.
</div><div class="para">
*Uses a %define for the version when the rpmbuild command can create a version macro for you.
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id874597" class="title">The prep section</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id570187" class="title">The prep section</h1></div></div></div><div class="para">
The prep section, short for prepare, defines the commands necessary to prepare for the build. If you are starting with a compressed tar archive (a tarball) of the sources, the prep section needs to extract the sources.
</div><div class="para">
For example:
@@ -6112,7 +6112,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
The prep section starts with a %prep statement.
</div><div class="para">
This example uses the %setup RPM macro, which knows about tar archives, to extract the files. In most cases, this will be all you need in your spec file prep section.
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1033896" class="title">The build section</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id727572" class="title">The build section</h1></div></div></div><div class="para">
The spec file build section contains the commands to build the software. Usually, this will include just a few commands, since most of the real instructions appear in the Makefile. For example:
</div><div class="para">
%build
@@ -6124,7 +6124,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
The build section starts with a %build statement.
</div><div class="para">
The commands shown for this build section run the configure script, covered in the previous section on Linux build tools, and then run the make command with the default maketarget. If things unfold as they should, this procedure builds the software.
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id891816" class="title">The install section</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id600801" class="title">The install section</h1></div></div></div><div class="para">
The spec file install section holds the commands necessary to install the newly built application or library. In most cases, your install section should clean out the Buildroot directory and run the make install command. For example:
</div><div class="para">
%install
@@ -6134,7 +6134,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
make install
</div><div class="para">
The install section starts with an %install statement.
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id812805" class="title">The clean section</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id807406" class="title">The clean section</h1></div></div></div><div class="para">
The clean section cleans up the files that the commands in the other sections create:
</div><div class="para">
%clean
@@ -6142,7 +6142,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
rm -rf $RPM_BUILD_ROOT
</div><div class="para">
The clean section starts with a %clean statement
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id686111" class="title">The files section</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id584285" class="title">The files section</h1></div></div></div><div class="para">
Finally, the files section lists the files to go into the binary RPM, along with the defined file attributes. For example:
</div><div class="para">
%files
@@ -6190,7 +6190,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
That is, with a clean system and no other RPMs being built, you'll see a spec file in /usr/src/redhat/SPECS and the sources in /usr/src/redhat/SOURCES. In this example, the sources are in a compressed tar archive. (For this, the RPM spec file, jikes.spec needs to have a command in the prep section to extract the files.)
</div><div class="para">
You should now be ready to build an RPM.
- </div></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id519118" class="title">Building RPMs with the rpmbuild command</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id621866" class="title">Building RPMs with the rpmbuild command</h1></div></div></div><div class="para">
To build RPMs with the rpmbuild command, use the following basic syntax:
</div><div class="para">
rpmbuild -bBuildStage spec_file
@@ -6440,7 +6440,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Cross Reference
</div><div class="para">
<a class="xref" href="#ch-rpmbuild">Chapter 11, <em>Controlling the Build with <code class="command">rpmbuild</code></em></a> covers a number of addition options for the rpmbuild command that you can use to customize the build.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id865598" class="title">Verifying Your RPMS</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id667602" class="title">Verifying Your RPMS</h1></div></div></div><div class="para">
After you've built an RPM, you can use the techniques from <a class="xref" href="#ch-using-rpm-db">Chapter 4, <em>Using the RPM Database</em></a> to verify the RPM. You can also use the –bl option to the rpmbuild command to verify the list of files in the RPM. Use a command like the following:
</div><div class="para">
rpmbuild –bl spec_file
@@ -6489,7 +6489,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Cross Reference
</div><div class="para">
See the on "Verifying Installed RPM Packages" section in <a class="xref" href="#ch-using-rpm-db">Chapter 4, <em>Using the RPM Database</em></a> for more on the -V option.
- </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id844584" class="title">Summary</h1></div></div></div><div class="para">
+ </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id663503" class="title">Summary</h1></div></div></div><div class="para">
This chapter introduced the task of building RPMs, whether building RPMs from your own applications or from software you have gathered elsewhere. In both cases, the steps for building the RPMs are the same.
</div><div class="para">
In most cases, you should build an RPM of the sources for your application, an RPM that can be used to reproduce the build of the application. Create a second RPM that holds the binary application. Once you set up the commands and define the spec file for the binary RPM, making a source RPM is trivial.
@@ -6497,7 +6497,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Use the rpmbuild command to create RPMs. This command uses an RPM spec file to define the commands and settings for creating the RPM.
</div><div class="para">
The next chapter delves into the spec files that define the RPM directives for your packages.
- </div></div></div><div xml:lang="en-US" class="chapter" id="ch-specfiles" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 9. Working with Spec Files</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#id1040415">9.1. Reading Spec Files</a></span></dt><dt><span class="sect1"><a href="#id1013124">9.2. Writing Spec Files</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id1035826">9.2.1. Comments</a></span></dt><dt><span class="sect2"><a href="#id494203">9.2.2. Storing spec files on disk</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id1161591">9.3. Defining Package Information</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id775466">9.3.1. Describing the package</a></span></dt><dt><span class="sect2"><a href="#id790951">9.3.2. Setting build locations</a></span></dt><dt><span class="sect2"><a href="#id808829">9.3.3. Naming source files</a></span></dt><dt><span class="sect2"><a href="#id1071873">9.3
.4. Naming patches</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id944124">9.4. Controlling the Build</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id908901">9.4.1. Preparing for the build</a></span></dt><dt><span class="sect2"><a href="#id739826">9.4.2. Building the software</a></span></dt><dt><span class="sect2"><a href="#id1007480">9.4.3. Installing the software</a></span></dt><dt><span class="sect2"><a href="#id732133">9.4.4. Cleaning up after the build</a></span></dt><dt><span class="sect2"><a href="#id792386">9.4.5. Defining installation scripts</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id485875">9.5. Filling the List of Files</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id936953">9.5.1. Using wildcards</a></span></dt><dt><span class="sect2"><a href="#id936981">9.5.2. Naming directories of files</a></span></dt><dt><span class="sect2"><a href="#id761363">9.5.3. Marking files as documentation or configuration files</a>
</span></dt><dt><span class="sect2"><a href="#id709136">9.5.4. Setting file attributes</a></span></dt><dt><span class="sect2"><a href="#id755047">9.5.5. Verifying the %files section</a></span></dt><dt><span class="sect2"><a href="#id940605">9.5.6. Filling the list of files automatically</a></span></dt><dt><span class="sect2"><a href="#id708152">9.5.7. Handling RPM build errors for unpackaged files</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id997453">9.6. Adding Change Log Entries</a></span></dt><dt><span class="sect1"><a href="#id736515">9.7. Defining Spec File Macros</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id543113">9.7.1. Built-in macros</a></span></dt><dt><span class="sect2"><a href="#id1004852">9.7.2. Spec file-specific macros</a></span></dt><dt><span class="sect2"><a href="#id738739">9.7.3. Defining new macros</a></span></dt><dt><span class="sect2"><a href="#id1076114">9.7.4. Specifying parameters to macros</a></span></dt></dl></dd><dt><
span class="sect1"><a href="#id709255">9.8. Creating XML Spec Files</a></span></dt><dt><span class="sect1"><a href="#id508120">9.9. Summary</a></span></dt></dl></div><div class="para">
+ </div></div></div><div xml:lang="en-US" class="chapter" id="ch-specfiles" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 9. Working with Spec Files</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#id710431">9.1. Reading Spec Files</a></span></dt><dt><span class="sect1"><a href="#id966090">9.2. Writing Spec Files</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id720793">9.2.1. Comments</a></span></dt><dt><span class="sect2"><a href="#id971264">9.2.2. Storing spec files on disk</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id819174">9.3. Defining Package Information</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id819192">9.3.1. Describing the package</a></span></dt><dt><span class="sect2"><a href="#id827452">9.3.2. Setting build locations</a></span></dt><dt><span class="sect2"><a href="#id566895">9.3.3. Naming source files</a></span></dt><dt><span class="sect2"><a href="#id766199">9.3.4. N
aming patches</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id366540">9.4. Controlling the Build</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id853841">9.4.1. Preparing for the build</a></span></dt><dt><span class="sect2"><a href="#id835511">9.4.2. Building the software</a></span></dt><dt><span class="sect2"><a href="#id1101704">9.4.3. Installing the software</a></span></dt><dt><span class="sect2"><a href="#id886088">9.4.4. Cleaning up after the build</a></span></dt><dt><span class="sect2"><a href="#id880531">9.4.5. Defining installation scripts</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id567418">9.5. Filling the List of Files</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id567773">9.5.1. Using wildcards</a></span></dt><dt><span class="sect2"><a href="#id567801">9.5.2. Naming directories of files</a></span></dt><dt><span class="sect2"><a href="#id748892">9.5.3. Marking files as documentation or configuration files</a></spa
n></dt><dt><span class="sect2"><a href="#id732149">9.5.4. Setting file attributes</a></span></dt><dt><span class="sect2"><a href="#id626102">9.5.5. Verifying the %files section</a></span></dt><dt><span class="sect2"><a href="#id1554510">9.5.6. Filling the list of files automatically</a></span></dt><dt><span class="sect2"><a href="#id591104">9.5.7. Handling RPM build errors for unpackaged files</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id366143">9.6. Adding Change Log Entries</a></span></dt><dt><span class="sect1"><a href="#id753424">9.7. Defining Spec File Macros</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id753441">9.7.1. Built-in macros</a></span></dt><dt><span class="sect2"><a href="#id897256">9.7.2. Spec file-specific macros</a></span></dt><dt><span class="sect2"><a href="#id1139119">9.7.3. Defining new macros</a></span></dt><dt><span class="sect2"><a href="#id563096">9.7.4. Specifying parameters to macros</a></span></dt></dl></dd><dt><span
class="sect1"><a href="#id794088">9.8. Creating XML Spec Files</a></span></dt><dt><span class="sect1"><a href="#id381947">9.9. Summary</a></span></dt></dl></div><div class="para">
This chapter covers:
</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
Writing spec files
@@ -6515,7 +6515,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
A spec file defines all the commands and values that are required for creating a package, everything from the name and version number to the actual commands used to build the program you are packaging.
</div><div class="para">
This chapter covers the spec file syntax and how to write spec files. In goes in depth into defining information about your package, controlling how the software will be built, defining what exactly should go into the package, and customizing your build with RPM macros.
- </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1040415" class="title">Reading Spec Files</h1></div></div></div><div class="para">
+ </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id710431" class="title">Reading Spec Files</h1></div></div></div><div class="para">
The first step to learning more about spec files is to read through some of the huge number of spec files for the source RPMs that come with your Linux distribution. Looking at these files will show two things right away:
</div><div class="para">
*You will see that the spec file syntax is not really as complicated as it appears.
@@ -6529,7 +6529,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Furthermore, even with the plethora of options RPM provides, if you know shell scripting basics and something about how C programs are normally built, with configure scripts and make commands, you will find most spec files relatively easy to understand.
</div><div class="para">
The following sections go into the details of writing your own spec files. Keep your example spec files handy as you read through these sections.
- </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1013124" class="title">Writing Spec Files</h1></div></div></div><div class="para">
+ </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id966090" class="title">Writing Spec Files</h1></div></div></div><div class="para">
Spec files are text files containing RPM directives. These directives use a simple syntax of a tag name, a colon, and a value:
</div><div class="para">
TagName: value
@@ -6557,7 +6557,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
The multiple uses of the % sign aren’t really that confusing in practice. Read through some spec files and you should find most of the commands are easily understood.
</div><div class="para">
Blank lines separate sections in the spec file, which makes sense for readability as well.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1035826" class="title">Comments</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id720793" class="title">Comments</h1></div></div></div><div class="para">
To help document your work, you can include comments (to yourself and others reading the spec file). Any line starting with a hash character, #, holds a comment. RPM will ignore comments.
</div><div class="para">
# This is a comment.
@@ -6571,7 +6571,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
# Added new commands to %prep
</div><div class="para">
The rpmbuild command may report an error of a second %prep section. To get around this problem, use two percent signs, such as %%prep, in spec file comments.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id494203" class="title">Storing spec files on disk</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id971264" class="title">Storing spec files on disk</h1></div></div></div><div class="para">
As discussed in <a class="xref" href="#ch-creating-rpms">Chapter 8, <em>Creating RPMs: An Overview</em></a> , the rpmbuild command expands source RPMs to the /usr/src/redhat directory. Under this directory, the RPM system assumes five subdirectories, listed in Table 10-1.
</div><div class="para">
Table 10-1 Default RPM directories
@@ -6643,13 +6643,13 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
These directories are the default directories. See <a class="xref" href="#ch-specfile-syntax">Chapter 22, <em>Spec File Syntax</em></a> for changing RPM default values. In addition, these are the defaults for Red Hat Linux. See <a class="xref" href="#ch-other-linuxes">Chapter 18, <em>Using RPM on Non-Red Hat Linuxes</em></a> and <a class="xref" href="#ch-other-linuxes">Chapter 18, <em>Using RPM on Non-Red Hat Linuxes</em></a> for discussions on other versions of Linux and other non-Linux operating systems, respectively.
</div><div class="para">
With the knowledge of the spec file syntax covered in the preceding sections, you can start to write spec files. The first step is to define the basic package information.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1161591" class="title">Defining Package Information</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id819174" class="title">Defining Package Information</h1></div></div></div><div class="para">
Most of the package information you need to enter into a spec file fleshes out the information you can query for a given package, such as the name, version, and release information, along with a longer description and a one-line summary.
</div><div class="para">
This gets a little more complicated when you set build locations, name source files, and name patches. The following sections cover how to specify the package information.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id775466" class="title">Describing the package</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id819192" class="title">Describing the package</h1></div></div></div><div class="para">
The first part of the spec file defines macros (covered in the section "Defining Spec File Macros"), and describes the package. Starting with the basics, you need a name, version, and release. You also should provide a longer description. For legal reasons, you may need to include ownership and copyright information.
- </div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id775479" class="title">Naming the Package</h1></div></div></div><div class="para">
+ </div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id576868" class="title">Naming the Package</h1></div></div></div><div class="para">
The most important part of the package description is the NVR, or Name-Version-Release information, because this information is so crucial for the RPM system to compare versions and track dependencies.
</div><div class="para">
Set the name with the Name: directive. For example:
@@ -6697,7 +6697,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Distribution: Red Hat Linux
</div><div class="para">
The Icon: directive names an icon file stored in the RPM. The file format should be XPM or GIF, with an extension of .xpm or .gif, respectively. Some packaging tools will use this icon in a package display.
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1088255" class="title">Specifying Company Information</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id355762" class="title">Specifying Company Information</h1></div></div></div><div class="para">
For legal reasons, you probably want to specify the organization behind the RPM, any copyright or licensing information, as well as a URL to find out more information. Even if you are not concerned about corporate legal issues, you may want to identify where the package came from. Use the following directives to provide this information.
</div><div class="para">
The Vendor: directive names the company or organization behind an RPM. For example:
@@ -6721,7 +6721,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Warning
</div><div class="para">
The Copyright: directive is deprecated in favor of License:.
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id733458" class="title">Filling in the Description</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id703030" class="title">Filling in the Description</h1></div></div></div><div class="para">
The Summary: directive provides a one-line short description of the package. You should not exceed much more than 50 characters when writing your summary. For example:
</div><div class="para">
Summary: A program that does exactly what you want
@@ -6749,7 +6749,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
The %description section supports a limited amount of formatting. Blank lines are assumed to separate paragraphs. Some graphical user interface installation programs will reformat paragraphs into a nicer-looking font and change the display width.
</div><div class="para">
Lines in the %description section that start with whitespace, such as a space or tab, will be treated as preformatted text and displayed as is, normally with a fixed-width font. The rpm command supports text formatting this way. Other rpm programs may not.
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1146579" class="title">Specifying the Platform Architecture</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id828593" class="title">Specifying the Platform Architecture</h1></div></div></div><div class="para">
Spec files can announce that a package can run on more than one operating system or is tied to a particular version of a particular operating system.
</div><div class="para">
For example, the Excludearch: directive states that a package should not be built on the given architecture or architectures. For example:
@@ -6775,7 +6775,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Cross Reference
</div><div class="para">
<a class="xref" href="#ch-other-linuxes">Chapter 18, <em>Using RPM on Non-Red Hat Linuxes</em></a> and <a class="xref" href="#ch-other-os">Chapter 19, <em>RPM on Other Operating Systems</em></a> cover RPMs on other versions of Linux and other operating systems, respectively.
- </div></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id790951" class="title">Setting build locations</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id827452" class="title">Setting build locations</h1></div></div></div><div class="para">
RPM supports two build-related directories with very similar names, the build directory and the buildroot.
</div><div class="para">
The build directory is the location where RPM actually builds the software, compiling source code, running the configure script, and so on. Normally, you do not need to worry about the build directory as the rpmbuild command properly changes to this directory as needed.
@@ -6798,7 +6798,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
You can override the buildroot with the --buildroot command-line parameter to the rpmbuild command.
</div><div class="para">
The buildroot replaces the older, and now obsolete directive, Root:.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id808829" class="title">Naming source files</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id566895" class="title">Naming source files</h1></div></div></div><div class="para">
Most packages have one or more bundles of source code, which you need to name in the spec file. In most cases, you will have a compressed tar archive of source files. These may be files developed by your organization or downloaded from an Internet site. You can define one or more source tags, counting from 0. For example:
</div><div class="para">
Source0: telnet-client.tar.gz
@@ -6836,7 +6836,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Using the Nosource: or NoPatch: directives, covered following, mean you are creating a source RPM that cannot be rebuilt unless you also have the sources or patches, respectively, that were used to create the original RPM.
</div><div class="para">
If the package contains a Nosource: or Nopatch: directive, rpmbuild will use a file-name extension of .nosrc.rpm instead of .src.rpm.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1071873" class="title">Naming patches</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id766199" class="title">Naming patches</h1></div></div></div><div class="para">
Patches are named similar to sources, using a similar syntax. For example:
</div><div class="para">
Patch1: telnet-client-cvs.patch
@@ -6868,7 +6868,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
<a class="xref" href="#ch-packaging-guidelines">Chapter 13, <em>Packaging Guidelines</em></a> discusses packaging guidelines and best practices. Starting from pristine sources is one of the best practices.
</div><div class="para">
Similar to the sources directives, you can define a Nopatch: directive, which defines a patch that is applied to the sources, but is not included in the source RPM.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id944124" class="title">Controlling the Build</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id366540" class="title">Controlling the Build</h1></div></div></div><div class="para">
After describing information about the package, the crucial step comes when you need to build the package. The spec file should contain all the commands needed to build the application or library you want to package. But, and this is the important part, most of the build process should be run from a Makefile or other conventional way to build applications. Using a build tool such as make means that you can test the application outside of the RPM system. You don’t need an RPM to build the application. Instead, you use the RPM to package the application.
</div><div class="para">
Cross Reference
@@ -6886,7 +6886,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
4.Cleaning up
</div><div class="para">
The next sections cover how to control the build run by rpmbuild by defining commands within your spec files.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id908901" class="title">Preparing for the build</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id853841" class="title">Preparing for the build</h1></div></div></div><div class="para">
The %prep section defines the commands to prepare for the build. In most cases, you can run the simple %setup macro. For example:
</div><div class="para">
%prep
@@ -7020,7 +7020,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
This is an uppercase P. The lowercase p performs a different function, described earlier in this section. The -P option is rarely used. Instead, patches are normally applied with %patch0, %patch1, and so on directives.
</div><div class="para">
</div><div class="para">
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id739826" class="title">Building the software</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id835511" class="title">Building the software</h1></div></div></div><div class="para">
The %prep section prepares for the build, which the %build section performs. You need to fill in the %build section with all the commands necessary to build the software. In most cases, this consists simply of the following commands:
</div><div class="para">
%build
@@ -7091,7 +7091,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
make
</div><div class="para">
You can also pass other options to the configure script, as needed, for compiling the application.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1007480" class="title">Installing the software</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1101704" class="title">Installing the software</h1></div></div></div><div class="para">
The %install section should install the software built in the %build section. If your Makefile contains all the instructions to install, you can define an %install section as follows:
</div><div class="para">
%install
@@ -7154,13 +7154,13 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Note
</div><div class="para">
RPM 4.2 adds a %check section after the %install.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id732133" class="title">Cleaning up after the build</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id886088" class="title">Cleaning up after the build</h1></div></div></div><div class="para">
The %clean section should clean up after the build and installation, removing compiled files and other files created as part of the build. If you use a buildroot, discussed previously, then you can provide a %clean section like the following:
</div><div class="para">
%clean
</div><div class="para">
rm -rf $RPM_BUILD_ROOT
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id792386" class="title">Defining installation scripts</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id880531" class="title">Defining installation scripts</h1></div></div></div><div class="para">
In addition to the sections described previously for controlling the build of the package software, you can define more scripts in your RPM spec files. RPM supports a script run prior to installation, %pre, and a script run after installation, %post. The same concepts apply when a package is erased, or uninstalled. The %preun script is run just before the uninstall and the %postun script just after the uninstall.
</div><div class="para">
Cross Reference
@@ -7250,7 +7250,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
</td></tr></tbody></table></div><div class="para">
The previous script example accesses the count using the shell variable $1.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id485875" class="title">Filling the List of Files</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id567418" class="title">Filling the List of Files</h1></div></div></div><div class="para">
The %files section holds a list of all the files that RPM should install from the package. This list should be exhaustive, so that the RPM system knows exactly what your package installs. There are some options, though, to name all the files within a directory to help with packages containing hundreds of files.
</div><div class="para">
In the default case, each line under the %files section names a separate file with its full path. For example:
@@ -7262,7 +7262,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
/usr/X11R6/man/man1/xtoolwait.1
</div><div class="para">
This example lists two files, /usr/X11R6/bin/xtoolwait and /usr/X11R6/man/man1/xtoolwait.1, presumably an online manual files.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id936953" class="title">Using wildcards</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id567773" class="title">Using wildcards</h1></div></div></div><div class="para">
In addition to naming each file on a line, you can use glob-style wildcards. For example:
</div><div class="para">
%files
@@ -7272,7 +7272,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
/usr/X11R6/man/man1/xtoolwait.*
</div><div class="para">
This example states that all files in /usr/X11R6/man/man1 that start with xtoolwait. should be included in the package.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id936981" class="title">Naming directories of files</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id567801" class="title">Naming directories of files</h1></div></div></div><div class="para">
In addition to using wildcard globs, you can specify whole directories as part of your package. For example:
</div><div class="para">
%files
@@ -7296,7 +7296,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
This example states that the package contains the /usr/X11R6/bin/xtoolwait program and the empty directory /etc/xtoolwait.
</div><div class="para">
In addition to the straight list of files or directories, RPM provides other options, starting with marking certain files as documentation or configuration files.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id761363" class="title">Marking files as documentation or configuration files</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id748892" class="title">Marking files as documentation or configuration files</h1></div></div></div><div class="para">
RPM keeps special track of files within a package that hold documentation or configuration data. You need to identify these files with special directives.
</div><div class="para">
The %doc directive marks a file as a documentation file. For example:
@@ -7358,7 +7358,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Similarly, %config(missingok) means that the file does not have to exist on disk. You can use this modifier for files or links that are created during the %post scripts but will need to be removed if the package is removed.
</div><div class="para">
Another special modifier, %ghost, tells the rpm command that the file should not be included in the package. You can use this to name the needed attributes for a file that the program, when installed, will create. For example, you may want to ensure that a program’s log file has certain attributes.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id709136" class="title">Setting file attributes</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id732149" class="title">Setting file attributes</h1></div></div></div><div class="para">
When your package is installed, you can control the file attributes as well as the files that get included into the package. This is very useful since most packages are installed by the root user and you don’t always want the root user owning the files.
</div><div class="para">
The %attr directive allows you to control the permissions for a particular file. The format is:
@@ -7433,7 +7433,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
%lang(uk) %{_datadir}/locale/uk/LC_MESSAGES/tcsh*
</div><div class="para">
This example marks certain files as only being of use with particular languages, such as ja for the Japanese text and fr for the French text.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id755047" class="title">Verifying the %files section</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id626102" class="title">Verifying the %files section</h1></div></div></div><div class="para">
You can use the %verify directive to control which tests RPM uses when verifying a package.
</div><div class="para">
Cross Reference
@@ -7553,7 +7553,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
%verify(not owner) /etc/yp.conf
</div><div class="para">
This example turns off just the owner test.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id940605" class="title">Filling the list of files automatically</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1554510" class="title">Filling the list of files automatically</h1></div></div></div><div class="para">
The -f option to the %files section allows you to read in a list of file names from a file. This file is assumed to look like the contents of the %files section, holding one file name per line. You can also include the various directives for files such as %attr or %doc. For example:
</div><div class="para">
%files -f list_of_filenames.txt
@@ -7571,7 +7571,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
This example reads in a list of file names from the file named xconfig_files.txt and also includes two additional files.
</div><div class="para">
This list of files works best if you cannot determine the file names in advance. The build may create different files based on various macro values. In addition, you may not know the final paths for the files until build time.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id708152" class="title">Handling RPM build errors for unpackaged files</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id591104" class="title">Handling RPM build errors for unpackaged files</h1></div></div></div><div class="para">
Starting with RPM 4.1, rpmbuild will exit if all files in the $RPM_BUILD_ROOT directory are not found in the %files section (or in a file that lists file names used with the -f option). This is officially known as a Fascist build policy and you can turn it off with the following macros.
</div><div class="para">
The %_unpackaged_files_terminate_build macro, if set to 1, tells rpmbuild to exit if it finds files that are in the $RPM_BUILD_ROOT directory but not listed as part of the package. Set this macro to 0 to turn off the Fascist build policy. For example:
@@ -7589,7 +7589,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
You can also store this setting in a macro file so that it applies for all packages you build. See <a class="xref" href="#ch-customizing-rpm">Chapter 20, <em>Customizing RPM Behavior</em></a> for more on macro files.
</div><div class="para">
While the Fascist build policy may be an annoyance, it can prove very useful. Chances are your spec file has an error if you have files in the $RPM_BUILD_ROOT directory that are not listed in the %files section. The Fascist build policy helps catch these errors. In addition, since the error outputs a list of files in the $RPM_BUILD_ROOT directory that are not listed in the %files section, you can often paste this list into your %files section.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id997453" class="title">Adding Change Log Entries</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id366143" class="title">Adding Change Log Entries</h1></div></div></div><div class="para">
The change log usually appears at the end of a spec file and is marked with %changelog. It holds messages for each significant change. You should add a change log entry for each major change to the application. For example, if you download a new version of the software you are packaging, add a change log entry for the new version:
</div><div class="para">
%changelog
@@ -7602,11 +7602,11 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
* Tue May 08 2001 Peter Tosh <tosh(a)reggae.com> 1.3-1
</div><div class="para">
- updated to 1.3
- </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id736515" class="title">Defining Spec File Macros</h1></div></div></div><div class="para">
+ </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id753424" class="title">Defining Spec File Macros</h1></div></div></div><div class="para">
The RPM system defines a lot of handy macros so that your spec files can work regardless of where system directories are located. You simply use the macro, such as %_bindir, in place of hard-coded paths. The %_bindir macro, for example, identifies the default directory for binary executables, /usr/bin.
</div><div class="para">
Use these macros wherever possible to avoid hard-coded paths and settings.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id543113" class="title">Built-in macros</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id753441" class="title">Built-in macros</h1></div></div></div><div class="para">
RPM includes a host of built-in macros, including the following useful directories:
</div><div class="para">
%_prefix /usr
@@ -7653,7 +7653,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
%_initrddir %{_sysconfdir}/rc.d/init.d
</div><div class="para">
%_defaultdocdir %{_usr}/share/doc
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1004852" class="title">Spec file-specific macros</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id897256" class="title">Spec file-specific macros</h1></div></div></div><div class="para">
Most of the pre-defined RPM macros hold directory paths or architecture information. RPM also includes a set of useful macros that you can use to help debug problematic spec files and well as perform common tasks in spec files. Table 10-5 lists these debugging and special spec file macros.
</div><div class="para">
Table 10-5 Special spec-file macros
@@ -7791,7 +7791,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Note
</div><div class="para">
To see the current list of macros, put a %dump at the start of your spec file.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id738739" class="title">Defining new macros</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1139119" class="title">Defining new macros</h1></div></div></div><div class="para">
In addition to the built-in macros, you can define your own to make it easier to manage your packages. Define a new spec file macro with the following syntax:
</div><div class="para">
%define macro_name value
@@ -7811,7 +7811,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
You can also expand the results of running shell commands using a %(command) syntax with parenthesis instead of curly braces. For example:
</div><div class="para">
%define today %(date)
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1076114" class="title">Specifying parameters to macros</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id563096" class="title">Specifying parameters to macros</h1></div></div></div><div class="para">
Most macros perform simple text substitution. You can also pass parameters to macros, and access those parameters within your macros, similarly to how shell scripts get command-line parameters.
</div><div class="para">
Cross Reference
@@ -7941,7 +7941,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Note
</div><div class="para">
This type of syntax is used heavily with the patch command.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id709255" class="title">Creating XML Spec Files</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id794088" class="title">Creating XML Spec Files</h1></div></div></div><div class="para">
RPM spec files are text files containing structured information. It is a natural progression to write RPM spec files using XML. The tool rpmxmlbuild will build an RPM package from an XML-formatted spec file.
</div><div class="para">
For example, Listing 10-1 holds a spec file in XML format.
@@ -8063,7 +8063,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Note
</div><div class="para">
XML spec files are a very experimental feature. Future releases of RPM will likely provide more support for XML spec files. The format will likely change.
- </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id508120" class="title">Summary</h1></div></div></div><div class="para">
+ </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id381947" class="title">Summary</h1></div></div></div><div class="para">
This chapter covers spec files, the files that define how to build packages. Start your spec file by defining package information, such as the name, version, and release number. You can also add a detailed description to help administrators decide whether to install your packages.
</div><div class="para">
You need to name all of the source and patch files used to build the package. In most cases, the source files are compressed tar archives. After naming all the sources and patches, you need to control how the rpmbuild command should build your package. This comes in four sections.
@@ -8077,7 +8077,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
You can define RPM macros in your spec files to make commands that can work with different directory structures as well as simplify common commands.
</div><div class="para">
While it may seem that this chapter described a great many options for making spec files, there’s more to come. The next chapter covers advanced spec file topics such as triggers, conditional builds, and specifying dependencies.
- </div></div></div><div xml:lang="en-US" class="chapter" id="ch-advanced-packaging" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 10. Advanced RPM Packaging</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#id994609">10.1. Defining Package Dependencies</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id804585">10.1.1. Naming dependencies</a></span></dt><dt><span class="sect2"><a href="#id681905">10.1.2. Setting prerequisites</a></span></dt><dt><span class="sect2"><a href="#id948625">10.1.3. Naming build dependencies</a></span></dt><dt><span class="sect2"><a href="#id1035677">10.1.4. Generating dependencies automatically</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id1012159">10.2. Setting Triggers</a></span></dt><dt><span class="sect1"><a href="#id691746">10.3. Writing Verification Scripts</a></span></dt><dt><span class="sect1"><a href="#id890619">10.4. Creating Subpackages</a></span></dt><dd><dl><d
t><span class="sect2"><a href="#id745249">10.4.1. Providing information for subpackages</a></span></dt><dt><span class="sect2"><a href="#id833335">10.4.2. Defining scripts for subpackages</a></span></dt><dt><span class="sect2"><a href="#id950228">10.4.3. Building subpackages</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id806637">10.5. Creating Relocatable Packages</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id536928">10.5.1. Setting up the prefixes</a></span></dt><dt><span class="sect2"><a href="#id845178">10.5.2. Define the files section</a></span></dt><dt><span class="sect2"><a href="#id866922">10.5.3. Problems creating relocatable packages</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id924009">10.6. Defining Conditional Builds</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id538159">10.6.1. Defining conditional macros</a></span></dt><dt><span class="sect2"><a href="#id931412">10.6.2. Using conditional blocks</a></span></d
t><dt><span class="sect2"><a href="#id686269">10.6.3. Using architecture-based conditionals</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id724856">10.7. Summary</a></span></dt></dl></div><div class="para">
+ </div></div></div><div xml:lang="en-US" class="chapter" id="ch-advanced-packaging" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 10. Advanced RPM Packaging</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#id904419">10.1. Defining Package Dependencies</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id602123">10.1.1. Naming dependencies</a></span></dt><dt><span class="sect2"><a href="#id772312">10.1.2. Setting prerequisites</a></span></dt><dt><span class="sect2"><a href="#id1156893">10.1.3. Naming build dependencies</a></span></dt><dt><span class="sect2"><a href="#id781740">10.1.4. Generating dependencies automatically</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id772300">10.2. Setting Triggers</a></span></dt><dt><span class="sect1"><a href="#id353442">10.3. Writing Verification Scripts</a></span></dt><dt><span class="sect1"><a href="#id669566">10.4. Creating Subpackages</a></span></dt><dd><dl><dt
><span class="sect2"><a href="#id716573">10.4.1. Providing information for subpackages</a></span></dt><dt><span class="sect2"><a href="#id681695">10.4.2. Defining scripts for subpackages</a></span></dt><dt><span class="sect2"><a href="#id632118">10.4.3. Building subpackages</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id1048567">10.5. Creating Relocatable Packages</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id608160">10.5.1. Setting up the prefixes</a></span></dt><dt><span class="sect2"><a href="#id820769">10.5.2. Define the files section</a></span></dt><dt><span class="sect2"><a href="#id369985">10.5.3. Problems creating relocatable packages</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id576132">10.6. Defining Conditional Builds</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id1418879">10.6.1. Defining conditional macros</a></span></dt><dt><span class="sect2"><a href="#id819531">10.6.2. Using conditional blocks</a></span></
dt><dt><span class="sect2"><a href="#id558195">10.6.3. Using architecture-based conditionals</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id1330331">10.7. Summary</a></span></dt></dl></div><div class="para">
This chapter covers:
</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
Defining package dependency information
@@ -8093,7 +8093,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Defining conditional builds
</div></li></ul></div><div class="para">
The previous chapter introduced the RPM spec file, which controls how RPM packages are built and installed. This chapter delves into advanced spec file topics such as using conditional commands and making relocatable packages, starting with how to specify package dependencies.
- </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id994609" class="title">Defining Package Dependencies</h1></div></div></div><div class="para">
+ </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id904419" class="title">Defining Package Dependencies</h1></div></div></div><div class="para">
Dependencies are one of the most important parts of the RPM system. The RPM database tracks dependencies between packages to better allow you to manage your system. A dependency occurs when one package depends on another. The RPM system ensures that dependencies are honored when upgrading, installing, or removing packages. From that simple concept, RPM supports four types of dependencies:
</div><div class="para">
*Requirements, where one package requires a capability provided by another
@@ -8109,7 +8109,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
<a class="xref" href="#ch-dependencies">Chapter 5, <em>Package Dependencies</em></a> covers more on dependencies. The Obsoletes dependencies are usually only used when a package is renamed, such as the apache package becoming the httpd package, starting in Red Hat Linux 8.0. The httpd package obsoletes the apache package.
</div><div class="para">
You can list all of these dependencies in your spec file. The most commonly used dependency information, though, is what a package requires.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id804585" class="title">Naming dependencies</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id602123" class="title">Naming dependencies</h1></div></div></div><div class="para">
In your spec files, you can name the dependencies for your package. The basic syntax is:
</div><div class="para">
Requires: capability
@@ -8129,7 +8129,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
You can use spaces or commas to separate the capabilities. For example:
</div><div class="para">
Requires: bash, perl
- </div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1509601" class="title">Specifying the Version of the Dependencies</h1></div></div></div><div class="para">
+ </div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1405592" class="title">Specifying the Version of the Dependencies</h1></div></div></div><div class="para">
You can also add version information, for example:
</div><div class="para">
Requires: bash >= 2.0
@@ -8225,7 +8225,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
1:5.6.0-17
</div><div class="para">
In this case, the epoch is 1, the version 5.6.0, and the release is 17. In most cases, you will need just the version number. The epoch allows for handling hard-to-compare version numbers. The release number is almost never used. This makes sense, in that it ties a dependency to a particular build of the RPM package, rather than a version of the software itself. This type of dependency would only be useful if you drastically changed the way you build a package.
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id752564" class="title">Creating Virtual CAPABILITIES</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id860310" class="title">Creating Virtual CAPABILITIES</h1></div></div></div><div class="para">
Dependencies are based on capabilities, most of which are packages. You can create virtual capabilities, which are just names you define. For example, the sendmail package provides a virtual capability named smtpdaemon. For example:
</div><div class="para">
Provides: smtpdaemon
@@ -8237,13 +8237,13 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Note
</div><div class="para">
Of course, you want to ensure that these packages specify that they conflict with each other.
- </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id794038" class="title">Naming Dependencies on Script Engines and Modules</h1></div></div></div><div class="para">
+ </div></div><div class="sect3"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id894836" class="title">Naming Dependencies on Script Engines and Modules</h1></div></div></div><div class="para">
Scripting languages such as Perl and Tcl allow for add-on modules. Your package may require some of these add-on modules. RPM uses a special syntax with parenthesis to indicate script module dependencies. For example:
</div><div class="para">
Requires: perl(Carp) >= 3.2
</div><div class="para">
This indicates a requirement for the Carp add-on module for Perl, greater than or equal to version 3.2.
- </div></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id681905" class="title">Setting prerequisites</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id772312" class="title">Setting prerequisites</h1></div></div></div><div class="para">
A prerequisite is similar to a require dependency, except that a prerequisite must be installed prior to a given package. Specify a prerequisite as follows:
</div><div class="para">
PreReq: capability
@@ -8257,7 +8257,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Cross Reference
</div><div class="para">
<a class="xref" href="#ch-packaging-guidelines">Chapter 13, <em>Packaging Guidelines</em></a> covers a common problem of handling circular dependencies using prerequisites.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id948625" class="title">Naming build dependencies</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1156893" class="title">Naming build dependencies</h1></div></div></div><div class="para">
Your package, once built, has a set of dependencies. These dependencies are important for anyone installing the package. But there are also dependency issues when trying to build packages. Build dependencies allow you to specify what is necessary to build the package. While you may think this would be the same as what is needed to install a package, this is normally not true. Linux distributions tend to divide up software into runtime and development packages. For example, the python package contains the runtime for executing scripts written in Python. The python-devel package provides the ability to write extensions to the Python language.
</div><div class="para">
RPM allows you to define build-time dependencies in your spec files using the following directives:
@@ -8269,7 +8269,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
BuildPreReq:
</div><div class="para">
These directives act like Requires:, Conflicts:, and PreReq:, respectively, except that the dependencies are needed to build the package, not install it. For example, your package may require a C compiler to build, or may need a special build tool or developer library.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1035677" class="title">Generating dependencies automatically</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id781740" class="title">Generating dependencies automatically</h1></div></div></div><div class="para">
Because so many dependencies are related to shared libraries, the RPM system will automatically generate provide dependencies for any file in your packages that is a shared object, or .so, file. RPM will also automatically generate require dependencies for all files in the %files list that require shared libraries. To do this, RPM uses the ldd command, which determines the shared libraries used by an application.
</div><div class="para">
In addition, the find-requires and find-provides scripts in /usr/lib/rpm can determine Perl, Python and Tcl script dependencies and other dependencies, such as Java package dependencies, automatically. The find-requires script determines requires dependencies automatically, and the find-provides script determines provides dependencies.
@@ -8277,7 +8277,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Cross Reference
</div><div class="para">
<a class="xref" href="#ch-packaging-guidelines">Chapter 13, <em>Packaging Guidelines</em></a> covers how to turn off the automatic generation of dependencies.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1012159" class="title">Setting Triggers</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id772300" class="title">Setting Triggers</h1></div></div></div><div class="para">
Triggers provide a way for one package to take action when the installed status of another package changes. A trigger is a script you define in your package’s spec file that gets run by the RPM system when the status of another named package changes. If your package depends in some way on another package, a trigger can allow your package to deal with changes to the other package.
</div><div class="para">
Triggers are not a replacement for package dependencies. Instead, triggers are useful when you need to change a package’s installation based on other packages installed on the system. For example, if your package is a mail client program, your package will need to have a mail transfer agent, or MTA. Linux supports a number of different mail transfer agents, such as sendmail, vmail, exim, qmail, and postfix.
@@ -8526,7 +8526,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
md5sum `ls /var/ftp/bin/* |grep -v bin.md5` >/var/ftp/bin/bin.md5
</div><div class="para">
chmod 0400 /var/ftp/bin/bin.md5
- </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id691746" class="title">Writing Verification Scripts</h1></div></div></div><div class="para">
+ </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id353442" class="title">Writing Verification Scripts</h1></div></div></div><div class="para">
RPM automatically handles package verification, checking to see that the proper files are installed, and testing the files themselves for the proper size and other attributes. You may need to do more in your package, though, to ensure everything is properly set up. With RPM, you can:
</div><div class="para">
*Control the tests used to verify each file, as described in <a class="xref" href="#ch-specfiles">Chapter 9, <em>Working with Spec Files</em></a>
@@ -8544,7 +8544,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Cross Reference
</div><div class="para">
See <a class="xref" href="#ch-using-rpm-db">Chapter 4, <em>Using the RPM Database</em></a> for more on package verification.
- </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id890619" class="title">Creating Subpackages</h1></div></div></div><div class="para">
+ </div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id669566" class="title">Creating Subpackages</h1></div></div></div><div class="para">
A spec file may define more than one package. This type of additional package is called a subpackage. Subpackages exist to handle cases where you don’t want to associate one spec file with one package. Instead, you can define multiple packages within the spec file, as needed. For example, you may want to build the runtime and developer packages together, or the client and server portions of an application using subpackages. Splitting large documentation sets into separate subpackages is also common.
</div><div class="para">
With subpackages, you get:
@@ -8578,7 +8578,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
%package –n my-telnet-server
</div><div class="para">
With the –n option, you specify the full name for the subpackage. The RPM system will not prefix the name with the enclosing package name.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id745249" class="title">Providing information for subpackages</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id716573" class="title">Providing information for subpackages</h1></div></div></div><div class="para">
When you define a subpackage, you need to provide as many of the package information directives as you need, including at the least Summary:, Group:, and %description directives. Anything not specified will use the parent package’s value, such as the version. Place these directives after the %package directive. For example:
</div><div class="para">
%package server
@@ -8644,7 +8644,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
%{_mandir}/man8/in.telnetd.8*
</div><div class="para">
%{_mandir}/man8/telnetd.8*
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id833335" class="title">Defining scripts for subpackages</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id681695" class="title">Defining scripts for subpackages</h1></div></div></div><div class="para">
Much as you define separate %files and %description sections for subpackages, you can also define install and uninstall scripts for subpackages. The syntax is similar to that for the %files and %description sections:
</div><div class="para">
%pre subpackage
@@ -8680,7 +8680,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
/sbin/service vncserver condrestart >/dev/null 2>&1
</div><div class="para">
fi
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id950228" class="title">Building subpackages</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id632118" class="title">Building subpackages</h1></div></div></div><div class="para">
The build sections in the spec file serve double duty. These sections are used for building the main package as well as subpackages. This is one reason why there are so many options on the %setup macro.
</div><div class="para">
The %setup macro allows for selectively unpacking the sources, rather than the default option of unpacking all the sources. For example, the following %setup macro definition gives rpmbuild specific instructions for unpacking one source file:
@@ -8692,7 +8692,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Cross Reference
</div><div class="para">
<a class="xref" href="#ch-specfiles">Chapter 9, <em>Working with Spec Files</em></a> covers the %setup macro and lists the available options.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id806637" class="title">Creating Relocatable Packages</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1048567" class="title">Creating Relocatable Packages</h1></div></div></div><div class="para">
A relocatable package allows a user to specify where to install the package. For example, if you build a package for Red Hat Linux, the normal directory for binary executable programs is /usr/bin. Other versions of Linux, though, may place executable programs into /opt/bin, for example. If your package forces the use of /usr/bin, then your package won’t work on these other systems.
</div><div class="para">
Cross Reference
@@ -8706,7 +8706,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
*Set up the prefix directives for the top-level directories
</div><div class="para">
*Define the files under the prefix directories
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id536928" class="title">Setting up the prefixes</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id608160" class="title">Setting up the prefixes</h1></div></div></div><div class="para">
The Prefix: directive names a top-level directory as a prefix you can relocate to another directory. For example:
</div><div class="para">
Prefix: /usr
@@ -8716,7 +8716,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Note
</div><div class="para">
You can define more than one Prefix: directive to list more than one top-level directory.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id845178" class="title">Define the files section</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id820769" class="title">Define the files section</h1></div></div></div><div class="para">
When you use a Prefix: directive in your spec file, all files in the %files section must be under the directory named with the Prefix: directive. For example, from the jikes compiler package:
</div><div class="para">
Prefix: /usr
@@ -8744,7 +8744,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Cross Reference
</div><div class="para">
<a class="xref" href="#ch-using-rpm">Chapter 3, <em>Using RPM</em></a> covers how to install or upgrade packages into different directories using the --relocate and --prefix options.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id866922" class="title">Problems creating relocatable packages</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id369985" class="title">Problems creating relocatable packages</h1></div></div></div><div class="para">
Not all packages work well as relocatable packages. Some packages have files that simply must go into a certain location and are therefore not relocatable. Some packages have programs that are hard-coded to look for files in a particular location and therefore cannot be relocated elsewhere. Other packages have symbolic links that also may not be relocatable. Furthermore, your package may provide software that is referenced by other packages, in the known directories. Relocating such a package will disable other software packages, packages you may not even know about.
</div><div class="para">
If your packages face any of these problems, chances are that making the package relocatable is not a good idea.
@@ -8754,7 +8754,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
%doc README NEWS
</div><div class="para">
This may defeat your attempts to create a relocatable package, unless you have a Prefix: directive with /usr, because the normal location is under /usr/doc, and all files in the %files section must start with one of the directories named with Prefix: directives.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id924009" class="title">Defining Conditional Builds</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id576132" class="title">Defining Conditional Builds</h1></div></div></div><div class="para">
With the ability to define macros inside spec files, and also to use macros defined elsewhere, you gain a lot of control over how your package gets built. You can go further, though, and use special directives to perform only certain commands based on certain conditions. This adds a powerful capability to your spec files, and also makes it much easier to do things like build for multiple versions of Linux or other operating systems, as well as handle various backwards-compatibility issues.
</div><div class="para">
To define conditional build commands, you need to create conditional constructs in your package’s spec file. In addition, you need to define macros that the conditional constructs use to determine whether or not to execute a set of spec file directives.
@@ -8764,7 +8764,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
See <a class="xref" href="#ch-customizing-rpm">Chapter 20, <em>Customizing RPM Behavior</em></a> for more on macro file locations, and <a class="xref" href="#ch-other-linuxes">Chapter 18, <em>Using RPM on Non-Red Hat Linuxes</em></a> and <a class="xref" href="#ch-other-os">Chapter 19, <em>RPM on Other Operating Systems</em></a> for more on using RPM on other versions of Linux and other operating systems, respectively.
</div><div class="para">
RPM supports a number of ways to make parts of your spec file enabled or disabled based on certain conditions. These include conditional macros, conditional blocks, and special directives based on the system architecture.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id538159" class="title">Defining conditional macros</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1418879" class="title">Defining conditional macros</h1></div></div></div><div class="para">
You can use a special syntax to test for the existence of macros. For example:
</div><div class="para">
%{?macro_to_test: expression}
@@ -8788,7 +8788,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Cross Reference
</div><div class="para">
Many of the macros you will test this way are set up with the --with command-line parameter. See <a class="xref" href="#ch-other-linuxes">Chapter 18, <em>Using RPM on Non-Red Hat Linuxes</em></a> for details.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id931412" class="title">Using conditional blocks</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id819531" class="title">Using conditional blocks</h1></div></div></div><div class="para">
The %if macro enables all the directives up to the %endif directive, if the condition is true. This is much like scripting languages. For example:
</div><div class="para">
%if %{old_5x}
@@ -8838,7 +8838,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
%quit
</div><div class="para">
%endif
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id686269" class="title">Using architecture-based conditionals</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id558195" class="title">Using architecture-based conditionals</h1></div></div></div><div class="para">
In addition to the general-purpose %if conditional directive, you can use special directives that test for processor architecture and operating system.
</div><div class="para">
The %ifarch directive enables all the directives up to the %endif directive, if the processor architecture matches the values you pass to the %ifarch directive. For example:
@@ -8919,7 +8919,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
%endif
</div><div class="para">
This example tests if the operating system is not Irix.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id724856" class="title">Summary</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1330331" class="title">Summary</h1></div></div></div><div class="para">
This chapter covers advanced topics in creating packages. Dependencies are very important. You need to specify which packages or capabilities your package requires, so the RPM system can ensure that all requirements are met before allowing users to install the package. If you do not specify the dependencies properly, then you are defeating the integrity of the RPM system.
</div><div class="para">
In addition to specifying what your package requires, it is also important to specify other dependency information. For example, if your package conflicts with another package, you need to very clearly state this. E-mail and Web server packages often conflict with other servers of the same type.
@@ -8935,7 +8935,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Conditional directives in your spec file allow you to control the build on different processor architectures and operating systems. The %if directive tests if a value is set. If so, then all the directives up to the %endif directive are executed. If you need to execute a different set of directives, use %else. In this case, if the %if test is true, RPM executes the directives up to the %else. If the test is not true, RPM executes the directives up to the %endif.
</div><div class="para">
Once you have your spec file defined, the next step is to start building packages. The next chapter covers options for the rpmbuild command and how you can use rpmbuild to make your packages.
- </div></div></div><div xml:lang="en-US" class="chapter" id="ch-rpmbuild" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 11. Controlling the Build with <code class="command">rpmbuild</code></h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#id770572">11.1. Building RPMs with the rpmbuild Command</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id687021">11.1.1. Customizing the build</a></span></dt><dt><span class="sect2"><a href="#id867901">11.1.2. Testing the build</a></span></dt><dt><span class="sect2"><a href="#id805077">11.1.3. Debugging the build</a></span></dt><dt><span class="sect2"><a href="#id949136">11.1.4. Cleaning up</a></span></dt><dt><span class="sect2"><a href="#id950508">11.1.5. Building for other platforms</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id1080629">11.2. Building RPMs Without an External Spec File</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id685640">11.2.1.
Options for working with tar archives</a></span></dt><dt><span class="sect2"><a href="#id955897">11.2.2. The expected archive structure</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id700284">11.3. Working with Source RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id687049">11.3.1. Rebuilding binary RPMS from source RPMs</a></span></dt><dt><span class="sect2"><a href="#id1168792">11.3.2. Recompiling binaries from source RPMs</a></span></dt><dt><span class="sect2"><a href="#id846811">11.3.3. SRPMS? Finding source RPMs</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id774266">11.4. Signing Built RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id774279">11.4.1. Checking that the GPG software is installed</a></span></dt><dt><span class="sect2"><a href="#id998112">11.4.2. Configuring a signature</a></span></dt><dt><span class="sect2"><a href="#id987126">11.4.3. Signing with the rpmbuild command</a></span></dt><dt><span class="s
ect2"><a href="#id1088239">11.4.4. Signing with the rpm command</a></span></dt><dt><span class="sect2"><a href="#id966048">11.4.5. Verifying signatures</a></span></dt><dt><span class="sect2"><a href="#id778504">11.4.6. Importing public keys</a></span></dt><dt><span class="sect2"><a href="#id758687">11.4.7. Getting the Red Hat public key</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id717788">11.5. Summary</a></span></dt></dl></div><div class="para">
+ </div></div></div><div xml:lang="en-US" class="chapter" id="ch-rpmbuild" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 11. Controlling the Build with <code class="command">rpmbuild</code></h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#id720337">11.1. Building RPMs with the rpmbuild Command</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id662362">11.1.1. Customizing the build</a></span></dt><dt><span class="sect2"><a href="#id633814">11.1.2. Testing the build</a></span></dt><dt><span class="sect2"><a href="#id733502">11.1.3. Debugging the build</a></span></dt><dt><span class="sect2"><a href="#id641851">11.1.4. Cleaning up</a></span></dt><dt><span class="sect2"><a href="#id758699">11.1.5. Building for other platforms</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id587183">11.2. Building RPMs Without an External Spec File</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id587198">11.2.1. O
ptions for working with tar archives</a></span></dt><dt><span class="sect2"><a href="#id862415">11.2.2. The expected archive structure</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id670401">11.3. Working with Source RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id583104">11.3.1. Rebuilding binary RPMS from source RPMs</a></span></dt><dt><span class="sect2"><a href="#id763454">11.3.2. Recompiling binaries from source RPMs</a></span></dt><dt><span class="sect2"><a href="#id629038">11.3.3. SRPMS? Finding source RPMs</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id404520">11.4. Signing Built RPMs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id404532">11.4.1. Checking that the GPG software is installed</a></span></dt><dt><span class="sect2"><a href="#id682973">11.4.2. Configuring a signature</a></span></dt><dt><span class="sect2"><a href="#id625668">11.4.3. Signing with the rpmbuild command</a></span></dt><dt><span class="sec
t2"><a href="#id960068">11.4.4. Signing with the rpm command</a></span></dt><dt><span class="sect2"><a href="#id674719">11.4.5. Verifying signatures</a></span></dt><dt><span class="sect2"><a href="#id739780">11.4.6. Importing public keys</a></span></dt><dt><span class="sect2"><a href="#id627464">11.4.7. Getting the Red Hat public key</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id718914">11.5. Summary</a></span></dt></dl></div><div class="para">
This chapter covers:
</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
Building with the <code class="command">rpmbuild</code> command
@@ -8951,7 +8951,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
The preceding chapters in this Part cover details on how to put together RPMs. This chapter rounds out the discussion by delving into more details on the rpmbuild command.
</div><div class="para">
You can customize how rpmbuild creates RPMs, and you can use RPM commands to test and debug your package.
- </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id770572" class="title">Building RPMs with the rpmbuild Command</h1></div></div></div><div class="para">
+ </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id720337" class="title">Building RPMs with the rpmbuild Command</h1></div></div></div><div class="para">
The rpmbuild command provides a workhorse command for building RPMs in all sorts of ways. The basic syntax, as shown in <a class="xref" href="#ch-creating-rpms">Chapter 8, <em>Creating RPMs: An Overview</em></a>, is:
</div><div class="para">
rpmbuild -bBuildStage spec_file
@@ -8963,7 +8963,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Note
</div><div class="para">
As mentioned in <a class="xref" href="#ch-creating-rpms">Chapter 8, <em>Creating RPMs: An Overview</em></a> , previous versions of the RPM system used the rpm command with a -b, for build, option. This option is no longer supported. Use the rpmbuild command to build RPMs.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id687021" class="title">Customizing the build</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id662362" class="title">Customizing the build</h1></div></div></div><div class="para">
You can customize the rpmbuild command with the options listed in Table 12-1.
</div><div class="para">
Table 12-1 Extra build options for the rpmbuild command
@@ -9057,11 +9057,11 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Build for the given platform. May not work if you don't have the other platform build commands, such as cross compilers, set up. Can work for Intel platforms with i386, i686, and so on.
</div>
- </td></tr></tbody></table></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id867901" class="title">Testing the build</h1></div></div></div><div class="para">
+ </td></tr></tbody></table></div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id633814" class="title">Testing the build</h1></div></div></div><div class="para">
One of the most useful options is --nobuild, which tells the rpmbuild command to not build anything. This may seem silly, but the --nobuild option is very useful for testing whether your RPMs can be built. With the --nobuild option, the rpmbuild command parses the spec file and checks for errors, but does not run any of the build stages.
</div><div class="para">
The --buildroot allows you to specify a different top-level directory for building, overriding the BuildRoot tag in the spec file. This means you can build in a separate location, which is helpful in case there are mistakes. Using a separate directory means the build won’t get mixed with anything else in the build root directory.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id805077" class="title">Debugging the build</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id733502" class="title">Debugging the build</h1></div></div></div><div class="para">
The --short-circuit option tells the rpmbuild command to restart at a particular location in the build. Rather than working its way through all the steps up to the build stage you ask for, the --short-circuit option allows the rpmbuild command to restart just at the step you ask for.
</div><div class="para">
Note
@@ -9077,7 +9077,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Warning
</div><div class="para">
Never distribute an RPM made with the --short-circuit option. Instead, once you have everything working, start from scratch and rebuild the RPM. This is to avoid any problems with a partially-created RPM.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id949136" class="title">Cleaning up</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id641851" class="title">Cleaning up</h1></div></div></div><div class="para">
The --clean option tells the rpmbuild command to remove the build tree when complete. This helps ensure that the next time you run the rpmbuild command, you are starting from a known situation.
</div><div class="para">
For example:
@@ -9115,7 +9115,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Warning
</div><div class="para">
The file you are removing with this command is the spec file you are passing to the command. Be careful, because you cannot undo this operation and you have now lost your spec file, except inside your source package.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id950508" class="title">Building for other platforms</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id758699" class="title">Building for other platforms</h1></div></div></div><div class="para">
The --target option tells the rpmbuild command to build a package for another platform. You need to pass the name of the platform. For example:
</div><div class="para">
rpmbuild -bi --target i486-redhat-linux
@@ -9215,9 +9215,9 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
checking for g++... g++
</div><div class="para">
As you can see, the command starts out with the target as the platform, but the configure script soon overrides that, as shown at the end of the truncated output.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1080629" class="title">Building RPMs Without an External Spec File</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id587183" class="title">Building RPMs Without an External Spec File</h1></div></div></div><div class="para">
Most of the options for the rpmbuild command require an RPM spec file. This file defines all the necessary parameters for the RPM to build. If you’ve downloaded an application, though, you may not have all the information needed to build a spec file. In addition, writing the spec file is the most time-consuming task when building RPMs. If you are lucky, the provider of a given application may have already created a spec file and included the spec file within the source distribution.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id685640" class="title">Options for working with tar archives</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id587198" class="title">Options for working with tar archives</h1></div></div></div><div class="para">
A special set of options aims toward building RPMs with spec files stored in tar archives, also called tarballs. Tarballs are files combined with the tar (tape archiver) utility and then optionally compressed, usually with the gzip command. Because this format is used so often for UNIX and Linux software, you can use a set of -t options to the rpmbuild command that mimic the -b options.
</div><div class="para">
The basic syntax follows:
@@ -9311,7 +9311,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Note
</div><div class="para">
These command-line options work with a tar archive or a compressed tar archive.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id955897" class="title">The expected archive structure</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id862415" class="title">The expected archive structure</h1></div></div></div><div class="para">
To build a package this way, the tar archive must have enough of an expected structure, such as a configure script and a Makefile with the expected make targets. The most crucial element is that the tar archive must have the package spec file.That’s because the rpmbuild command doesn’t know how to build every program in the universe. Instead, rpmbuild expects to find a spec file to tell it what to do. If you see an error like the following, then your tar archive likely is missing the spec file:
</div><div class="para">
$ rpmbuild -tc vixie-cron*tar.gz
@@ -9331,7 +9331,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
These errors show expected tags from the missing spec file.
</div><div class="para">
</div><div class="para">
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id700284" class="title">Working with Source RPMs</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id670401" class="title">Working with Source RPMs</h1></div></div></div><div class="para">
Most of your work with the rpmbuild command will likely be to create binary RPMs after you have the sources for an application and a spec file. You can also get a lot of mileage out of source RPMs, whether you build them or download them.
</div><div class="para">
Cross Reference
@@ -9347,7 +9347,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Installing a source RPM is not exactly the same as installing a binary RPM. For example, the rpm command does not update the RPM database when you install a source RPM. In addition, listing the files in a source RPM only shows the relative paths, not the full paths.
</div><div class="para">
Once installation is complete, you can use the rpmbuild command to create a binary RPM from the sources in the source RPM, using the -b command-line options introduced in <a class="xref" href="#ch-creating-rpms">Chapter 8, <em>Creating RPMs: An Overview</em></a> . The next sections show more shortcuts with source RPMs.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id687049" class="title">Rebuilding binary RPMS from source RPMs</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id583104" class="title">Rebuilding binary RPMS from source RPMs</h1></div></div></div><div class="para">
As a shortcut, you do not have to install a source RPM to create a binary RPM. Instead, you can build the binary RPM directory using the --rebuild option.
</div><div class="para">
The --rebuild option tells the rpmbuild command to rebuild a binary RPM from a source RPM file. The basic syntax is:
@@ -9527,7 +9527,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
With the --rebuild option, the rpmbuild command installs the source RPM for you and then performs the preparation, compile, and installation stages of building a binary RPM. Unless there are errors, you should have a new binary RPM file.
</div><div class="para">
When complete, the rpmbuild --rebuild command cleans out the built files in the build directory, as if the --clean option were used. The rpmbuild --rebuild command also removes the installed sources and spec file upon completion.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1168792" class="title">Recompiling binaries from source RPMs</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id763454" class="title">Recompiling binaries from source RPMs</h1></div></div></div><div class="para">
If you just want to recompile the files in a source RPM, you can use the --recompile option. The --recompile option tells the rpmbuild command to recompile the binary application from a source RPM.
</div><div class="para">
For example:
@@ -9541,13 +9541,13 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
There is no difference between --recompile and --rebuild in RPM 4.1. RPM 4.2 fixes this problem.
</div><div class="para">
</div><div class="para">
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id846811" class="title">SRPMS? Finding source RPMs</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id629038" class="title">SRPMS? Finding source RPMs</h1></div></div></div><div class="para">
Often, source RPMs are abbreviated as SRPMs. In fact, if you see a directory named SRPM or SRPMS, chances are the directory holds source RPMs. (Red Hat uses this convention for its Linux distributions.)
</div><div class="para">
The SRPMS directories on Red Hat CD-ROMs or on the Red Hat FTP Internet site, ftp.redhat.com, indicate directories that hold source RPMs.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id774266" class="title">Signing Built RPMs</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id404520" class="title">Signing Built RPMs</h1></div></div></div><div class="para">
Signing RPMs adds an extra level of trustworthiness to your RPMs. A digital signature helps establish that the package comes from you, really you, and not from someone masquerading as you. Unfortunately, the RPM system requires a bit of set up work before you can sign RPMs.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id774279" class="title">Checking that the GPG software is installed</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id404532" class="title">Checking that the GPG software is installed</h1></div></div></div><div class="para">
To sign packages, you need to ensure that you have the gpg command installed and configured. To check that this command is installed, use a command like the following:
</div><div class="para">
$ rpm -qf `which gpg`
@@ -9565,7 +9565,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
GPG stands for GNU Privacy Guard, a free, open-source implementation of PGP from the GNU project. GPG aims to be compatible with the OpenPGP Internet standard as defined in RFC 2440. It started when a number of developers wanted a free implementation. One such free implementation, GPG, allows Linux vendors such as Red Hat to include PGP in their products. So, in a sense, GPG provides PGP.
</div><div class="para">
PGP has a long and somewhat troubled history as an open-source product and as a commercial product. See www.philzimmermann.com for background on PGP and its long history. See www.gnupg.org for more details on GPG.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id998112" class="title">Configuring a signature</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id682973" class="title">Configuring a signature</h1></div></div></div><div class="para">
To configure a signature, you first need to create a new key with the gpg command, using the --gen-key option, as shown following:
</div><div class="para">
$ gpg --gen-key
@@ -9701,7 +9701,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
<a class="xref" href="#ch-customizing-rpm">Chapter 20, <em>Customizing RPM Behavior</em></a> covers RPM macros and the $HOME/.rpmmacros file.
</div><div class="para">
Inside the file, change the %gpg_path macro to the .gnupg directory under your home directory (or the root user’s home directory). Change the %_gpg_name macro to the name you have entered into the gpg program.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id987126" class="title">Signing with the rpmbuild command</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id625668" class="title">Signing with the rpmbuild command</h1></div></div></div><div class="para">
The --sign option tells the rpmbuild command to sign the created package. You need to have configured the RPM system for your signature as shown in the previous sections.
</div><div class="para">
When you then build an RPM, you will be prompted for your pass phrase prior to the package build. For example, the following shows this prompt (and truncates the rest of the rpmbuild messages that follow):
@@ -9711,7 +9711,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Enter pass phrase:
</div><div class="para">
Pass phrase is good.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id1088239" class="title">Signing with the rpm command</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id960068" class="title">Signing with the rpm command</h1></div></div></div><div class="para">
In addition to the --sign option for the rpmbuild command, you can sign packages that have already been created using the rpm command. The --addsign and --resign options generate new signatures and insert them into the passed-in package file. The basic syntax is:
</div><div class="para">
rpm --addsign package.rpm
@@ -9719,7 +9719,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
rpm --resign package.rpm
</div><div class="para">
The --addsign option adds another signature to the RPM. RPM versions prior to 4.1 allowed you to sign a package with multiple keys, which causes problems for automatic verification. Because of that, use the --resign option, which removes the old signature and inserts a new signature into the package.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id966048" class="title">Verifying signatures</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id674719" class="title">Verifying signatures</h1></div></div></div><div class="para">
You can verify the RPM signature to ensure that the package has not been modified since it has been signed. Verification also checks that the package is signed by the key that matches the claimed vendor.
</div><div class="para">
To verify the signature in an RPM, use the -K option to the rpm command. The basic syntax is:
@@ -9811,7 +9811,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
3.The RPM system has not been initialized with the public key from the package vendor.
</div><div class="para">
From this error, you don’t yet know whether the package is legitimate or not. The first step, though, is to check that you have imported the proper public key from the package vendor.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id778504" class="title">Importing public keys</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id739780" class="title">Importing public keys</h1></div></div></div><div class="para">
The --import option to the rpm command imports the public key from a given vendor. The format for this key follows:
</div><div class="para">
The following public key can be used to verify RPM packages built and
@@ -9897,7 +9897,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Note
</div><div class="para">
You can erase this key as if it were a package, using the rpm -e command.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id758687" class="title">Getting the Red Hat public key</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id627464" class="title">Getting the Red Hat public key</h1></div></div></div><div class="para">
Strangely enough, the Red Hat public key is not installed when you install Red Hat Linux 8.0. If you need the key, the Red Hat public key is available on the root directory of all Red Hat Linux CD-ROMs, as shown in the following listing:
</div><div class="para">
$ ls /mnt/cdrom/
@@ -9909,7 +9909,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Note
</div><div class="para">
You can also download this key file from the Red Hat FTP site, at ftp://ftp.redhat.com/pub/redhat/linux/8.0/en/os/i386/.
- </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id717788" class="title">Summary</h1></div></div></div><div class="para">
+ </div></div></div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id718914" class="title">Summary</h1></div></div></div><div class="para">
This chapter covers options for the rpmbuild command that allow you to achieve a finer grain of control over how the command works. For example, the --short-circuit option tells the rpmbuild command to build just the stages you ask for. This helps when you have problems in one area of building an RPM and don’t want to start over each time you try to see if the problem is solved.
</div><div class="para">
The rpmbuild command also supports a set of -t options that work like the -b options, except the -t options try to build an RPM from a tar archive of sources (a tarball) instead of an RPM spec file. In this case, the rpmbuild command tries to work without a spec file.
@@ -9918,7 +9918,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
</div><div class="para">
RPMs should be signed to provide an extra level of authentication. This system isn’t perfect, but it helps you verify that a package is from the person it says it is from and that the package has not been modified. You can check the signature on RPM packages you download. You can also, with some configuration, sign the packages you create.
</div><div class="para">
- </div></div></div><div xml:lang="en-US" class="chapter" id="ch-extra-packaging-tools" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 12. Supplemental Packaging Software</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#id845230">12.1. Packaging Aids</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id814461">12.1.1. Using VIM spec plugins to improve spec file editing</a></span></dt><dt><span class="sect2"><a href="#id938128">12.1.2. Adding functions with emacs rpm-spec-mode</a></span></dt><dt><span class="sect2"><a href="#id792204">12.1.3. Validating and debugging spec files with rpmlint</a></span></dt><dt><span class="sect2"><a href="#id528594">12.1.4. Generating the %files section with RUST</a></span></dt><dt><span class="sect2"><a href="#id690437">12.1.5. setup.sh and MakeRPM.pl</a></span></dt><dt><span class="sect2"><a href="#id708748">12.1.6. Manipulating Package Files with rpm2cpio</a></span></dt></dl></dd><
dt><span class="sect1"><a href="#id857253">12.2. Summary</a></span></dt></dl></div><div class="para">
+ </div></div></div><div xml:lang="en-US" class="chapter" id="ch-extra-packaging-tools" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 12. Supplemental Packaging Software</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#id693194">12.1. Packaging Aids</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id706360">12.1.1. Using VIM spec plugins to improve spec file editing</a></span></dt><dt><span class="sect2"><a href="#id675329">12.1.2. Adding functions with emacs rpm-spec-mode</a></span></dt><dt><span class="sect2"><a href="#id592557">12.1.3. Validating and debugging spec files with rpmlint</a></span></dt><dt><span class="sect2"><a href="#id559265">12.1.4. Generating the %files section with RUST</a></span></dt><dt><span class="sect2"><a href="#id646375">12.1.5. setup.sh and MakeRPM.pl</a></span></dt><dt><span class="sect2"><a href="#id646438">12.1.6. Manipulating Package Files with rpm2cpio</a></span></dt></dl></dd><
dt><span class="sect1"><a href="#id745396">12.2. Summary</a></span></dt></dl></div><div class="para">
This chapter covers:
</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
Understanding packaging aids
@@ -9928,9 +9928,9 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
RPM is intended to make system management easier, both for system administrators and other users who do all the day-to-day work of installing and removing applications and for developers and other users who do all the work of preparing applications for installation. For RPM packagers, the work involved in preparing an application for installation has two phases: first, the software must be compiled (if it is not written in an interpreted language such as Perl) and otherwise configured for the system on which it will be installed; then the RPM package of the software must be prepared by creating a spec file that properly packages it into an RPM. In contrast, packagers who choose to package applications in a simpler format, such as gzipped tarballs (compressed tar archives), have less work ahead of them, since they need only concern themselves with the first step.
</div><div class="para">
After a packager has prepared an RPM package once, RPM makes the first step (compilation and configuration) easier when the packager has to package an updated version of the same software; RPM does a lot of work to track compilation commands, any needed patches, and any configuration modifications discovered to be necessary to prepare the software. Similarly, once an RPM spec file has been produced for an application, updating that spec file to support a newer version of that application is usually trivial. For these reasons, using RPM instead of a simpler, less end-user-friendly package format (such as gzipped tarballs) is a bit of a tradeoff for the packager; preparing an RPM of an application requires a little more initial time and work than preparing a gzipped tarball of that same application, but once created, the RPM package takes less time and effort to keep current than the gzipped tarball requires.
- </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id845230" class="title">Packaging Aids</h1></div></div></div><div class="para">
+ </div><div class="sect1"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id693194" class="title">Packaging Aids</h1></div></div></div><div class="para">
However, several helper tools are also available for RPM packagers. These tools can be used at various stages in the process of producing a high-quality RPM package to simplify the tasks that an RPM packager must perform. These tools include syntax-highlighting modes for various text editors, making production and maintenance of spec files easier; macro packages for popular text editors, simplifying the generation and maintenance of spec files; tools that generate spec files, simplifying initial spec file creation; and debuggers that validate produced binary RPMs, helping ensure that the spec file used to create the packages is accurate and high quality.
- </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id814461" class="title">Using VIM spec plugins to improve spec file editing</h1></div></div></div><div class="para">
+ </div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id706360" class="title">Using VIM spec plugins to improve spec file editing</h1></div></div></div><div class="para">
Unix systems have traditionally shipped the legendary (or notorious, depending upon your point of view) vi editor (pronounced vee eye) as their default text editor. Vi was initially developed by Bill Joy in 1976 for BSD Unix. It eventually was incorporated in AT& T System V Unix as well and later was mandated by the POSIX 1003 standards (which define what an OS must have to be Unix-compatible), thereby conquering all facets of the Unix world.
</div><div class="para">
The original vi source code is no longer freely available, but several clones of the vi program have been created over the years. The most popular of these vi clones is probably Vi IMproved, or VIM (www.vim.org) VIM is the standard vi implementation (meaning that when you type vi at the command prompt, the program you really are running is vim) on many Linux distributions, including Red Hat Linux. It is also freely available for most other Unixes and even for non-Unix systems such as Microsoft Windows.
@@ -10026,7 +10026,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Cross Reference
</div><div class="para">
You can find out more about vim at www.vim.org.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id938128" class="title">Adding functions with emacs rpm-spec-mode</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id675329" class="title">Adding functions with emacs rpm-spec-mode</h1></div></div></div><div class="para">
Of course, not everyone in the world uses VIM. Another commonly used editor is the emacs editor originally developed by Richard M. Stallman. Unlike vi, emacs is not considered an essential Unix component and is not always found installed on a Unix system, although it is bundled with just about every Linux distribution.
</div><div class="para">
Over the years, two major emacs variants have emerged. GNU Emacs is produced by the Free Software Foundation and can be downloaded from www.gnu.org/software/emacs/emacs.html. XEmacs is based on GNU Emacs and is available from www.xemacs.org. Historically, the two differed in their user interfaces (XEmacs, as the name suggests, had an X Window interface, though GNU Emacs has one as well these days) and in some technical details of how they operated. Both are freely available under the terms of the GNU GPL, so you can download and try either or both if they are not already on your system.
@@ -10191,7 +10191,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Furthermore, rpm-spec-mode even adds macros to emacs that can be used to build RPMs from spec files without even having to exit emacs! Since the process of constructing spec files is often iterative (make new spec, build RPM from spec, find mistake, edit spec, build RPM from spec, find mistake, and so on), this capability of emacs to be used as an IDE for RPM package generation is extremely useful. Basic macros exist to do complete builds (Ctrl+C B to build a binary package, Ctrl+C S to build a source package, and Ctrl+C A to build both). Macros can also be used to execute various intermediate steps, such as the %prep stage (Ctrl+C P), the %build stage (Ctrl+C C), or the %install stage (Ctrl+C I). Various options of the build process can also be controlled, such as GPG-signing of generated packages.
</div><div class="para">
If you are a user of GNU Emacs or XEmacs, you should definitely take the time to learn to use rpm-spec-mode. Being able to build packages from within the editor where you are editing the spec file that builds those packages is a great productivity gain for many people.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id792204" class="title">Validating and debugging spec files with rpmlint</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id592557" class="title">Validating and debugging spec files with rpmlint</h1></div></div></div><div class="para">
Both VIM and emacs extensions help with the process of initially creating spec files and with the maintenance of existing RPM spec files. After a spec file has been created, and RPMs have been created using that spec, the binary RPMs generated from the spec can be validated using the rpmlint command. The name rpmlint comes from lint, the traditional Unix utility that can "sanity-check" C source code, looking for certain classes of common C coding mistakes. The idea behind rpmlint is similar; it processes binary RPMs, checking for certain common mistakes made by RPM packagers.
</div><div class="para">
The rpmlint command currently ships with a wide variety of checks and is written using a modular interface so that additional checks can easily be added if needed. Currently, rpmlint can check that all binary files in the package are correct (making sure that a .noarch.rpm package does not contain binary files, that no binaries are being installed in /etc, that the binary file types in the package are appropriate for the package architecture, that shared libraries are configured correctly, and that all executables are stripped). It can also check the validity of files marked as configuration files in the RPM (ensuring that configuration files are only being installed in /etc, not in /usr) and that the package file complies with the distribution's policies for packages (checking things such as the compression of man pages and Info pages and the correctness of vendor and distribution fields in the package header).
@@ -10245,7 +10245,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
With this output, the binary package looks fine. You should set a I don’t bother setting a vendor, distribution, and packager but you can ignore those warnings. Similarly, rpmlint warns because it does not recognize the license type used, "distributable". You can fix this, you can ignore this, or you can modify /etc/rpmlint/config so that rpmlint recognizes "distributable" as a valid license.
</div><div class="para">
The sorts of validity checks that rpmlint can do make it valuable for ensuring the quality and consistency of RPMs. Most RPM-based Linux distributions validate their entire distribution using rpmlint. Using it for packages you prepare is a good idea as well.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id528594" class="title">Generating the %files section with RUST</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id559265" class="title">Generating the %files section with RUST</h1></div></div></div><div class="para">
For the most part, maintaining RPM spec files is relatively straightforward. Creating spec files from scratch, however, can be a little bit more challenging. Tools like rpm-spec-mode for emacs can help with the process, generating skeleton spec file templates that can be filled in, but these sorts of tools do not address the step that most new RPM packagers seem to find most difficult: generating the %files section. Creating a complete, accurate list of all needed files supplied by an application can be difficult, particularly when it is an application with which you are unfamiliar. Most software supports installation to a temporary location; if the software you are packaging allows this, generation of %files is (almost) as simple as using BuildRoot to install the application to a temporary directory, then running an ls -lR command in that subdirectory to see all the installed files and directories. Even then, though, the output from ls -lR must be cleaned up and converted
into %files format for adding to the spec file. All of this takes time.
</div><div class="para">
A couple of tools exist to reduce the amount of work needed for this stage of the process, automating the generation of the %files section of spec files. The most sophisticated of these toolsets is RUST.
@@ -10265,7 +10265,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
The rust command provides a graphical interface that can be used to control crust and supports drag-and-drop creation of spec files. In the rust interface, two file trees are displayed. The left-hand tree displays the local file system, while the right-hand tree displays the file tree inside the crust chroot() jail. Files that should be packaged together can just be dragged from their current locations on the system (displayed in the left-hand tree) to their final destinations in the right-hand tree. You can then click the makeRPM choice to generate an RPM containing those files. Although not terribly useful for packages being generated from source code, this feature can greatly simplify creation of RPMs of applications that are only supplied in binary format (such as the Linux Adobe Acrobat reader).
</div><div class="para">
RUST's rust application can be useful in some circumstances (providing new developers a graphical tool that can be used to generate binary RPMs), and crust is more generally useful for packaging difficult-to-package software that needs to be built and installed in a chroot() jail. Unfortunately, development of RUST appears to have stopped, so extension of RUST to become a more generally useful IDE for RPM generation is not likely to happen. However, the project is licensed under the GNU GPL (<a class="xref" href="#ch-licensing">Chapter 27, <em>Licensing RPM</em></a> ), so it might be resumed by another developer or team of developers.
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id690437" class="title">setup.sh and MakeRPM.pl</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id646375" class="title">setup.sh and MakeRPM.pl</h1></div></div></div><div class="para">
Other tools that have been developed to simplify the process of creating an RPM spec file take an entirely different approach. Tools such as setup.sh, available from www.mmedia.is/~bre/programs/setup.sh, are intended to function as wrappers around the existing build commands (./configure and make) for software. These types of tools take the approach of using the standard build tools for software (since those tools must always be used to build the software, whether using RPM or compiling the software from a source tarball) and capturing the output to generate an RPM spec file automatically.
</div><div class="para">
The MakeRPM.pl Perl script, available from www.perl.com/CPAN/modules/by-authors/id/JWIED, is another example of such an approach. MakeRPM.pl is a more specialized tool than setup.sh, as MakeRPM.pl is intended only for producing RPMs from Perl modules packaged in CPAN (www.cpan.org) It is implemented as a wrapper around the standard commands (perl Makefile.PL ; make ; make test ; make install) used to install Perl CPAN software.
@@ -10275,7 +10275,7 @@ $ rpm -qpl qt-4.6.2-17.fc12.x86_64.rpm
Cross-reference
</div><div class="para">
For more discussion of the future of RPM, you can turn to <a class="xref" href="#ch-rpm-evolution">Chapter 23, <em>RPM Feature Evolution</em></a> .
- </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id708748" class="title">Manipulating Package Files with rpm2cpio</h1></div></div></div><div class="para">
+ </div></div><div class="sect2"><div class="titlepage"><div><div keep-together.within-column="always"><h1 id="id646438" class="title">Manipulating Package Files with r