The operating-system
component type describes a whole operating system such as GNU/Linux distributions
like Debian, Fedora, RHEL, etc. or Windows and macOS.
Operating systems can ship metainfo files in /usr/share/metainfo/%{id}.metainfo.xml
.
An operating-system
metainfo file can look like this:
<?xml version="1.0" encoding="UTF-8"?>
<component type="operating-system">
<id>org.debian.debian</id>
<name>Debian GNU/Linux</name>
<summary>The universal operating system</summary>
<description>
<p>
Debian is a free operating system (OS) for your computer.
An operating system is the set of basic programs and utilities that make your computer run.
</p>
...
</description>
<url type="homepage">https://www.debian.org/</url>
<metadata_license>FSFAP</metadata_license>
<developer id="debian">
<name>The Debian Project</name>
</developer>
...
<releases>
<release version="10.0" type="development">
<description>
<p>The next release of Debian.</p>
</description>
</release>
<release version="9.0" date="2017-07-17" date_eol="2020-07-17">
<description>
<p>Now contains the Linux kernel 4.9, GNOME 3.22, KDE Plasma 5, LibreOffice 5.2 and Qt 5.7. LXQt has been added.</p>
</description>
</release>
...
</releases>
</component>
Note that the XML root must have the type
property set to operating-system
.
This clearly identifies this metainfo document as describing an operating system.
For operating systems, the value of the <id/>
tag must follow the reverse-DNS scheme as described for generic components.
In order for AppStream consumers to determine which component is describing the operating system they are currently running on,
on Linux distributions the component ID must follow the data provided in the operating system's /etc/os-release
file.
This means the reversed-DNS HOME_URL
value from /etc/os-release
(without any https/www parts) combined
with the ID
of the operating system will produce the operating system's component id.
E.g. if HOME_URL
is https://www.debian.org/
and ID
is debian
, the resulting AppStream
component-ID will be org.debian.debian
.
The <releases/>
tag as described in <releases/> must be present and contain the individual
releases of the operating system.
It is also recommended to set the date_eol
property on individual releases, to allow software to determine
whether the current operating system release is still supported.
For a component of type operating-system
, the following tags are required and must be present for a valid document:
<id/>, <name/>, <summary/>,
<metadata_license/>, <releases/>.