05 марта 2026 № 1 (2026)

ROSARIUM

газета советского программиста

Чеклист ревью

Что обязательно (MUST) и что желательно (SHOULD) проверить.

На этой странице

Этот чеклист можно использовать двумя способами: для самопроверки перед отправкой пакета и для ревью чужих пакетов.

MUST — обязательные требования

Пакет не принимается в community, если не выполнен хотя бы один пункт MUST.

Метаданные SPEC

  • Name соответствует upstream
  • Version соответствует реальной версии upstream
  • License — корректный SPDX-идентификатор, проверен по исходникам
  • URL — рабочая ссылка на проект
  • Source0 — доступный URL или файл в репозитории
  • Summary — информативное описание на английском
  • %description — понятное описание

Сборка и качество

  • Пакет собирается на ABF без ошибок
  • rpmlint не выдаёт ошибок (E:)
  • Пакет устанавливается и запускается
  • Все BuildRequires указаны явно (сборка проходит в чистом окружении)
  • Зависимости корректны (нет лишних, нет пропущенных)

Файлы

  • %license указан для файлов лицензий
  • Нет файлов, принадлежащих другим пакетам
  • Конфиги помечены %config(noreplace)
  • Нет .la файлов (libtool)
  • Используются макросы путей, а не жёсткие пути

Безопасность

  • Исходники из доверенного источника
  • Нет подозрительного кода в патчах
  • Скриптлеты безопасны и идемпотентны

Подпакеты (если есть)

  • .so без версии — только в -devel
  • -devel зависит от основного пакета с %{?_isa}
  • ldconfig вызывается для пакетов с .so.*

SHOULD — желательные требования

Предупреждения rpmlint (W:) и нарушения SHOULD не блокируют приём, но ревьюер может попросить исправить.

  • %check секция присутствует (тесты запускаются)
  • Man-страницы для бинарников
  • %doc для документации (README, AUTHORS)
  • Changelog содержит осмысленные записи
  • Нет предупреждений rpmlint (W:), или они объяснены
  • Hardening-флаги не отключены без причины
  • Bundled-зависимости документированы (Provides: bundled(...))
  • Патчи отправлены upstream (или объяснено, почему нет)

Как проводить ревью

Шаг 1: Скачать и изучить SPEC

git clone git@abf.io:username_personal/mypackage.git
cd mypackage
less mypackage.spec

Шаг 2: Проверить исходники

# Откуда скачиваются?
spectool -l mypackage.spec

# Лицензия совпадает?
tar xf mypackage-1.0.tar.gz
cat mypackage-1.0/LICENSE

Шаг 3: Собрать локально

# Скопировать файлы
cp mypackage-1.0.tar.gz ~/rpmbuild/SOURCES/
cp *.patch ~/rpmbuild/SOURCES/
cp mypackage.spec ~/rpmbuild/SPECS/

# Собрать
rpmbuild -ba ~/rpmbuild/SPECS/mypackage.spec

# Проверить rpmlint
rpmlint ~/rpmbuild/RPMS/*/*.rpm

Шаг 4: Установить и проверить

sudo dnf install ~/rpmbuild/RPMS/x86_64/mypackage-*.rpm
mypackage --version
mypackage --help

Шаг 5: Написать результат

Ревью пакета mypackage-1.0.0-1

MUST:
[+] License: MIT — проверено, совпадает с исходниками
[+] Собирается без ошибок
[+] rpmlint clean (0 errors)
[+] Устанавливается и запускается
[-] BuildRequires: pkgconfig(libfoo) отсутствует

SHOULD:
[~] Нет man-страницы (upstream не предоставляет)
[+] %check включён

Результат: НУЖНА ДОРАБОТКА
Замечание: добавить отсутствующий BuildRequires

Проверьте понимание

  1. Чем MUST отличается от SHOULD?
  2. Как проверить, что лицензия в SPEC соответствует исходникам?
  3. Как убедиться, что все BuildRequires указаны?
  4. Что делать, если man-страница отсутствует в upstream?

Далее: Типичные замечания и исправления