Как системному администратору 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).