openSUSE:Standards Rpm Metadata Patches

Jump to: navigation, search

Repomd Patch Format

Susemini.png
Version:
Code 10
This format is only used on Code10 based distributions (SLE 10.x and SUSE Linux 10.x)
For Code 11 and later see updateinfo.xml)


For a correct and complete example files, look at the attachment below

If you haven't done so already, please read the rationale concerning patches first.

The rest of this page is INCOMPLETE !!!

Header information

The patch xml representation starts with a normal header and <patch>:

<?xml version="1.0" encoding="UTF-8"?>
<patch 
xmlns="http://novell.com/package/metadata/suse/patch"
xmlns:patch="http://novell.com/package/metadata/suse/patch"
xmlns:yum="http://linux.duke.edu/metadata/common" 
xmlns:rpm="http://linux.duke.edu/metadata/rpm" 
xmlns:suse="http://novell.com/package/metadata/suse/common"
patchid="foo-12321"
timestamp="2342342"
engine="1.0">
  • patchid is the internal (as far as maintenance is concerned) name
  • timestamp is the build date of the patch


Name, version, etc.

It then continues with normal repomd stuff for name, version, etc.

<yum:name>foo</yum:name>
<summary lang="en">install if you have lots of foo</summary>
<description lang="en">fixes Bug #231312</description>
<yum:version epoch="0" ver="1" rel="2"/>
<arch>i586</arch>

So we're looking at patch foo-1.2.i586 here.

Dependencies

A patch can have a full set of dependencies as explained here.

Most important for patches are two conditions

  • Is this patch needed at all (The why) ?
  • Which packages are needed (The what) ?

The why question is answered by a freshen dependency:

<suse:freshen><suse:entry kind="package" name="blah"/></suse:freshen>

This means: If package blah is installed, consider this patch.

(If package blah is not installed, this patch is not further considered).

The what is answered by normal requires dependency:

<rpm:requires><rpm:entry kind="package" name="blah" ver="5" rel="6" flags="GE"/></rpm:requires>

Both (freshens and requires) dependencies together express:

= If package blah is installed, it should be blah =>= 5.6

It is important to note that the freshen is completely independent from the requires.

All depedencies carry a kind attribute to denote if the dependency targets a patch or a package.

Category

There are currently three categories defined security, recommended, optional.

<category>security</category>

Related Resources

  • Inst-source-utils - This package contains createpatch, which will create a repo for SLE10 systems. Using in conjunction with the package makepatchrpm, you can make a patch repository.