Перейти к содержанию

Проверка RPM, целостности и источников пакетов

RPM — основа управления пакетами НАЙС.ОС CLOUD. Прежде чем обновлять систему, полезно понимать, из какого репозитория пришёл пакет, каким ключом он подписан, не изменены ли установленные файлы и какие зависимости будут затронуты.

1. Информация о системе

cat /etc/os-release
rpm -q niceos-release niceos-repos
rpm -q rpm dnf tdnf
rpm --eval '%{_arch} %{_vendor} %{_target_os}'

Наличие рецептов для DNF и TDNF не гарантирует, что оба менеджера есть в каждом минимальном образе. Выберите установленный менеджер и уточните его параметры.

2. Что установлено

rpm -qa | sort
rpm -qf /usr/bin/bash
rpm -qi bash
rpm -ql bash | head -50
rpm -q --scripts bash

-qf определяет пакет-владельца файла, -ql перечисляет установленные файлы, --scripts показывает возможные scriptlets RPM. Перед изменением конфигурации выясните, не помечена ли она %config(noreplace).

3. Проверка состояния файлов

rpm -V bash
rpm -Va > /root/rpm-verify-report.txt

Вторая команда может быть продолжительной и показать штатно изменённые конфигурации, базу состояний/кэш и разрешённые отклонения. Сохраните отчёт с ограниченными правами, не интерпретируйте каждую строку как вредоносное изменение. Часть файлов intentionally mutable и будет отличаться от содержимого пакета.

4. Репозитории и подписи

ls -l /etc/yum.repos.d/ 2>/dev/null
rpm -q niceos-repos
rpm -qa 'gpg-pubkey*'

SPEC niceos-repos содержит набор базовых .repo и RPM-GPG-KEY-NICEOS. Реальные URL и политика gpgcheck должны быть прочитаны из установленных файлов. Не добавляйте случайный репозиторий и не отключайте gpgcheck ради исправления сетевой ошибки.

5. Как проводить обновление

  1. Снимите сведения об образе и список пакетов, сохраните бэкап конфигурации.
  2. Проверьте сеть/DNS и правила iptables OUTPUT.
  3. Уточните состояние репозиториев и доверенного ключа.
  4. Проверьте список предлагаемых изменений через установленный менеджер, прежде чем подтверждать операцию.
  5. Обновления ядра планируйте с учётом GRUB2/dracut; после транзакции проверьте новые файлы /boot/.
  6. Перезагрузку проводите в окно обслуживания; после неё проверяйте версию ядра и работоспособность сервисов.

6. Что делать, если RPM сломан

Не удаляйте напрямую /var/lib/rpm/ и не выполняйте rpm --rebuilddb без диагностики диска и бэкапа базы. Ошибка может быть вызвана нехваткой места, конфликтом версий, падением скрипта установки или недоступным репозиторием.

Для подробностей см. RPM/DNF/TDNF, загрузка ядра и проверка GPG/ISO.

Источники: Core/{rpm,tdnf,dnf,niceos-repos,niceos-release}/SPECS/*.spec.