Вы управляете пакетами Debian ежедневно, но никогда не задумывались, что же это а файлы такие? Тогда эта статья для вас… Серьезно, deb-пакеты нечто большее чем простой файл архива, иначе мы бы просто использовали архивы TAR (ну вы знаете их, они еще заканчиваются на .tar.gz). давайте разберемся, от чего же так!
И в самом деле, .deb файл является файлом формата AR, вы можете управлять им через команду ar. Этот архив содержит 3 файла, вы можете сами убедиться в этом скачав любой .deb файл и запустив “ar t” для него:
$ ar t gwibber_2.31.91-1_all.deb
debian-binary
control.tar.gz
data.tar.gz
debian-binary это текстовый файл указывающий версию .deb файла, например “2.0″.
$ ar p gwibber_2.31.91-1_all.deb debian-binary
2.0
data.tar.gz содержит как раз файлы программы, содержимое этого архива будет установлено в вашу корневую директорию когда вы запустите “dpkg —unpack“.
Но самая интересная часть—которая делает .deb-файл чем-то большим чем просто файл архива —это последний файл. control.tar.gz содержит мета-информацию используемую пакетным менеджером. Что это такое?
$ ar p gwibber_2.31.91-1_all.deb control.tar.gz | tar tzf —
./
./postinst
./prerm
./preinst
./postrm
./conffiles
./md5sums
./control
Файл control из архива control.tar.gz это основной файл. В нем содержится основная информация о пакете, такая как имя пакета, его версия, описание,архитектура для запуска кто поддерживает пакет, и так далее. Он так же содержит поля с зависимостями, так что пакетный менеджер сможет получить все что требуется для установки пакета без вашей ручной работы. Если вы хотите больше узнать о полях с зависимостями, вы можете проверить Binary control файлы в Debian Policy.
Эта информация в конечном итоге сохраняется в файле /var/lib/dpkg/status после того как пакет будет установлен.
На различных этапах установки /обновления/удаления пакета, dpkg запускает скрипты которые соержаться в самом пакете:
Заметьте, что описание сильно упрощено. Фактически во многих случаях скрипты запускаются с различными параметрами. Есть целая глава Debian Policy посвященная этой теме. Нов ы можете прочитать про это в вики Debian: http://wiki.debian.org/MaintainerScripts.
Хотя это и выглядит страшновато, но это очень важная особенность.Она требуется например для того чтобы обновления были совместимы с предыдущими пакетами, для предоставления автоматического конфигурирования, создания системных пользователей на лету и т.д.
Распакованные файлы из архива перезаписывают предыдущие файлы. Это ожидаемое поведение, которое происходит при обновлении, исключая конфигурационные файлы. Вы же не хотите потерять все ваши настроки?
Поэтому пакет содержит список конфигурационных файлов в файле conffiles, который расположен в control.tar.gz. Таким образом dpkg будет разбираться с этими файлами по особому.
И в самом деле, многие инструменты уже используют возможность добавления своих файлов в файл control.tar.gz:
Однажды установленные, эти файлы сохраняются dpkg в директории /var/lib/dpkg/info/package.* вместе со скриптами сопровождения.
Восстановить доступ к странице ВКонтакте можно относительно просто. И для этого даже не потребуется помощь…
Реверс инжиниринг электроники и программного обеспечения — увлекательная и важная дисциплина, играющая ключевую роль в…
Рынок смартфонов не стоит на месте и каждый год пополняется новыми моделями. Компания Apple традиционно…
Запуск онлайн-бизнеса может показаться сложной задачей, но на самом деле этот процесс можно существенно упростить,…
Если Вы хотите продвинуть свой сайт в поисковых системах, одним из самых важных аспектов является…
Корейская компания Samsung зарекомендовала себя на потребительском рынке как производитель флагманов, так и бюджетных смартфонов.…