Product SiteDocumentation Site

Глава 5. Пакетная система: Инструменты и основные принципы

5.1. Структура двоичных пакетов
5.2. Метаинформация пакета
5.2.1. Описание: файл control
5.2.2. Сценарии настройки
5.2.3. Контрольные суммы, список конфигурационных файлов.
5.3. Структура исходного пакета
5.3.1. Формат
5.3.2. Использование в Debian
5.4. Работа с пакетами при помощи dpkg
5.4.1. Установка пакетов
5.4.2. Удаление пакета
5.4.3. Запросы к базе данных dpkg и анализ файлов .deb
5.4.4. Файл журнала dpkg
5.4.5. Поддержка мультиархитектуры
5.5. Сосуществование с другими пакетными системами
Как системному администратору Debian, вам постоянно придется работать с пакетами .deb, которые содержат, к примеру, программы или документацию, установку и сопровождение которых они облегчают. Поэтому неплохо было бы знать, что они из себя представляют, и как с ними работать.
В этой главе описывается структура и содержание «двоичных» и «исходных» пакетов. Первые являются файлами, которые можно непосредственно использовать с помощью команды dpkg, в то время как последние содержат исходный код программ, а также инструкции для сборки двоичных пакетов.

5.1. Структура двоичных пакетов

Формат пакета Debian устроен таким образом, что его содержимое может быть извлечено в любой Unix-системе, где есть такие команды как ar, tar и xz или, иногда, gzip или bzip2. Это, казалось бы, простое свойство важно для переносимости и аварийного восстановления.
Представьте, например, что вы по ошибке удалили программу dpkg, и поэтому больше не можете устанавливать пакеты Debian. dpkg сама является пакетом Debian, казалось бы, вашей системе конец... К счастью, вы знаете формат пакета и поэтому можете скачать файл .deb пакета dpkg и установить его вручную (см. sidebar ИНСТРУМЕНТЫ dpkg, APT и ar). Если по какому-то несчастью исчезла одна или несколько программ ar, tar или gzip/xz/bzip2, вам достаточно скопировать недостающую программу из другой системы (поскольку каждая из них работает совершенно автономно, без зависимостей, достаточно будет простого копирования). Если ваша система потерпела ещё более вопиющую неудачу, и даже они не работают (возможно, отсутствуют самые глубокие системные библиотеки?), вам следует попробовать статическую версию busybox (поставляется в пакете busybox-static), которая ещё более автономна и предоставляет такие подкоманды, как busybox ar, busybox tar и busybox xz.
На случай неудачи вам также лучше иметь резервную копию вашей системы (см. Раздел 9.10, «Резервное копирование»).
Обратите внимание на содержимое файла .deb:
$ ar t dpkg_1.21.22_amd64.deb
debian-binary
control.tar.gz
data.tar.xz
$ ar x dpkg_1.21.22_amd64.deb
$ ls
control.tar.gz  data.tar.xz  debian-binary  dpkg_1.21.22_amd64.deb
$ tar tJf data.tar.xz | head -n 16
./
./etc/
./etc/alternatives/
./etc/alternatives/README
./etc/cron.daily/
./etc/cron.daily/dpkg
./etc/dpkg/
./etc/dpkg/dpkg.cfg
./etc/dpkg/dpkg.cfg.d/
./etc/logrotate.d/
./etc/logrotate.d/alternatives
./etc/logrotate.d/dpkg
./lib/
./lib/systemd/
./lib/systemd/system/
./lib/systemd/system/dpkg-db-backup.service
$ tar tJf control.tar.xz
./
./conffiles
./control
./md5sums
./postinst
./postrm
./prerm
$ cat debian-binary
2.0
Как вы видите, архив ar пакета Debian состоит из трех файлов:
debian-binary
Это текстовый файл, который просто указывает версию файла .deb формата пакета. В DebianBookworm это всё ещё версия 2.0.
control.tar.xz
Этот архивный файл содержит всю доступную метаинформацию, такую как название и версия пакета, а также некоторые скрипты для запуска до, во время или после его (деинсталляции) установки. Некоторая метаинформация позволяет инструментам управления пакетами определять, возможно ли его установить или деинсталлировать, например, в соответствии со списком пакетов, уже имеющихся на компьютере, и были ли отправленные файлы изменены локально.
data.tar.xz, data.tar.bz2, data.tar.gz
Этот архив содержит все файлы, которые необходимо извлечь из пакета; то есть, в нём хранятся все исполняемые файлы, документация и т. п. Некоторые пакеты могут использовать и другие форматы сжатия, и в таком случае файл будет называться по-другому xz, bzip2 or gzip.