- Prev
- AppStream
- Next

## ⁠2.14. Repositories

### ⁠2.14.1. Introduction

A repository component describes a remote archive of digital content, usually other software or additional data (e.g. themes, icons, books, music, ...). Upon installation of a component of this type, the repective repository is added to the system and activated, letting the user access the new content.
The metadata described in this document is built upon the generic component metadata (see Section 2.1, “Generic Component”). All tags valid for a generic component are valid for a `repository` component as well.
In order to add metadata about a software repository, projects can provide one or more metainfo files in `/usr/share/metainfo/%{id}.metainfo.xml`.

### ⁠2.14.2. File specification

The basic structure for a generic component as described at Section 2.1.3, “XML Specification” applies. Note that the XML root must have the `type` property set to `repository`, while in a generic component this property can be omitted. This clearly identified this metainfo document as describing a repository.
The following list describes tags for `repository` upstream metadata and provides some additional information about the values the tags are expected to have. If no information is given about a tag, refer to the respective tag in Section 2.1, “Generic Component”.

⁠<id/>
  For repositories, the `<id/>` tag value must follow the AppStream ID naming conventions (it should be a reverse-DNS name).
<metadata_license/>
  The `<metadata_license/>` tag as described in <metadata_license/> must be present.
<name/>
  A `name` must be present for repositories. See <name/> for a detailed description of this tag.
<summary/>
  A `summary` must be present for repositories. See <summary/> for a detailed description of this tag.
⁠<extends/>
  This tag is refers to the ID of the component this repository is added to, similarly to how components of type `addon` work.
  Adding an `extends` tag ensures the respective repository is tied to its main component, e.g. a source for firmware downloads is tied to the firmware update service, or a repository for a site-specific package manager is tied to the tool that can actually install pieces from the repository.
  The `<extends/>` tag may be specified multiple times.
⁠<agreement/>
  It is recommended to add a GDPR compliant privacy statement to `repository` components, in case any personal data is acquired when the repository is accessed.
  The `agreement` tag allows to add a privacy statement and other agreements easily. Refer to the <agreement/> tag as described for generic components for information on how to use agreements in AppStream.

For a component of type `repository`, the following tags are required and must always be present: <id/>, <metadata_license/>, <name/>, <summary/>.

- Prev2.13. Localization
- Up
- Home
- Next2.15. Operating System