Документация
ОС Аврора 4.0.1

Валидатор RPM-пакетов

Валидатор проверяет установочные пакеты для ОС Аврора на соответствие требованиям. Он вызывается автоматически при установке RPM-пакетов на устройства с ОС Аврора. Пакеты, не прошедшие валидацию, не могут быть установлены.

Также валидатор установочных пакетов можно запустить в среде сборки или IDE, в том числе с помощью диалога.

Валидатор позволяет проверять rpm-пакет приложения, подписанного ключом заданного профиля. Для каждого профиля предусмотрены индивидуальные особенности проверки. Профиль валидатора можно указать как аргумент при вызове из командной строки или выбрать опцию в диалоге валидации.

Валидатор регулярно обновляется. Информация об изменениях в валидаторе и в профилях содержится в разделе История изменений.

Содержание:

Внимание! Всегда следует обращать внимание на предупреждения RPM-валидатора. При наличии предупреждений установка пакета в одном из следующих выпусков ОС Аврора может стать невозможной.

Как убедиться, что установка пакета будет возможной в ОС Аврора

  • Для проверяемого пакета необходимо запустить rpm-validator.
  • При наличии ошибок или предупреждений, перечисленных в таблицах ниже, пакет не сможет быть установлен на ОС Аврора. В противном случае пакет сможет быть установленным на ОС Аврора.

Описание изменений в требованиях к установочным пакетам

Некоторые предупреждения RPM-валидатора, появившиеся в предыдущих релизах, в новых версиях ОС Аврора станут ошибками, что приведёт к невозможности установки пакетов. Также в новых версиях добавляются новые предупреждения, которые допускают установку пакетов, содержащих их, в текущей версии ОС Аврора, но приведут к невозможности установки пакетов в будущих релизах.

Изменения в требованиях RPM-валидатора Рекомендация по исправлению
Критичные
Нарушение этих требований приведёт к невозможности установки пакета, начиная с релиза ОС Аврора 5.1
OrganizationName and ApplicationName pair should form a package name
(e.g. for package "com.example.app" ApplicationName must be "app"
and OrganizationName must be "com.example")
обратная доменная нотация именования пакетов обязательна
Использовать обратную доменную нотацию для значения поля Name в .spec файле. Например, ru.omp.example
[/usr/bin] Direct package ownership of /usr/bin is disallowed.
прямое владение директорией /usr/bin в пакете запрещено
Убедиться, что /usr/bin не используется в списке файлов/путей rpm пакета
OrganizationName should follow reverse domain notation (at least up to second-level domain), e.g.: "org.example"
уровень OrganizationName не может быть меньше двух
Убедиться, что OrganizationName содержит не меньше двух доменов.
Например, (ru.omp)
X-Application секция в desktop файле обязательна
Отсутствие секции может привести к разным предупреждениям на версиях ОС до 5.1
Добавить секцию X-Application в desktop-файл согласно описанию
Installation not allowed in this location
Использование следующих установочных путей запрещено:
/usr/share/dbus-1/services/.*
```/usr/lib(
64)/systemd/system/..service <br>/etc/dbus-1/system.d/. <br>/etc/userdata-wiper/override.json```.
Предупреждения
нарушение этих требований может привести к невозможности установки пакета в будущих релизах Авроры
[libsailfishaapp] Library is unstable or deprecated
Библиотека libsailfishapp устарела и будет удалена в будущих релизах
Вместо libsailfishaapp следует использовать libauroraapp

Информация о версиях RPM-валидатора доступна в разделе История изменений.

Запуск валидатора в среде сборки

Утилиту командной строки rpm-validator можно запустить в среде сборки:

rpm-validator -p {профиль_безопасности} [параметры запуска] {путь_к_RPM-пакету}

Указанный профиль безопасности должен соответствовать сертификату разработчика приложения. Используемый профиль ограничивает список разрешенных зависимостей (библиотек, модулей Qt и QML), допустимых путей для размещения файлов.

Предусмотрено несколько профилей безопасности:

Regular
Базовый профиль для разработки стандартных приложений.
Extended
Профиль, наследуемый от Regular, с дополнительными компонентами для разработки vpn-клиентов.
MDM
Профиль, наследуемый от Extended, с дополнительными компонентами для работы с mdm.
Antivirus
Профиль, наследуемый от Regular, с дополнительными компонентами для разработки антивирусного программного обеспечения.

Полный список разрешённых зависимостей для каждого профиля можно найти в разделе Допустимые зависимости приложений ОС Аврора.

Результат валидации

Значение errorlevel Описание
0 Проверка пройдёна успешно
1 Пакет не прошел проверку
2 Проверка пройдена, но имеются замечания

О значении ошибок и замечаний валидации см. Сообщения вывода.

Параметры запуска

-v | --version
Показать версию валидатора.
-h | --help
Показать подсказку (команда запуска валидатора и параметры запуска).
-p | --profile
Указать профиль для проверки пакета. По умолчанию профиль regular.

Валидатор в Аврора IDE

Валидатор RPM-пакетов также можно запускать в Аврора IDE:

  1. Переключить IDE в режим Проекты и открыть настройки запуска необходимого комплекта для сборки.

  2. Выбрать конфигурацию запуска.

  3. Удостовериться, что в этапах запуска есть RPM Validation. В противном случае:

    1. Добавить этап RPM Validation в выпадающем меню Развёртывание, добавить этап.

    Добавление этапа RPM Validation

    1. Разместить этап RPM Validation перед этапом RPM Deploy.
  4. Выбрать нужный профиль валидации в выпадающем списке Profiles.

    Выбор профиля RPM Validation

  5. В случае необходимости добавить параметры запуска в поле Аргументы.

  6. Запустить сборку и установку приложения. В консоли сборки будут отображены сообщения вывода валидатора и результат.

Сообщения вывода

В выводе команды валидатора отображаются проверяемые блоки согласно требованиям к RPM-пакетам. Для блоков проверки предусмотрены следующие типы сообщений.

Сообщение о проверке блока Описание
INFO Информационное сообщение
PASSED Проверка пройдена успешно
FAILED Есть ошибки валидации, установочный пакет не соответствует требованиям
ERROR Сообщение об ошибке, которая является причиной того, что пакет не соответствует требованиям
WARNING Сообщение о статусе, который не препятствует валидации, но может привести к проблемам

Пример блока проверки QML-файлов в установочном пакете:

QML files
=========
INFO [/usr/share/app/qml/pages/MainPage.qml] Uses Sailfish Silica Components (only reported once)
ERROR [/usr/share/app/qml/pages/MainPage.qml] Import 'QtPositioning 5.0' is not allowed
INFO [app] Please see our FAQ here: https://community.omprussia.ru/doc/software_development/guidelines/rpm_requirements
FAILED

Пакет не прошёл валидацию, так как импортируемый QML-модуль не разрешён для использования в ОС Аврора.

Ниже представлена расшифровка сообщений для следующих блоков:

Domains

Тип сообщения Сообщение Причина Рекомендации по устранению
WARNING Package name should follow reverse domain notation (e.g. "org.example.app"). It will be mandatory in future versions. Имя пакета должно быть указано обратной доменной нотации (то есть "org.example.app") Изменить имя пакета

QML files

Тип сообщения Сообщение Причина Рекомендации по устранению
WARNING [{Название и версия QML модуля}] Import is unstable or deprecated Поддержка указанного QML-модуля прекращена и модуль будет запрещён для будущего использования либо модуль имеет нестабильный API Исключить из зависимостей данный модуль
ERROR [{Название и версия QML модуля}] Import is not allowed Импортируется запрещённый QML-модуль Исключить указанный модуль из зависимостей

Desktop file

Тип сообщения Сообщение Причина Рекомендации по устранению
WARNING X-Nemo-Application-Type should be silica-qt5 for apps importing Sailfish.Silica in QML Не указана строка X-Nemo-Application-Type, рекомендуется указать в строке silica-qt5, так как в QML-файлах может использоваться библиотека Sailfish.Silica Указать в .desktop-файле X-Nemo-Application-Type=silica-qt5
ERROR [desktop] Desktop file is missing В пакете отсутствует .desktop-файл См. требования путей к файлам
ERROR [desktop] Missing valid Name declaration inside Не указана или неправильно указана строка Name в .desktop-файле См. требования к файлу .desktop
ERROR [desktop] Missing valid Icon declaration inside Не указана или неправильно указана строка Icon в .desktop-файле, требуется указать См. требования к файлу .desktop
ERROR [desktop] Missing valid Exec declaration inside Не указана или неправильно указана строка Exec в .desktop-файле См. требования к файлу .desktop
ERROR [desktop] Missing valid Type declaration inside Не указана или неправильно указана строка Type в .desktop-файле Указать строку Type=Application
WARNING [desktop] X-Nemo-Application-Type should be silica-qt5 for apps importing Sailfish.Silica in QML Не указана строка X-Nemo-Application-Type, рекомендуется указать в строке silica-qt5, так как в QML-файлах может использоваться библиотека Sailfish.Silica Указать в .desktop-файле X-Nemo-Application-Type=silica-qt5
ERROR [desktop] X-Nemo-Application-Type must be silica-qt5 for sailfish-qml apps Требуется указать silica-qt5 в строке X-Nemo-Application-Type, в QML-файлах используется библиотека Sailfish.Silica Указать в .desktop-файле X-Nemo-Application-Type=silica-qt5
ERROR [desktop] X-Nemo-Application-Type not declared (use silica-qt5 for QML apps) Не указана строка X-Nemo-Application-Type См. требования к файлу .desktop
WARNING [desktop] X-Nemo-Application-Type should be silica-qt5 (not a Silica app?) Строка X-Nemo-Application-Type для приложений Silica должна иметь значение silica-qt5 См. требования к файлу .desktop
INFO [desktop] Application is a QML-only app Приложение реализовано только на QML См. требования к файлу .desktop
ERROR [sailjail] ApplicationName contains illegal characters Указанное имя приложения содержит недопустимые символы См. требования к файлу .desktop
ERROR [sailjail] Sailjail section is not allowed (use X-Sailjail instead) Раздел Sailjail не разрешён к использованию, используйте X-Sailjail См. требования к файлу .desktop
ERROR [sailjail] ApplicationName should be equal to main binary Указываемое имя приложения должно совпадать с именем главного бинарного файла См. требования к файлу .desktop
ERROR [sailjail] OrganizationName contains illegal characters Указанное название организации содержит недопустимые символы См. требования к файлу .desktop
ERROR [sailjail] OrganizationName may not start with a number Указываемое название организации не может начинаться с цифры См. требования к файлу .desktop
ERROR [{Разрешение}] Permission is not allowed Указанное разрешение недопустимо См. требования к файлу .desktop
ERROR [sailjail] ExecDBus format is incorrect, template rules should be the same as for Exec section Неправильный формат ExecDBus См. требования к файлу .desktop
WARNING Desktop file is missing, no validation for sailjail section См. требования к файлу .desktop
ERROR [sailjail] OrganizationName is equal to system or disallowed name Указанное имя совпадает с зарезервированным системным именем Изменить значение OrganizationName
ERROR [desktop] Name contains illegal characters Указанное имя приложения содержит недопустимые символы См. требования к файлу .desktop
ERROR [sailjail] ExecDBus is incorrect, template rules are equal to Exec section Неправильно указано значение ключа ExecDBus Указать такое же значение, как в секции Exec
ERROR [sailjail] ExecSystemService is incorrect, template rules are equal to ExecStart section Неправильно указано значение ключа ExecSystemService Указать такое же значение, как в секции ExecStart
ERROR [sailjail] If application use system service, desktop file should include ExecSystemService, ExecSystemServiceUser and ExecSystemServiceGroup keys Если приложение использует системную службу, то .desktop-файл должен содержать ключи ExecSystemService, ExecSystemServiceUser и ExecSystemServiceGroup Указать ключи в ExecSystemService, ExecSystemServiceUser and ExecSystemServiceGroup в .desktop-файле
ERROR [sailjail] System service user should be "sailfish-mdm", system service group should be "priveleged" Пользователем системной службы должен "sailfish-mdm", группа системной службы должна быть привилегированной См. требования к файлу .desktop
ERROR [sailjail] Application name contains illegal "-" symbol. It will cause ExecDBus and/or ExecSystemService failure in future Имя приложения содержит символ "-". Это может стать причиной отказа в работе ExecSystemService в будущем Исключить символ "-" из названия приложения
WARNING [sailjail] ExecDBus and/or ExecSystemService will not work, remove "-" from Application name Имя приложения содержит символ "-" Удалить из названия приложения символ "-"
ERROR [sailjail] Sailjail section is not allowed (use X-Application instead) Раздел Sailjail не разрешён к использованию, используйте X-Application См. требования к файлу .desktop
ERROR [integrityd] integrityd configuration file mismatching package content Файл конфигурации integrityd не совпадает с содержимым пакета приложения Исправить описание в файле конфигурации integrityd

Paths

Тип сообщения Сообщение Причина Рекомендации по устранению
WARNING [/usr/bin] Direct package ownership of /usr/bin is disallowed. It will cause failure in future versions При описании пакета запрещено устанавливать права на директорию /usr/bin Убрать строки /usr/bin из секции %files .spec-файла
ERROR [{Путь}] Installation not allowed in this location В установочном пакете файлы расположены по запрещённому пути Перекомпоновать пакет в соответствии с требованиями
ERROR [{Путь}] Executable is in wrong location Исполняемый файл в установочном пакете расположен по запрещённому пути Перекомпоновать пакет в соответствии с требованиями

Libraries

Тип сообщения Сообщение Причина Рекомендации по устранению
WARNING [{Название библиотеки}] Library is unstable or deprecated Поддержка указанной библиотеки прекращена и библиотека будет запрещена для будущего использования или указанная библиотека имеет нестабильный API Исключить из зависимостей указанную библиотеку

Libraries

Тип сообщения Сообщение Причина Рекомендации по устранению
WARNING [{Название библиотеки}] Library is unstable or deprecated Поддержка указанной библиотеки прекращена и библиотека будет запрещена для будущего использования или указанная библиотека имеет нестабильный API Исключить из зависимостей указанную библиотеку

Icon

Тип сообщения Сообщение Причина Рекомендации по устранению
ERROR [{Имя файла значка}] Icon not found В пакете не найден файл значка с указанным именем См. требования к значкам

Symbols

Тип сообщения Сообщение Причина Рекомендации по устранению
ERROR [{Имя бинарного файла}] Binary does not link to __libc_start_main Исполняемый файл не связан с символом целевой платформы Использовать Аврора IDE для сборки пакета или другую версию glibc

Permissions

Тип сообщения Сообщение Причина Рекомендации по устранению
ERROR [{Путь к директории}] Group or World writable directory Указанная директория имеет права доступа для группы пользователей или доступна всем Сменить права доступа для директории. См. требования
ERROR [{Путь к файлу}] Found setuid, setgid or sticky bit set Указанный файл снабжён флагами suid/sgid или sticky bit set Убрать флаги. См. требования
ERROR [{Путь к файлу}] File must not be executable Указанный файл не должен иметь прав доступа к исполнению указанными пользователями и группами пользователей Изменить директиву назначения прав в .spec/.yaml-файлe
ERROR [{Путь к файлу}] User owner should be root Владельцем указанного файла должен быть root, а не указанный пользователь Назначить владельца с помощью директивы %defattr(644,root,root,-) в списке %files в .spec/.yaml-файлe
ERROR [{Путь к файлу}] Group owner should be root Владельцем указанного файла должен быть root, а не указанная группа пользователей Назначить владельца с помощью директивы %defattr(644,root,root,-) в списке %files в .spec/.yaml-файлe

Scripts

Тип сообщения Сообщение Причина Рекомендации по устранению
ERROR [scripts] Script sections are not allowed in RPM Скрипты запрещены к использованию в RPM-файлах сторонних разработчиков Исключить скрипты из проекта. См. требования к файлам .spec/.yaml

Provides

Тип сообщения Сообщение Причина Рекомендации по устранению
ERROR [{Функциональность}] Provides: {Функциональность} must be specified in RPM Указанная функциональность (provide) должна быть добавлена в RPM-пакет Добавить указанную функциональность в .spec/.yaml-файл
ERROR [{Функциональность}] Provides: {Функциональность} is not allowed in RPM Указанная функциональность (provide) запрещена для использования Исключить указанную функциональность из .spec/.yaml-файла

Conflicts

Тип сообщения Сообщение Причина Рекомендации по устранению
ERROR [{Конфликт}] Conflicts: {Конфликт} must be specified in RPM Указанный конфликт (conflict) должен быть добавлен в RPM-пакет Добавить указанный конфликт в .spec/.yaml-файл
ERROR [{Конфликт}] Conflicts: {Конфликт} is not allowed in RPM Указанный конфликт (conflict) запрещён для использования Исключить указанный конфликт из .spec/.yaml-файла

Obsoletes

Тип сообщения Сообщение Причина Рекомендации по устранению
ERROR [{Obsolete}] Obsoletes: {Obsolete} is not allowed in RPM Указанное значение Obsoletes в .spec/.yaml-файле запрещено для использования Исключить Obsoletes из проекта. См. требования к файлам .spec/.yaml

Requires

Тип сообщения Сообщение Причина Рекомендации по устранению
ERROR {Зависимость} Dependency not allowed Указанная зависимость запрещена для использования Исключить указанную зависимость из .spec/.yaml-файла
ERROR Add 'Requires: libsailfishapp-launcher' to the .spec file Требуется добавить зависимость libsailfishapp-launcher в .spec/.yaml-файл Добавить зависимость libsailfishapp-launcher в .spec/.yaml-файл

Sandboxing

Тип сообщения Сообщение Причина Рекомендации по устранению
ERROR [{Путь к файлу}] Hardcoded path found Указанный путь к файлу не должен быть встроен в исходный код Использовать API для указания путей

Privileges

Тип сообщения Сообщение Причина Рекомендации по устранению
ERROR [privileges] Empty privileges are not allowed Добавленный в пакет список привилегий не может быть пуст Добавить привилегии директивой %{_datadir}/mapplauncherd/privileges.d/%{привилегия} в .spec/.yaml-файл
ERROR [{Привилегия}] Only allowed privileges might be used here Указанные привилегии запрещено использовать, разрешены только привилегии из списка Заменить запрещённые для использования привилегии на разрешённые
ERROR [{Привилегия}] Only privileges for main binary are allowed Привилегии можно устанавливать только для главного исполняемого файла Удалить лишние директивы из файла привилегий

RPATH

Тип сообщения Сообщение Причина Рекомендации по устранению
WARNING [rpath] The rpath in binary is empty Для исполняемого файла указан пустой rpath См. требования к разделяемым библиотекам
ERROR [rpath] This rpath in binary is not allowed В указанном исполняемом файле запрещённый rpath См. требования к разделяемым библиотекам

Architecture

Тип сообщения Сообщение Причина Рекомендации по устранению
WARNING [arch] QML-only RPMs should be noarch Пакет, который использует только QML, должен использовать целевую платформу noarch Добавить строку BuildArch: noarch в .spec/.yaml-файл

Vendor check

Тип сообщения Сообщение Причина Рекомендации по устранению
WARNING [vendor] Vendor is set to {Название поставщика}! This is not recommended. Не рекомендуется задавать строку Vendor Не использовать строку Vendor в .spec/.yaml-файле. См. требования к файлам .spec/.yaml
ERROR [vendor] Vendor in RPM package is set to {Значение строки Vendor}. Setting a vendor in RPM package is not allowed! Запрещено задавать строку Vendor в .spec/.yaml-файле Не использовать строку Vendor в .spec/.yaml-файле. См. требования к файлам .spec/.yaml

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.