Пакеты и пакетные менеджеры

⏱ 25 мин · 🧩 заданий: 5

Что такое пакет

Пакет — архив с файлами программы плюс метаинформация, позволяющая системе управлять программой: устанавливать, обновлять, удалять, проверять.

nginx_1.24.0-2_amd64.deb (ar-архив) ├── debian-binary версия формата ├── control.tar.xz МЕТАИНФОРМАЦИЯ │ ├── control имя, версия, архитектура, Depends, описание │ ├── conffiles список конфигурационных файлов │ ├── md5sums контрольные суммы файлов │ ├── preinst postinst скрипты установки │ └── prerm postrm скрипты удаления └── data.tar.xz ФАЙЛЫ: /usr/sbin/nginx, /etc/nginx/nginx.conf, ...
Package: nginx
Version: 1.24.0-2
Architecture: amd64
Depends: libc6 (>= 2.34), libssl3 (>= 3.0.0), nginx-common (= 1.24.0-2)
Conflicts: nginx-extras
Description: small, powerful, scalable web/proxy server

RPM-пакеты устроены аналогично: заголовок с метаданными и скриптлетами (%pre, %post, %preun, %postun) и сжатый архив файлов.

Два уровня инструментов

Debian, Ubuntu Red Hat, Fedora, ALT
формат .deb .rpm
низкий уровень: ставит один файл, проверяет зависимости, но не скачивает их dpkg rpm
высокий уровень: репозитории, разрешение зависимостей, обновление системы apt dnf (yum), в ALT — apt-rpm
# Debian / Ubuntu
sudo apt update                    # обновить индексы репозиториев
sudo apt install nginx             # установить с зависимостями
sudo apt remove nginx              # удалить, оставив конфигурацию
sudo apt purge nginx               # удалить вместе с конфигурацией
sudo apt install --reinstall nginx # переустановить
dpkg -l | grep nginx               # список установленных
dpkg -L nginx                      # файлы пакета
dpkg -S /usr/sbin/nginx            # чей файл

# Fedora / RHEL
sudo dnf install nginx
sudo dnf reinstall nginx
rpm -qa | grep nginx
rpm -ql nginx
rpm -qf /usr/sbin/nginx
rpm -V nginx                       # проверить файлы пакета

Зависимости и репозитории

Репозиторий — сервер с пакетами и подписанным индексом. Высокоуровневый менеджер по индексу строит граф зависимостей: nginx требует libssl3, тот — libc6 и т. д. Учитываются версии, конфликты, «виртуальные» пакеты (Provides: mail-transport-agent).

Подписи (GPG) защищают от подмены пакетов: менеджер откажется ставить пакет с неверной подписью.

База установленных пакетов

Менеджер помнит, какой файл какому пакету принадлежит и в каком состоянии пакет:

  • dpkg: /var/lib/dpkg/status, списки файлов в /var/lib/dpkg/info/<пакет>.list, скрипты — там же;
  • rpm: база в /var/lib/rpm.

Благодаря этому можно:

  • удалить программу без следов;
  • обновить, заменив старые файлы новыми;
  • проверить целостность: debsums nginx или rpm -V nginx покажут изменённые или пропавшие файлы.

Итог

  • Пакет = файлы + метаинформация (версия, зависимости, conffiles, скрипты).
  • dpkg/rpm работают с отдельными пакетами; apt/dnf — с репозиториями и зависимостями.
  • База пакетов знает принадлежность файлов: удаление, обновление, проверка целостности.

Практика решено 0 из 5

Вы не вошли — ответы проверяются, но прогресс не сохранится. Войти или зарегистрироваться.
Задание 1 Несколько вариантов

Что входит в метаинформацию пакета?

Задание 2 Заполнить таблицу

Низкоуровневый или высокоуровневый инструмент?

Низкоуровневый (один пакет-файл)Высокоуровневый (репозитории, зависимости)
dpkg
apt / apt-get
rpm
dnf / yum
Сам скачивает и ставит недостающие зависимости
Отметьте ячейку — «+», пустая — «−».
Задание 3 Ввод ответа

Какой командой Debian/Ubuntu посмотреть, какому пакету принадлежит файл /bin/ls? (команда целиком)

Задание 4 Расставить по порядку

Расставьте действия apt install nginx по порядку:

  1. Вычислить зависимости и составить план: какие пакеты установить
  2. Записать состояние пакетов в базу dpkg (/var/lib/dpkg/status)
  3. Передать пакеты dpkg: распаковать файлы, выполнить скрипты пакета
  4. Скачать .deb-файлы и проверить их подписи и контрольные суммы
  5. Прочитать индексы репозиториев (обновлённые apt update) и найти пакет nginx
Задание 5 Один вариант ответа

Чем установка из пакета лучше make install из исходников?

Войдите, чтобы отмечать пройденные уроки.