Структура пакета deb
Общие понятия
Пакет deb является архивом ar
Состав пакета deb
Пакет содержит файловые архивы и метаинформацию:
ar -t ./nmap_7.60-1ubuntu5_amd64.deb
debian-binary
control.tar.xz
data.tar.xz
Извлечь файлы из архива ar:
ar -x ar -x nmap_7.60-1ubuntu5_amd64.deb
Файл debian-binary описывает формат архива:
ar -p nmap_7.60-1ubuntu5_amd64.deb debian-binary
2.0
В файле control.tar/xz содержится файлы с мета-информацией:
tar -tf control.tar.xz
./
./control
./md5sums
Архив data.tar.xz содержит файлы, которые устанавливаются в систему:
less data.tar.xz
Метапакеты
Метапакеты - пустые пакеты, описывают зависимости, облегчают устновк совместной группы программ. Команда apt install мета_пакет установит все программы используя зависимости метапакета.
Просмотр содержимого мета-файла control
dpkg -I nmap_7.60-1ubuntu5_amd64.deb control
Здесь в разных полях содержится важная информация о пакете:
Depends - зависимости пакета, например libgcc1 (>= 1:3.0) означает, что в системе должен присутствовать пакет libgcc1 версии выше 1:3.0
Pre-depends это зависимости которые должны быть уже установлены в системе до установки пакета.
Recommends и Suggests рекомендованные и предлагаемые зависимости
Enhances говорит что текущий пакет является расширением для перечисленных пакетов
conflicts или breaks перечисляет пакет которые могут конфликтовать с текущим
provides использование виртуального пакета
replaces - указывает на наличие файлов, которые присутствуют в другом пакете, эти файлы он может заменить, в таком случае dpkg даст сбой, но не с параметром --force-overwrite.
В дополнение к управляющему мета-файлу в архиве control.tar.xz может содержаться скрипты вызываемые на разных этапах обработки пакетов.
preinst - выполняется перед установкой пакета
postinst - выполняется после установки пакета
prerm - выполняется перед удалением пакета
postrm - выполняется после удаления пакета
Следующая команда покажет эти скрипты в пакете, если они есть
dpkg -I vim_2%3a8.0.1453-1ubuntu1.8_amd64.deb | head
База данных dpkg
/var/lib/dpkg содержит список всех пакетов установленных в системе
/var/lib/dpkg/info/ содержит скрипты конфигурирования для установленных пакетов файл с расширением .list в котором хранятся списки файлов для пакетов
/var/lib/dpkg/status - хранит блоки данных для каждого пакета, в эти копируется информация из файла control пакета
less /var/lib/dpkg/available
less /var/lib/dpkg/info
less /var/lib/dpkg/status
Распаковка deb пакета
ar vx program-2018.10.15.deb
tar xvf control.tar.gz
tar xvf data.tar.xz