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, которые содержат, к примеру, программы или документацию, установку и сопровождение которых они облегчают. Поэтому неплохо было бы знать, что они из себя представляют, и как с ними работать.
В этой главе описывается структура и содержание «двоичных» и «исходных» пакетов. Первые являются файлами .deb, которые можно использовать непосредственно с помощью dpkg, в то время как последние содержат исходный код программ, а также инструкции для сборки двоичных пакетов.

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

Формат пакета Debian устроен таким образом, что его содержимое может быть извлеченно в любой Unix-системе, где есть такие команды как ar, tar и gzip (иногда также xz или bzip2). Это, казалось бы, простое свойство пакета важно для переносимости и аварийного восстановления.
Представьте, например, что вы по ошибке удалили программу dpkg, и после этого не можете установить пакеты Debian. dpkg сама является пакетом Debian, так что в этом случае мы получим проблему «курицы и яйца»... К счастью, вы знакомы с форматом пакетов и поэтому можете скачать .deb-файл пакета dpkg и установить его вручную (см. врезку ИНСТРУМЕНТЫ dpkg, APT и ar). Если по несчаcтью из системы исчезла одна или несколько программ ar, tar или gzip/xz/bzip2, нужно будет просто скопировать их из другой системы (так как каждая из них работает полностью автономно, без зависимостей, то простого копирования будет достаточно). Если система пострадала более серьёзно и даже если она не работает (возможно отсутствуют важные системные библиотеки?), стоит попробовать статическую версию busybox (предоставляемую в пакете busybox-static), которая является ещё более автономной и предоставляет внутренние команды, такие как busybox ar, busybox tar и busybox gunzip.
Обратите внимание на содержимое файла .deb:
$ ar t dpkg_1.17.23_amd64.deb
debian-binary
control.tar.gz
data.tar.gz
$ ar x dpkg_1.17.23_amd64.deb
$ ls
control.tar.gz  data.tar.gz  debian-binary  dpkg_1.17.23_amd64.deb
$ tar tzf data.tar.gz | head -n 15
./
./var/
./var/lib/
./var/lib/dpkg/
./var/lib/dpkg/parts/
./var/lib/dpkg/info/
./var/lib/dpkg/alternatives/
./var/lib/dpkg/updates/
./etc/
./etc/logrotate.d/
./etc/logrotate.d/dpkg
./etc/dpkg/
./etc/dpkg/dpkg.cfg.d/
./etc/dpkg/dpkg.cfg
./etc/alternatives/
$ tar tzf control.tar.gz
./
./conffiles
./postinst
./md5sums
./prerm
./preinst
./control
./postrm
$ cat debian-binary
2.0
Как вы видите, архив ar пакета Debian состоит из трех файлов:
  • debian-binary. Это текстовый файл, который просто указывает версию пакета .deb (в 2015 году — версия 2.0).
  • control.tar.gz. Этот архивный файл содержит всю доступную метаинформацию, например название и версию пакета. Эта метаинформация также позволяет инструментам управления пакетами определить, возможно ли установить или удалить пакет, например в соответствии со списком уже установленных в системе пакетов.
  • data.tar.gz. Этот архив содержит все файлы, которые необходимо извлечь из пакета; то есть, в нем хранятся все исполняемые файлы, документация и т. п. Некоторые пакеты могут использовать и другие форматы сжатия, и в таком случае файл будет называться по-другому (data.tar.bz2 для bzip2, data.tar.xz для XZ).