Changelog

2005.08.22: 0.0: Initial proposal (Ignacio Vazquez-Abrams)

Introduction

RPM (RPM Package Manager) is at the heart of Fedora Core. It's responsible for installing new software, as well as tracking files so that the same software can be uninstalled with a minimum of fuss. But RPM on its own doesn't actually do anything. It's up to the packager to specify how a package is built, as well as explaining what sort of files the package contains, and what other packages it relies upon for proper operation.

Structure of a package

Header
This contains things such as the name, version, release, epoch, and architecture the package was built for, as well as what this package requires from other packages and what it provides to other packages.

Files
This contains all files, directories, symlinks, etc. contained in the package, as well as the size, permissions, ownership, and SELinux file context.

Scripts
This contains the scripts to be done on package install and uninstall, as well as the script done during a RPM verify.

Modifying an existing package

(go through the various reasons why one would want to modify an existing package)

Case Study: PHP

(modify the PHP package for adding <capability>)

Creating a new package

(reiterate RPM's file tracking capabilities vs. tarballs)

Case Study: (TBD)

(go through building a new package for (TBD))

Appendix: mock: Chroot Buildtool

(description of what a chroot is)
(description of mock's command-line arguments)
(description of mock's config file structure)

Appendix: plague: Distributed Buildsystem

(description of what "distributed" means, as well as plague's cross-platform capabilities)
(description of how to configure plague-builder and -server)
(description of how to use plague-client)