Standards/RPM Metadata/repomd

aus openSUSE, der freien Wissensdatenbank

Inhaltsverzeichnis

Depotindexdatei

Spezifikation

Die aktuelle Spezifikation ist hier verfügbar, allerdings trifft diese Spezifikation nicht das Format, welches die meisten Werkzeuge verwenden, weshalb wir hier eine alternative Spezifikation anbieten:

Aktuelle Spezifikation plus Erweiterungen von Novell

Sicherheitsprüfung

Im selben Verzeichnis in dem sich die Datei repomd.xml befindet, kann es auch eine Datei namens repomd.xml.asc geben.

repomd.xml.asc sollte die digitale Signatur der signierten repomd.xml mit einem vertrauenswürdigen Schlössel sein. Optional kann dort auch eine repomd.xml.key-Datei sein, welche den Schlüssel enthält, falls der Nutzer diesen noch nicht hat. In diesem Fall sollte der Nutzer gefragt werden, ob er diesem Schlüssel vertrauen möchte oder nicht.

Das Sicherheitsmodell besteht darin, dass der Nutzer der Indexdatei vertraut und sie akzeptiert. In dieser sind wiederum alle verknüpften Dateien mit Prüfsummen hinterlegt, wodurch es nicht möglich ist, eine aufgeführte Datei zu ändern, ohne auch die Indexdatei zu ändern.

Format

Dies ist eine Erweiterung des Standards durch Novell. Es kann sein, dass sie noch nicht in den offiziellen Standard eingeflossen ist.
( http://linux.duke.edu/projects/metadata )
Verwenden Sie diese Erweiterung mit Vorsicht, wenn Sie die Kompatibilität mit Produkten von Drittanbietern nicht gefährden wollen.

repomd.rnc-Dateispezifikation in relaxng compact Syntax

default namespace = "http://linux.duke.edu/metadata/repo"

element repomd {
  element data {
    attribute type { "other" | "filelists" | "primary" | "group" | "product" | "patches" | "pattern" }&
    element location {
      attribute xml:base { xsd:anyURI }?,
      attribute href { xsd:anyURI },
      empty
    }&
    element checksum {
      attribute type { "md5" | "sha" },
      text
    }&
    element timestamp { xsd:integer }&
    element open-checksum {
      attribute type { "md5" | "sha" },
      text
    }?
  }+&
  text
}

Beispiel repomd-Datei

<?xml version="1.0" encoding="UTF-8"?>
<repomd xmlns="http://linux.duke.edu/metadata/repo">

<data type="primary">
    <location href="repodata/primary.xml.gz"/>
    <checksum type="sha">d70ba931f304a0bc1740deeaaf2a6bff62981ab7</checksum>
    <timestamp>1165253780</timestamp>
    <open-checksum type="sha">35864cccfa0553fce9e43438c70b9bb83f64bc6c</open-checksum>
  </data>
  <data type="filelists">
    <location href="repodata/filelists.xml.gz"/>
    <checksum type="sha">9f2579b7698442e4f419c82c4671be0417ce5627</checksum>
    <timestamp>1165253780</timestamp>
    <open-checksum type="sha">a97b92c82a74a7960d8ab51214983afc38003cbf</open-checksum>
  </data>

Die andere Sektion listet Extradaten wie Änderungsprotokolle auf.


  <data type="other">
    <location href="repodata/other.xml.gz"/>
    <checksum type="sha">e4f71c1feb11a717944e43230dd2bc3c6166b36e</checksum>
    <timestamp>1165253780</timestamp>
    <open-checksum type="sha">e132e9230abb26c4395e6d97065907292b0a4845</open-checksum>
  </data>

Sie können eine Verknüpfung zu einer patches-Datei anlegen, welche einen oder mehrere Patches enthält.


  <data type="patches">
    <location href="repodata/patches.xml"/>
    <checksum type="sha">1f30e2c0e97a70c3882e525d060c8491c32ab937</checksum>
    <timestamp>1165253780</timestamp>
    <open-checksum type="sha">1f30e2c0e97a70c3882e525d060c8491c32ab937</open-checksum>
  </data>
</repomd>


Vorgeschlagene Änderungen

Die Spezifikation hier enthält schon einige der gewünschten Änderungen.

  • Beschreibung und andere Metadaten zum Paketdepot
  • Liste komprimierter und unkomprimierter Größen der Dateien. Nützlich für die Anzeige von Vortschrittsinformationen beim Lesen einer komprimierten Datei.