openSUSE:Standards YaST2 Repository Metadata

Jump to: navigation, search


YaST Repository Metadata Format

The YaST format is still supported for CD/DVD installation due to the inflexibility of XML parsers. XML parsers tend to read a file completely which is not useful in low memory situations like we have during initial installation.

Additionally, the YaST format supports a repository spread across multiple media (e.g. CDs), a feature not initially possible with repomd. Recent updates to the repomd format indicate that this limitation is lifted now.

Features

  • Multiple products per media
    A media may contain several products, i.e. a combined patch media.
  • Multiple architectures per product
    A media may contain products for multiple architectures.
  • Bi-Arch support
    An architecture may be bi-arch, where mixing of compatible architectures is allowed.
  • Multiple languages per product
    A media may contain products for multiple languages.
  • Media sets
    a) The content may be splitted onto multiple media - which form a media set.
    b) It must be able to merge a media set into a single directory.
    c) Media might be double-sided (e.g. DVD-ROM).
  • A media must be easily recognizable by the system
    This is needed when re-inserting a cd-rom media for further package installation. The system must verify that the correct media is inserted and can be used for package installation.
  • product name
  • product version
  • base distribution
    specify the distribution the product is based on.
  • base distribution version
  • product vendor
  • user-readable content description
    This is needed to present media information to the user prior to installing packages. The user must be able to decide on this information to proceed or cancel the installation process.
  • package path
    toplevel path to packages (i.e "suse/" on SuSE media, "unitedlinux/" on UL media, etc.)
  • default language
    default language if no language is determinable.
  • inital server for online update
  • no wildcard search for files
    doing a wildcard search is cheap on a local media but almost impossible via HTTP. So it should be avoided if possible.

Specification

Repository layout

The YaST metadata is rooted at two files

content file

The content file describes the product (name, version, dependencies) and the repository layout. It also contains data used to control YaST during installation of the product.

media.1/media

The media file describes the media format used to find and recognize all media belonging to the same set.

The package description directory

The content file contains links to two other directories of the repository

DESCRDIR

They are all connected via the content file. It defines a DESCRDIR which contains patterns, selections, and packages files.

In order to access patterns and selections, their filenames must be listed in <DESCRDIR>/patterns resp. <DESCRDIR>/selections

This is required since a wildcard match (i.e. <DESCRDIR>/*.pat is not supported with every transport; there is not standard way to do ls via http)

DATADIR

The DATADIR (usually suse/ on most installation media) contains the installation data -- rpm packages.

The packages are organized in per-architecture sub-directories.

The subdirectory setup is an exception as it contains no packages but further metadata. See DESCRDIR.

Each such directory contains a file listing the patterns and a file listing the packages.

Example

linux# grep Enterprise /mnt/media.1/products
sles   SuSE Linux Enterprise Server
linux# grep DESCRDIR /mnt/sles/content
DESCRDIR suse/setup/descr
linux# ls -R /mnt/sles/suse/setup/descr
...
packages
selections
...
linux#

The packages file

This is basically a cache file for package data needed for package selection and dependency resolution. See current here for the syntax.

The packages file must exist in order to enable a media.

The package file contains pure package / rpm data and no user readable string (i.e. translations).

The packages.LANG file

For each language defined in content:LINGUAS a packages.LANG file exists in the content:DESCRDIR directory. This file contains translated strings (i.e. package summary, description, etc.) to be viewed by the user.

The packages.LANG file might be ommitted. The package summary defaults to name-version-release.architecture in this case.
See [lang-descr.html here] for a format definition of such a file.

The packages.DU file

This file contains disk usage information for each package and directory used by the package. It it used to approximate file system requirements esp. when multiple partitions (i.e. for /usr, /var, /opt, ...) are used. Exact usage information can't be computed by YaST since it heavily depends on hard or symbolic links (either in the package or in the file system) and the filesystem in use (i.e. ext2 vs. reiserfs). See [du-descr.html here] for a format definition of this file. (N.B. The .DU suffix does not interfere with the .LANG suffix since the language suffix starts with lower case letters.)

The packages.DU file might be ommitted. No size estimations can be given in this case.

Example

 linux# grep Enterprise /mnt/media.1/products
 sles   SuSE Linux Enterprise Server
 linux# grep DATADIR /mnt/sles/content
 DATADIR suse
 linux# grep ^ARCH /mnt/sles/content
 ARCH.x86_64 x86-64 i686 i586 i486 noarch
 ARCH.i586 i586 i486 noarch
 linux# ls -R /mnt/sles/suse
 ...
 x86-64/
 i686/
 i586/
 i486/
 noarch/
 ...
 linux#

Patterns

Pattern syntax.

Metadata Signature and Checksum

Read the Metadata Signature model.

Based on this model, the master index is content file, and the signature has to be provided as content.asc.

The public part of the key used to sign the master index can be provided as content.key

See also