Руководство по упаковке файлов AppData

Если пакет содержит приложение с графическим интерфейсом, он СЛЕДУЕТ установить файл .metainfo.xml в %{_metainfodir}. Установленные файлы .metainfo.xml ДОЛЖНЫ соответствовать странице спецификации AppStream.

Если пакет содержит дополнение для приложения с графическим интерфейсом, он СЛЕДУЕТ установить файл .metainfo.xml в %{_metainfodir}. Установленные файлы .metainfo.xml ДОЛЖНЫ соответствовать спецификации дополнений AppStream.

Файлы AppData ДОЛЖНЫ корректно проходить проверку с помощью appstream-util validate-relax.

Файлы appdata.xml
По историческим причинам спецификация AppStream также допускает использование расширения .appdata.xml для приложений с графическим интерфейсом. Если upstream-проект предоставляет метаданные с расширением .appdata.xml, их МОЖНО использовать вместо .metainfo.xml.

Создание файла .metainfo.xml

Если пакет ещё не включает и не устанавливает собственный файл .metainfo.xml, вы можете создать свой и отправить его в upstream-проект. Некоторые преимущества отправки файла в upstream-проект заключаются в том, что upstream может перевести файл, используя существующие ресурсы перевода, а также может изменять скриншоты и описания по мере изменения приложения со временем.

Вы можете включить созданный вами файл .metainfo.xml как Source: (например, Source3: %{name}.metainfo.xml) или сгенерировать его в spec-файле.

Вот содержимое примера файла .metainfo.xml приложения (comical.metainfo.xml):

<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2014 Richard Hughes <richard@hughsie.com> -->
<component type="desktop">
  <id>comical.desktop</id>
  <metadata_license>CC0-1.0</metadata_license>
  <project_license>GPL-2.0+ and GFDL-1.3</project_license>
  <name>Comical</name>
  <summary>A Comic Archive Reader</summary>
  <summary xml:lang="fr">Un Comic Archive Lecteur</summary>
  <description>
    <p>
      Comical is an easy to use and cross-platform CBR and CBZ reader which
      prefetches and caches pages for speed.
    </p>
    <p xml:lang="fr">
      Comical est une CBR et CBZ lecteur facile à utiliser et
      multi-plateforme qui prélectures et caches pages pour la vitesse.
    </p>
    <p>
      Resized images are crisp, and you can view pages one or two at a time.
      Comical is open-source, so feel free to contribute new features!
    </p>
    <p xml:lang="fr">
      Images redimensionnées sont nettes, et vous pouvez voir une ou deux pages à la fois.
      Comical est open-source, alors n'hésitez pas à apporter de nouvelles fonctionnalités!
    </p>
  </description>
  <screenshots>
    <screenshot type="default">
      <image>http://comical.sourceforge.net/images/comical-0.5-linux.jpg</image>
    </screenshot>
    <screenshot>
      <image>http://comical.sourceforge.net/images/comical-0.6-win32.jpg</image>
    </screenshot>
  </screenshots>
  <url type="homepage">http://comical.sourceforge.net/</url>
  <update_contact>richard_at_hughsie.com</update_contact>
</component>

Файл AppData приложения ДОЛЖЕН быть назван с тем же корнем, что и файл .desktop, поэтому если файл .desktop называется org.gnome.SomeApp.desktop, то файл AppData ДОЛЖЕН называться org.gnome.SomeApp.metainfo.xml.

Вот содержимое примера файла .metainfo.xml дополнения (gedit-bookmarks.metainfo.xml):

<?xml version="1.0" encoding="UTF-8"?>
<component type="addon">
  <id>gedit-bookmarks</id>
  <extends>gedit.desktop</extends>
  <name>Bookmarks</name>
  <summary>Easy document navigation with bookmarks</summary>
  <url type="homepage">https://wiki.gnome.org/Apps/Gedit/ShippedPlugins</url>
  <url type="bugtracker">https://bugzilla.gnome.org/enter_bug.cgi?product=gedit&amp;component=Plugins</url>
  <metadata_license>CC0-1.0</metadata_license>
  <project_license>GPL-2.0+</project_license>
</component>

Вы можете использовать в качестве <id> что угодно, но он должен быть уникальным и осмысленным, а также совпадать с префиксом имени файла .metainfo.xml.

Использование app-data-validate

Хотя вы можете просто включить файл .metainfo.xml в пакет, вы ДОЛЖНЫ запустить appstream-util validate-relax (в %check или %install) и указать BuildRequires: libappstream-glib, чтобы помочь обеспечить достоверность и безопасность устанавливаемых файлов appdata. Пример:

appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.metainfo.xml