createrepo/rpm metadata

This project defines the rpm-metadata (repodata) format and maintains one of the programs (createrepo) which create this format from existing rpms and other sources.

rpm metadata

This is an XML format for describing the critical metadata from an rpm package for dependency resolving and installation. Currently, this format is supported by apt-rpm,smartpm,red carpet and yum.

The files break down as follows:

  • repomd.xml this is the file that describes the other metadata files. It is like an index file to point to the other files. It contains timestamps and checksums for the other files. This lets a client download this one, small file and know if anything else has changed. This also means that cryptographically (ex: gpg) signing this one file can ensure repository integrity.
  • primary.xml.[gz] this file stores the primary metadata information. This includes information such as:
    • name, epoch, version, release, architecture
    • file size, file location, description, summary, format, checksums header byte-ranges, etc.
    • dependencies, provides, conflicts, obsoletes, suggests, recommends
    • file lists for the package for CERTAIN files - specifically files matching: /etc*, *bin/*, /usr/lib/sendmail [1]
  • filelists.xml.[gz] this file stores the complete file and directory listings for the packages. The package is identified by: name, epoch, version, release, architecture and package checksum id.
  • other.xml.[gz] this file currently only stores the changelog data from packages. However, this file could be used for any other additional metadata that could be useful for clients.
  • groups.xml.[gz] this file is tentatively described. The intention is for a common package-groups specification as well. There is still some sections for this format that need to be fleshed out.

FIXME The specification needs better and more current documentation and needs to be included here. :)


A python program which generate the above format from a set of rpm files.

Get Createrepo

  • createrepo:
    • 0.4.11 - Latest 'stable' series
    • 0.9.8 - Latest 'development' series - Requires yum >= 3.2.23

Basic Use

Normal and mildly advanced usage docs

Source Code

To pull anonymously from git do the following

  • createrepo

git clone

Web based Source Access


Commit Access

If you have commit access you should use ssh. You can access the git trees via:

git clone ssh://


The rpm-metadata list is available for all communication about the metadata format or createrepo.

File a Bug