openSUSE:Standards YaST2 Repository Metadata
tagline: From openSUSE
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.
- 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.
The YaST metadata is rooted at two files
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.
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
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)
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.
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.
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#
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