Как системному администратору Debian, вам постоянно придется работать спакетами .deb
, которые содержат, к примеру, программы или документацию, установку и сопровождение которых они облегчают. Поэтому неплохо было бы знать, что они из себя представляют, и как с ними работать.
В этой главе описывается структура и содержание «двоичных» и «исходных» пакетов. Первые являются файлами .deb
, которые можно использовать непосредственно с помощью dpkg
, в то время как последние содержат исходный код программ, а также инструкции для сборки двоичных пакетов.
5.1. Структура двоичных пакетов
Формат пакета Debian устроен таким образом, что его содержимое может быть извлеченно в любой Unix-системе, где есть такие команды как ar
, tar
и gzip
(иногда также xz
или bzip2
). Это, казалось бы, простое свойство пакета важно для переносимости и аварийного восстановления.
Представьте, например, что вы по ошибке удалили программу dpkg
, и после этого не можете больше устанавливать пакеты Debian. dpkg
сама является пакетом Debian, так что в этом случае мы получим проблему «курицы и яйца»... К счастью, вы знакомы с форматом пакетов и поэтому можете скачать .deb
-файл пакета dpkg и установить его вручную (см. врезку «ИНСТРУМЕНТЫ»). Если по несчатью из системы исчезла одна или несколько программ ar
, tar
или gzip
/xz
/bzip2
, вам просто нужно будет скопировать их из другой системы (так как каждая из них работает полностью автономно, без зависимостей, то простого копирования будет достаточно).
Обратите внимание на содержимое файла .deb
:
$
ar t dpkg_1.16.10_amd64.deb
debian-binary
control.tar.gz
data.tar.gz
$
ar x dpkg_1.16.10_i386.deb
$
ls
control.tar.gz data.tar.gz debian-binary dpkg_1.16.10_i386.deb
$
tar tzf data.tar.gz | head -n 15
./
./var/
./var/lib/
./var/lib/dpkg/
./var/lib/dpkg/updates/
./var/lib/dpkg/alternatives/
./var/lib/dpkg/info/
./var/lib/dpkg/parts/
./usr/
./usr/share/
./usr/share/locale/
./usr/share/locale/sv/
./usr/share/locale/sv/LC_MESSAGES/
./usr/share/locale/sv/LC_MESSAGES/dpkg.mo
./usr/share/locale/it/
$
tar tzf control.tar.gz
./
./conffiles
./preinst
./md5sums
./control
./postrm
./prerm
./postinst
$
cat debian-binary
2.0
Как вы видите, архив ar
пакета Debian состоит из трех файлов:
debian-binary
. Это текстовый файл, который просто указывает версию пакета .deb
(в 2013 году — версия 2.0).
control.tar.gz
. Этот архивный файл содержит всю доступную метаинформацию, например название и версию пакета. Эта метаинформация также позволяет инструментам управления пакетами определить, возможно ли установить или удалить пакет, например в соответствии со списком уже установленных в системе пакетов.
data.tar.gz
. Этот архив содержит все файлы, которые необходимо извлечь из пакета; то есть в нем хранятся все исполняемые файлы, документация и т. п. Некоторые пакеты могут использовать и другие форматы сжатия, и в таком случае файл будет называться по-другому (data.tar.bz2
для bzip2, data.tar.xz
для XZ, data.tar.lzma
для LZMA).