мета-данные страницы
  •  

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
glossary:gnu_linux:deb_pkg [2026/03/03 13:54] radi0devglossary:gnu_linux:deb_pkg [2026/03/03 14:07] (текущий) radi0dev
Строка 1: Строка 1:
 ====== deb пакет ====== ====== deb пакет ======
 +
 +deb пакеты делятся на бинарные (.deb) и исходные (.tar.gz).
  
 Deb-пакет это обычный архив файлов, содержащий файлы, предназначенные для установки в систему, а так же некоторые служебные файлы, необходимые для того чтобы эту установку сделать гибкой. При помощи программы ar упаковано в один файл: Deb-пакет это обычный архив файлов, содержащий файлы, предназначенные для установки в систему, а так же некоторые служебные файлы, необходимые для того чтобы эту установку сделать гибкой. При помощи программы ar упаковано в один файл:
Строка 63: Строка 65:
 ++++параметры| ++++параметры|
 ^ Параметр ^ Доп. параметры ^ Описание ^ ^ Параметр ^ Доп. параметры ^ Описание ^
-| preinst |||+**preinst** |||
 | install | Номер версии* | Вызывается перед распаковкой пакета. Номер версии указывает на пакет, который стоял ранее, но был удален без ключа --purge, то есть конфигурационные файлы сохранены. С данным параметром скрипт вызывается если в системе пакет не установлен. | | install | Номер версии* | Вызывается перед распаковкой пакета. Номер версии указывает на пакет, который стоял ранее, но был удален без ключа --purge, то есть конфигурационные файлы сохранены. С данным параметром скрипт вызывается если в системе пакет не установлен. |
 | upgrade | Номер версии | Вызывается перед распаковкой пакета. Номер версии указывает на пакет, который стоял ранее. Выполняется upgrade или downgrade для пакета. Зная текущую версию пакета и сравнив её с передаваемым здесь значением мы можем определить что происходит upgrade или downgrade | | upgrade | Номер версии | Вызывается перед распаковкой пакета. Номер версии указывает на пакет, который стоял ранее. Выполняется upgrade или downgrade для пакета. Зная текущую версию пакета и сравнив её с передаваемым здесь значением мы можем определить что происходит upgrade или downgrade |
 | abort-upgrade | Номер версии | Вызывается если preinst upgrade вызванное для нового пакета завершилось неудачей. Номер версии соответствует номеру версии нового пакета, который пытались установить. Таким вызовом установленный пакет информируется о том что его попытались неудачно проапгрейдить. | | abort-upgrade | Номер версии | Вызывается если preinst upgrade вызванное для нового пакета завершилось неудачей. Номер версии соответствует номеру версии нового пакета, который пытались установить. Таким вызовом установленный пакет информируется о том что его попытались неудачно проапгрейдить. |
-| postinst |||+**postinst** |||
 | configure | Номер версии* | Вызывается после распаковки пакета. Номер версии содержит версию пакета корректно сконфигурированного ранее. То есть того для которого данный вызов завершился без ошибки. По номеру версии скрипт конфигурации может принять решение о том каким образом необходимо производить апгрейд конфигурационных файлов программы. | | configure | Номер версии* | Вызывается после распаковки пакета. Номер версии содержит версию пакета корректно сконфигурированного ранее. То есть того для которого данный вызов завершился без ошибки. По номеру версии скрипт конфигурации может принять решение о том каким образом необходимо производить апгрейд конфигурационных файлов программы. |
 | reconfigure | Номер версии | Вызывается системой Debconf после переконфигурации пакета. Выполняет все необходимые действия по переконфигурации. | | reconfigure | Номер версии | Вызывается системой Debconf после переконфигурации пакета. Выполняет все необходимые действия по переконфигурации. |
 | abort-upgrade | Номер версии | Вызывается если preinstall upgrade нового пакета завершился неудачей. Новый пакет не устанавливается, а старый при этом может провести собственную переконфигурацию для того чтобы сохранить работоспособность. | | abort-upgrade | Номер версии | Вызывается если preinstall upgrade нового пакета завершился неудачей. Новый пакет не устанавливается, а старый при этом может провести собственную переконфигурацию для того чтобы сохранить работоспособность. |
-| prerm |||+**prerm** |||
 | remove | | Вызывается перед удалением пакета. | | remove | | Вызывается перед удалением пакета. |
 | upgrade | Номер версии | Вызывается перед удалением пакета при его апгрейде. Номер версии указывает на версию устанавливаемого пакета. | | upgrade | Номер версии | Вызывается перед удалением пакета при его апгрейде. Номер версии указывает на версию устанавливаемого пакета. |
 | failed-upgrade | Номер версии | Вызывается для устанавливаемого пакета, если prerm upgrade удаляемого пакета завершился с кодом ошибки. Номер версии указывает на удаляемый пакет. | | failed-upgrade | Номер версии | Вызывается для устанавливаемого пакета, если prerm upgrade удаляемого пакета завершился с кодом ошибки. Номер версии указывает на удаляемый пакет. |
-| postrm |||+**postrm** |||
 | remove | | Вызывается после удаления пакета | | remove | | Вызывается после удаления пакета |
 | purge | | Вызывается после удаления пакета. Если вызван dpkg --purge | | purge | | Вызывается после удаления пакета. Если вызван dpkg --purge |
Строка 81: Строка 83:
 | failed-upgrade | Номер версии | Вызывается после удаления пакета при его апгрейде. Вызывается в случае если postrm upgrade вернул код ошибки. Номер версии указывает на удаляемый пакет. Вызов скрипта происходит во вновь устанавливаемом пакете. | | failed-upgrade | Номер версии | Вызывается после удаления пакета при его апгрейде. Вызывается в случае если postrm upgrade вернул код ошибки. Номер версии указывает на удаляемый пакет. Вызов скрипта происходит во вновь устанавливаемом пакете. |
 | abort-install | Номер версии* | Вызывается если preinst install вернул код ошибки. Номер версии соответствует номеру версии передаваемому preinst install | | abort-install | Номер версии* | Вызывается если preinst install вернул код ошибки. Номер версии соответствует номеру версии передаваемому preinst install |
-| config |||+**config** |||
 | configure | Номер версии | Вызывается во время предварительной настройки пакета из dpkg-preconfigure. Этот вызов проходит во время установки/апгрейда пакета. Номер версии указывает на версию установленного на данный момент пакета. | | configure | Номер версии | Вызывается во время предварительной настройки пакета из dpkg-preconfigure. Этот вызов проходит во время установки/апгрейда пакета. Номер версии указывает на версию установленного на данный момент пакета. |
 | reconfigure | Номер версии | Вызывается при повторной настройке пакета. Номер версии - номер установленной версии пакета. Инициировать вызов можно дав команду dpkg-reconfigure package из командной строки. После этого вызова системой Debconf будет вызван сценарий postinst reconfigure | | reconfigure | Номер версии | Вызывается при повторной настройке пакета. Номер версии - номер установленной версии пакета. Инициировать вызов можно дав команду dpkg-reconfigure package из командной строки. После этого вызова системой Debconf будет вызван сценарий postinst reconfigure |
 ++++ ++++
  
 +=== templates ===
 +
 +Если используется возможность конфигурации/реконфигурации пакета в системе Debconf (скрипт config), то этот файл содержит шаблоны диалогов с пользователем.
 +
 +=== conffiles ===
 +
 +Содержит перечень файлов пакета, которые являются конфигурационными. По одному файлу на одну строку. Эти файлы при апгрейдах пакета заменяться не будут (или же будут задаваться вопросы с предложением о замене). Подробнее о содержимом см. ''man debconf-devel''.
 +
 +==== Утилиты для работы/генерации содержимого DEBIAN/ ====
 +
 +=== dpkg-gencontrol ===
 +
 +Осуществляет генерацию файла control на базе шаблона этого файла, составляемого майнтенером, а так же дополнительных параметров, передаваемых из командной строки. В частности, устанавливает номер версии пакета, архитектуру итп. Номер версии обычно берется из файла changelog, однако иногда бывает необходимо из одного src-пакета собрать несколько deb-пакетов с разными номерами версий. Опция -v поможет Вам в этом.
 +
 +=== dpkg-shlibdeps ===
 +
 +
 +Вычисляет зависимости для исполняемых файлов и библиотек. Майнтенер обычно указывает Build-зависимости (зависимости сборки), а Depend-зависимости (зависимости необходимые для работы) вычисляются с помощью этой (или подобных) утилит. Такой подход дает возможность не привлекать майнтенера при смене имен библиотек от которых зависит пакет.
 +
 +=== dpkg-parsechangelog ===
 +
 +Позволяет извлекать из changelog-файла некоторые параметры, вроде номера версии, координат и имени майнтенера итп. Результаты работы этой утилиты могут использоваться как входные параметры для утилит вроде dpkg-gencontrol.
 +
 +=== dpkg-architecture ===
 +
 +Позволяет извлекать информацию (манипулировать ей) об архитектуре системы для которой собирается пакет или на которой собирается пакет. Выходные данные так же могут использоваться для использования в других утилитах. Например при генерации файла control утилитой dpkg-gencontrol. 
 +
 +==== Проверка соответствия пакета современным требованиям Debian ====
 +
 +После того как пакет создан, можно получить информацию о его содержимом с помощью вышеупомянутой утилиты dpkg:
 +  * ''dpkg -I package.deb'' - выведет общую информацию о пакете, включая содержимое control-файла; 
 +  * ''dpkg -c package.deb'' - выведет полный перечень файлов пакета. 
 +
 +После этих двух проверок (все файлы на месте, информация в финальном control корректна), можно запустить одну из двух проверки пакета на соответствие текущему полиси.
 +
 +Такие проверки осуществляются при помощи программы lintian. Проверяются такие параметры, как правильность расположения двоичных файлов, наличие man-страниц, проверяется на наличие ошибок описание пакета в control-файле, просматривается файл copyright и так далее. Идеальный вариант - добиться от создаваемого пакета такого состояния, что lintian не выводит предупреждений/сообщений об ошибках:
 +  * ''lintian -is package.deb'' - покажет подробную информацию о проблемах в пакете.