Как системному администратору 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
.
Обратите внимание на содержимое файла .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
.