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

ROSARIUM

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

Что такое пакет и зачем он нужен

Проблемы ручной установки, преимущества пакетной системы, роль сборщика.

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

Проблема: жизнь без пакетов

Представьте, что вам нужно установить программу из исходников:

tar -xzf program-1.0.tar.gz
cd program-1.0
./configure
make
sudo make install

Выглядит просто, но на практике возникают проблемы:

ПроблемаОписание
ЗависимостиПрограмма требует библиотеки, которых нет в системе. Те требуют другие библиотеки. Вы тонете в цепочке сборок.
Конфликты версийДве программы требуют разные версии одной библиотеки.
Удалениеmake uninstall часто не работает или отсутствует. Файлы остаются разбросаны по системе.
ОбновлениеКак обновить до новой версии? Просто собрать поверх? А если изменились пути?
ОтслеживаниеКакие файлы принадлежат какой программе? Что можно безопасно удалить?
ВоспроизводимостьКоллега собрал с другими флагами — у него работает, у вас нет.

Решение: пакетная система

Пакет — это стандартизированный контейнер, содержащий:

  • Файлы программы (бинарники, библиотеки, конфиги, документация)
  • Метаданные (имя, версия, описание, лицензия)
  • Список зависимостей (что нужно для работы)
  • Инструкции установки и удаления

Пакетный менеджер использует эту информацию для:

  • Автоматического разрешения зависимостей — установит всё необходимое
  • Чистого удаления — знает все файлы пакета
  • Безопасного обновления — корректно заменит старую версию
  • Проверки целостности — убедится, что файлы не повреждены
  • Отката изменений — можно вернуться к предыдущей версии

Форматы пакетов

В мире Linux существует несколько форматов пакетов:

ФорматДистрибутивыПакетный менеджер
RPMROSA, Fedora, openSUSE, RHEL, ALT Linuxdnf, zypper, urpmi
DEBDebian, Ubuntu, Mintapt, dpkg
PacmanArch Linux, Manjaropacman
PortageGentooemerge

ROSA Linux использует формат RPM (Red Hat Package Manager), один из старейших и наиболее проработанных форматов.

Кто такой сборщик пакетов

Сборщик (packager, maintainer) — это человек, который:

  1. Берёт исходный код программы (обычно из официального релиза)
  2. Пишет рецепт сборки (SPEC-файл) с инструкциями
  3. Адаптирует программу под стандарты дистрибутива
  4. Собирает пакет в чистом окружении
  5. Публикует в репозитории для пользователей
  6. Поддерживает — обновляет, исправляет баги, реагирует на уязвимости

Ответственность сборщика

Сборщик отвечает за то, чтобы пакет:

  • Корректно устанавливался и удалялся — не оставлял мусора
  • Не ломал систему — не перезаписывал чужие файлы
  • Имел правильные зависимости — работал «из коробки»
  • Соответствовал стандартам — файлы в правильных местах
  • Был воспроизводимым — любой мог пересобрать с тем же результатом
Важно понимать
Сборщик — не разработчик программы. Он не исправляет баги в коде (кроме критичных). Его задача — качественно упаковать то, что выпустили авторы.

Upstream и downstream

В мире пакетов используют термины:

  • Upstream — оригинальный проект, его авторы и релизы
  • Downstream — дистрибутив, который упаковывает проект для своих пользователей
[Upstream: авторы программы]
         ↓
    выпускают релиз
         ↓
[Downstream: сборщик ROSA]
         ↓
    упаковывает в RPM
         ↓
[Пользователь ROSA]
    устанавливает через dnf

Сборщик находится «между» upstream и пользователями. Он следит за новыми релизами, адаптирует их под дистрибутив и доставляет пользователям.

Типы пакетов

По содержимому пакеты делятся на:

ТипСодержитПример
БинарныйГотовые к запуску файлыfirefox-115.0-1.x86_64.rpm
Исходный (SRPM)SPEC-файл + исходникиfirefox-115.0-1.src.rpm
noarchПлатформо-независимый кодpython3-requests-2.28.0-1.noarch.rpm
debuginfoОтладочные символыfirefox-debuginfo-115.0-1.x86_64.rpm
develЗаголовки и файлы для разработкиopenssl-devel-3.0.8-1.x86_64.rpm

Жизненный цикл пакета

1. Upstream выпускает новую версию
           ↓
2. Сборщик скачивает исходники
           ↓
3. Обновляет SPEC-файл (версия, changelog)
           ↓
4. Собирает локально, тестирует
           ↓
5. Отправляет на сборочную ферму (ABF)
           ↓
6. Сборка в чистом окружении
           ↓
7. Автоматические проверки (rpmlint)
           ↓
8. Публикация в репозитории
           ↓
9. Пользователи получают обновление через dnf

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

Ответьте на вопросы:

  1. Почему make install — плохой способ установки программ?
  2. Что содержит RPM-пакет помимо файлов программы?
  3. Чем отличается работа сборщика от работы разработчика программы?
  4. Что такое SRPM и зачем он нужен?

Далее: Внутреннее устройство RPM