Валидатор RPM-пакетов
Валидатор проверяет установочные пакеты для ОС Аврора на соответствие требованиям. Он вызывается автоматически при установке RPM-пакетов на устройства с ОС Аврора. Пакеты, не прошедшие валидацию, не могут быть установлены.
Также валидатор установочных пакетов можно запустить в среде сборки или IDE, в том числе с помощью диалога.
Валидатор позволяет проверять rpm-пакет приложения, подписанного ключом заданного профиля. Для каждого профиля предусмотрены индивидуальные особенности проверки. Профиль валидатора можно указать как аргумент при вызове из командной строки или выбрать опцию в диалоге валидации.
Валидатор регулярно обновляется. Информация об изменениях в валидаторе и в профилях содержится в разделе История изменений.
Содержание:
- Как убедиться, что установка пакета будет возможной в ОС Аврора
- Описание изменений в требованиях к установочным пакетам
- Конфигурационные файлы
- Название организации и приложения
- Запуск валидатора в среде сборки
- Валидатор в Аврора IDE
- Сообщения вывода
Внимание! Всегда следует обращать внимание на предупреждения 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-валидатора доступна в разделе История изменений.
Конфигурационные файлы
Все файлы конфигурации имеют формат JSON.
- Основной файл конфигурации
configuration.json
. - Список запрещённых компонентов
disallowed_components.json
.
Эти файлы расположены в корне каталога /usr/share/rpm-validator.
Остальные файлы содержат список разрешённых, нестабильных и устаревших компонентов. Такие файлы находятся в соответствующих каталогах для каждого профиля и имеют следующие имена:
libraries.json
— список разрешённых библиотек;paths.json
— список разрешённых путей для установки;qmlimports.json
— список разрешённых импортов QML;requires.json
— список разрешённых записей для секцииRequires
;permissions.json
— список разрешений sailjail.
Можно создавать новые конфигурационные пакеты. Конфигурационный пакет строится как обычное приложение со следующими обязательными полями:
OrganizationName=<org_name>
;ApplicationName=<app_name>
;NoDisplay=true
.
Для установки конфигурационных файлов, которые должны быть доступны другим приложениям этого же вендора используется общий каталог /usr/share/common/org_name. Данная директория автоматически монтируется в контейнер к приложениям с общим вендором, что позволяет любым пользователям, находящимся в одном GID, иметь права для чтения и записи. Рекомендуется распаковывать файлы с правами RW для всех. Данные будут в любом случае в безопасности, и будет отсутствовать возможное влияние других приложений на эти файлы за счёт исключительности монтирования в контейнере.
Также имеется возможность распаковки файлов в каталог /usr/share/common/org_name/app_name/. Конфигурационный пакет должен быть подписан профилем Extended или Antivirus. Для профиля Extended наличие иконок не обязательно, для профиля Antivirus — обязательно.
Название организации и приложения
При разработке проекта и сборке пакета требуется корректно сформировать пару
OrganizationName.ApplicationName
.
Они должны соответствовать следующим правилам:
Правило | Неправильно | Правильно |
---|---|---|
OrganizationName не должен начинаться с точки |
.ru.auroraos |
ru.auroraos |
OrganizationName не должен начинаться с цифры |
123org.ru |
ru.org123 |
OrganizationName должен состоять как минимум из двух уровней |
myorg |
ru.myorg |
OrganizationName и ApplicationName должны следовать обратной доменной нотации |
auroraos.ru.MyApp |
ru.auroraos.MyApp |
OrganizationName и ApplicationName должны минимально содержать три уровня |
auroraos.MyApp |
ru.auroraos.MyApp |
Запрещены все спецсимволы кроме "." и "-" | ru.aurora_os.MyApp |
ru.auroraos.MyApp |
Запрещено использование кириллицы | рф.организация.Приложение |
ru.myorg.MyApp |
Запуск валидатора в среде сборки
Утилиту командной строки 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
. -s | --suites
- Вывести строку со списком профилей.
--critical-only
- Показать только критические ошибки (опция используется для конвейерной интеграции).
--color
- Выбрать вариант вывода цвета (
always
,never
,auto
).
Пример успешной валидации
rpm-validator -p regular regular-good-0.1.0-1.armv7hl.rpm
Утилита не выводит каких-либо специальных сообщений в случае успешного завершения,
однако устанавливает errorlevel
в нулевое значение:
149 blocks
Processing regular-good-0.1.0-1.armv7hl.rpm...
# echo $?
0
Пример ошибки валидации
$ rpm-validator -p regular regular-bad-0.0.1-1.armv7hl.rpm
95 blocks
Processing regular-bad-0.0.1-1.armv7hl.rpm...
(ERROR) [regular-client-bad] Provides: regular-client-bad is not allowed in RPM
(ERROR) [regular-client-bad] Conflicts: regular-client-bad is not allowed in RPM
(ERROR) [obsoletes-bad] Obsoletes: obsoletes-bad is not allowed in RPM
(ERROR) [scripts] Script sections are not allowed in RPM
(ERROR) [vendor] Vendor is set to omp. Setting a vendor in RPM is not allowed
(ERROR) [desktop] Missing valid Icon declaration inside, must be Icon=regular-bad
(ERROR) [desktop] Missing valid Exec declaration inside
(ERROR) [desktop] Missing valid Type declaration inside
(ERROR) [desktop] X-Nemo-Application-Type not declared (use silica-qt5 for QML apps)
(ERROR) [binary] Main binary must exists, but it is not found
(ERROR) [/usr/bin/regular-bad-binary] Installation not allowed in this location
(ERROR) [/usr/share/mapplauncherd/privileges.d/regular-bad.privileges] Installation not allowed in this location
(ERROR) [/usr/share/applications/regular-bad.desktop] Executable is in wrong location
(ERROR) [/usr/share/icons/hicolor/108x108/apps/regular-bad.png] Executable is in wrong location
(ERROR) [/usr/share/icons/hicolor/128x128/apps/regular-bad-wrong.png] Executable is in wrong location
(ERROR) [/usr/share/icons/hicolor/86x86/apps/regular-bad.png] Executable is in wrong location
(ERROR) [/usr/share/mapplauncherd/privileges.d/regular-bad.privileges] Executable is in wrong location
(ERROR) [/usr/share/regular-bad/regular-bad.conf] Executable is in wrong location
(ERROR) [/usr/share/icons/hicolor/128x128/apps/regular-bad.png] Icon not found
(ERROR) [/usr/share/icons/hicolor/172x172/apps/regular-bad.png] Icon not found
(ERROR) [/usr/bin/regular-bad-binary] File must not be executable
(ERROR) [/usr/share/applications/regular-bad.desktop] File must not be executable
(ERROR) [/usr/share/icons/hicolor/108x108/apps/regular-bad.png] File must not be executable
(ERROR) [/usr/share/icons/hicolor/128x128/apps/regular-bad-wrong.png] File must not be executable
(ERROR) [/usr/share/icons/hicolor/86x86/apps/regular-bad.png] File must not be executable
(ERROR) [/usr/share/mapplauncherd/privileges.d/regular-bad.privileges] File must not be executable
(ERROR) [/usr/share/regular-bad/regular-bad.conf] File must not be executable
(ERROR) [/usr/share/regular-bad/regular-bad.conf] User owner should be root
(ERROR) [/usr/share/regular-bad/regular-bad.conf] Group owner should be root
(ERROR) [/usr/bin/regular-bad-binary] Hardcoded path found
(ERROR) [kv] Only allowed privileges might be used here
(ERROR) [/usr/bin/regular-bad-binary] Only privileges for main binary are allowed
(WARNING) [rpath] The rpath in binary is empty
# echo $?
1
О значении ошибок и замечаний валидации см. Сообщения вывода.
Валидатор в Аврора IDE
Валидатор RPM-пакетов также можно запускать в Аврора IDE:
-
Переключить IDE в режим Проекты и открыть настройки запуска необходимого комплекта для сборки.
-
Выбрать конфигурацию запуска.
-
Удостовериться, что в этапах запуска есть RPM Validation. В противном случае:
-
Добавить этап RPM Validation в выпадающем меню Развёртывание, добавить этап.
-
Разместить этап RPM Validation перед этапом RPM Deploy.
-
-
Выбрать нужный профиль валидации в выпадающем списке Profiles.
-
В случае необходимости добавить параметры запуска в поле Аргументы.
-
Запустить сборку и установку приложения. В консоли сборки будут отображены сообщения вывода валидатора и результат.
Сообщения вывода
В выводе команды валидатора отображаются проверяемые блоки согласно требованиям к RPM-пакетам. Для блоков проверки предусмотрены следующие типы сообщений.
Сообщение о проверке блока | Описание |
---|---|
INFO |
Информационное сообщение |
PASSED |
Проверка пройдена успешно |
FAILED |
Есть ошибки валидации, установочный пакет не соответствует требованиям |
ERROR |
Сообщение об ошибке, которая является причиной того, что пакет не соответствует требованиям |
WARNING |
Сообщение о статусе, который не препятствует валидации, но может привести к проблемам |
CRITICAL |
Критическая ошибка, установочный пакет не соответствует требованиям. Пакет не будет установлен даже при отключенном валидаторе |
Пример блока проверки 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
- QML files
- Desktop file
- Paths
- Keys
- Libraries
- Icon
- Symbols
- Permissions
- Scripts
- Provides
- Conflicts
- Obsoletes
- Requires
- Sandboxing
- RPATH
- Architecture
- Vendor check
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
Тип сообщения | Сообщение | Причина | Рекомендации по устранению |
---|---|---|---|
ERROR |
[desktop] Desktop file is missing |
В пакете отсутствует .desktop -файл |
См. требования путей к файлам |
ERROR |
[desktop] Missing valid Name declaration inside |
Не указана или неправильно указана строка Name в .desktop -файле |
См. требования к файлу .desktop |
ERROR |
[desktop] Missing valid Icon declaration inside, must be Icon= |
Не указана или неправильно указана строка 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] OrganizationName contains illegal characters |
Указанное название организации содержит недопустимые символы | См. требования к файлу .desktop |
ERROR |
[sailjail] OrganizationName may not start with a number |
Указываемое название организации не может начинаться с цифры | См. требования к файлу .desktop |
ERROR |
[{Разрешение}] Permission is not allowed |
Указанное разрешение недопустимо | См. требования к файлу .desktop |
ERROR |
[desktop] [{Группа}] group is disallowed |
Группа не указана или неправильно указана в строке Item в .desktop -файле |
См. требования к файлу .desktop |
WARNING |
[sailjail] 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") |
Ошибка в неправильном формировании пары ApplicationName и OrganizationName, они должны следовать правилу, то есть com.example | См. требования к файлу .desktop |
WARNING |
[sailjail] OrganizationName should follow reverse domain notation (at least up to second-level domain), e.g.: "org.example" |
OrganizationName должно соответствовать обратной доменной нотации (минимум до домена 2-го уровня, то есть "org.example" | См. требования к файлу .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 |
Исполняемый файл в установочном пакете расположен по запрещённому пути | Перекомпоновать пакет в соответствии с требованиями |
Keys
Тип сообщения | Сообщение | Причина | Рекомендации по устранению |
---|---|---|---|
ERROR |
[{Ключ}] X-Application key is not allowed |
Ключ не разрешен | Убрать группу или ключ из файла .desktop |
Libraries
Тип сообщения | Сообщение | Причина | Рекомендации по устранению |
---|---|---|---|
WARNING |
[{Название библиотеки}] Library is unstable or deprecated |
Поддержка указанной библиотеки прекращена и библиотека будет запрещена для будущего использования или указанная библиотека имеет нестабильный API | Исключить из зависимостей указанную библиотеку |
Icon
Тип сообщения | Сообщение | Причина | Рекомендации по устранению |
---|---|---|---|
ERROR |
[{Имя файла значка}] Icon not found or file resolution is incorrect |
Иконка не найдена или файл иконки имеет некорректное разрешение | Проверить наличие файла с иконкой или установить рекомендуемое разрешение |
Symbols
Тип сообщения | Сообщение | Причина | Рекомендации по устранению |
---|---|---|---|
WARNING |
[binary] Binary does not export main() symbol — booster might fail |
В исполняемом файле функция main не экспортируется |
Экспортировать функцию main в header-файле, добавив бустер Q_DECL_EXPORT |
ERROR |
[binary] Binary must export main() symbol for booster to work (Q_DECL_EXPORT) |
В исполняемом файле функция main() должна экспортироваться с помощью Q_DECL_EXPORT |
Добавить бустер Q_DECL_EXPORT для функции main в header-файл |
ERROR |
[binary] Main binary must not exists. Desktop file uses sailfish-qml |
QML-приложение не может иметь главный исполняемый файл отличный от sailfish-qml |
Удалить исполняемый файл из пакета |
ERROR |
[binary] Main binary must exists, but it is not found |
Главный исполняемый файл должен быть присутствовать в пакете | Скомпилировать исполняемый файл, используя компоновщик |
ERROR |
[binary] Main binary must be an executable |
Главный бинарный файл не является исполняемым файлом | Скомпилировать исполняемый файл, используя компоновщик |
ERROR |
[debug] Debug symbols or sources must not be included |
Исходники и отладочные символы не должны присутствовать в пакете | Удалить исходники и отладочные символы из пакета |
ERROR |
[binary] Binary does not link to __libc_start_main |
Исполняемый файл не связан с символом целевой платформы или сборка проводилась с другим glibc . |
Использовать Аврора 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
Тип сообщения | Сообщение | Причина | Рекомендации по устранению |
---|---|---|---|
CRITICAL |
[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: {Функциональность} 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
Тип сообщения | Сообщение | Причина | Рекомендации по устранению |
---|---|---|---|
WARNING |
[{Зависимость}] Dependency is unstable or deprecated |
Указанная зависимость имеет нестабильный API либо поддержка указанной зависимости прекращена и зависимость будет запрещена для будущего использования | Исключить указанную зависимость из .spec /.yaml -файла |
ERROR |
[{Зависимость}] Dependency is not allowed |
Указанная зависимость запрещена к использованию. | Исключить указанную зависимость из .spec /.yaml -файла |
ERROR |
[libsailfishapp] Invalid Requires: libsailfishapp-launcher |
Требуется удалить указанную зависимость | Исключить указанную зависимость из .spec /.yaml -файла |
ERROR |
[libsailfishapp] Add Requires: libsailfishapp-launcher to the .spec file |
Требуется добавить зависимость libsailfishapp-launcher в .spec /.yaml -файл |
Добавить зависимость libsailfishapp-launcher в .spec /.yaml -файл |
Sandboxing
Тип сообщения | Сообщение | Причина | Рекомендации по устранению |
---|---|---|---|
ERROR |
[{Путь к файлу}] Hardcoded path found |
Указанный путь к файлу не должен быть встроен в исходный код | Использовать API для указания путей |
WARNING |
[sailjail] An application doesn't explicitly use sandboxing and will be running in "legacy" mode. Consider to add [X-Application] section to the desktop file. |
См. требования к файлу .desktop |
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 -файл |
WARNING |
[arch] RPMs containing arch-specific content should not be noarch |
В пакете присутствуют файлы, которым для работы или исполнения требуется определенный тип хостовой архитектуры | Такой пакет или пакеты должны быть собраны под конкретную архитектуру, они не должны идти как noarch |
Vendor check
Тип сообщения | Сообщение | Причина | Рекомендации по устранению |
---|---|---|---|
WARNING |
[vendor] Vendor is set to {Название поставщика}, this is not recommended. |
Не рекомендуется задавать строку Vendor |
Не использовать строку Vendor в .spec /.yaml -файле. См. требования к файлам .spec/.yaml |
ERROR |
[vendor] Vendor is set to {Значение строки Vendor}. Setting a vendor in RPM is not allowed |
Запрещено задавать строку Vendor в .spec /.yaml -файле |
Не использовать строку Vendor в .spec /.yaml -файле. См. требования к файлам .spec/.yaml |