DEB-CONTROL(5)

ИМЯ
deb-control - формат файла control для системы управления пакетами Debian GNU/Linux

ОБЗОР
control

ОПИСАНИЕ
Каждый пакет Debian содержит файл `control', состоящий из нескольких полей. Каждое поле начинается с тега, например Package или Version (регистр значения не имеет), затем двоеточие и содержимое поля. Поля разделяются только тегами, другими словами, текст поля может занимать несколько строк. Программы установки обычно объединяют эти строки, когда обрабатывают содержимое поля (кроме поля Description, описанного ниже).

ОБЯЗАТЕЛЬНЫЕ ПОЛЯ

Package: <имя пакета>
    Значение этого поля задаёт имя пакета и используется при конструировании имен файлов многими программами установки.

Version: <версия>
    Обычно в этом поле указывается оригинальный номер версии пакета в той форме, которую использует автор программы. Версия может также включать номер ревизии Debian (для неродных пакетов). Если указываются и версия и номер ревизии, то они разделяются дефисом: `-'. Из-за этого оригинальный номер версии не может содержать в себе дефис.

Maintainer: <полное имя и email>
    Тело поля должно быть в формате `Joe Bloggs <jbloggs@foo.com>' и обычно представляет собой имя того, кто создал пакет, а не имя автора той программы, которая входит в пакет.

Description: <короткое описание>
    <длинное описание>
    Формат описания пакета - это краткое и ёмкое описание в первой строке (после поля "Description"). Последующие строки могут быть использованы как длинное, более детальное описание. В начале каждой строки длинного описания должен находиться пробел, а пустые строки в длинном описании должны содержать одну точку '.', следующую за означенным пробелом.

НЕОБЯЗАТЕЛЬНЫЕ ПОЛЯ

Section: <секция>
    Это обобщённое поле, задающее категорию пакета, в зависимости от программ, которые он содержит. Примерами секций могут служить `utils', `net', `mail', `text', `x11' и т. д.

Priority: <приоритет>
    Устанавливает важность данного пакета, в зависимости от его значимости для системы. Приоритеты могут быть такими: `required', `standard', `optional', `extra' и т. д.

В Debian, поля Section и Priority могут принимать только значения из списка, который определен в Policy Manual. Они используются для того, чтобы решить, как пакеты будут размещены в архиве. Список значений можно узнать в последней версии пакета debian-policy.

Essential: <yes|no>
    Данное поле обычно необходимо только когда ответ - `yes' (да). Это означает, что данный пакет требуется для нормального функционирования системы. Dpkg и другие программы установки не разрешают удаление пакетов, помеченных как Essential (по крайней мере, без применения специальных флагов).

Architecture: <arch|all>
    Архитектура определяет, для какого типа аппаратной платформы был скомпилирован пакет. Архитектуры бывают такие: `i386', `m68k', `sparc', `alpha', `powerpc' и т. д. Заметим, что значение all означает, что пакет не зависит от архитектуры: например, он написан на Perl или содержит документацию.

Source: <имя архивов с исходниками>
    Имя пакета с исходниками, из которого компилируется бинарный пакет, если оно отличается от имени самого пакета.

Depends: <список пакетов>
    Список пакетов, требующихся для обеспечения нормальной работы данного пакета. Программа установки не позволит (по крайней мере, без использования специальных флагов) установить данный пакет, если пакеты, перечисленные в Depends, ещё не установлены. При установке скрипты postinst этих пакетов будут выполнены перед скриптом postinst данного пакета, а при удалении из системы скрипты prerm будут выполнены после скрипта prerm данного пакета.

Pre-Depends: <список пакетов>
    Список пакетов, которые должны быть установлены и настроены перед тем, как будет устанавливаться данный пакет. Обычно это используется в случае, когда пакет требует наличия другого пакета для запуска собственного сценария preinst.

Recommends: <список пакетов>
    Список пакетов, которые рекомендуется установить вместе с данным пакетом. Программа установки будет предупредит пользователя, если он устанавливает пакет без тех пакетов, которые перечислены в поле Recommends.

Suggests: <список пакетов>
    Список пакетов, которые расширяют функциональность устанавливаемого пакета, но без которых данный пакет может прекрасно обойтись.

Синтаксис полей Depends , Pre-Depends , Recommends и Suggests позволяет описать группу пакетов. Каждая такая группа - это список пакетов, разделённых символом вертикальной черты `|'. Группы разделяются запятыми. Запятые можно читать как `И', а вертикальные чёрточки - как `ИЛИ'. Каждый элемент является именем пакета, причём в круглых скобках можно указать его версию.

Номер версии может начинаться с `>>' и в этом случае означает любую более позднюю версию, при этом также может быть задан или опущен номер ревизии Debian (который отделен от версии дефисом). Таким образом: ">>" означает "больше", "<<" - "меньше", ">=" - "больше или равно", "<=" - "меньше или равно", а "=" - "точно так версия, которая указана".

Conflicts: <список пакетов>
    Список пакетов, которые конфликтуют с устанавливаемым пакетом; например, если в них содержатся файлы с теми же именами. Программа установки не позволит установить сразу два конфликтующих пакета. Каждый из двух конфликтующих пакетов должен указать в строке Conflicts имя другого.

Replaces: <список пакетов>
    Список пакетов, которые заменяет данный пакет. Это используется для того, чтобы разрешить данному пакету перезаписать файлы другого пакета и обычно используется совместно с полем Conflicts, чтобы сразу же заставить удалить этот другой пакет, если он содержит такие же файлы, как устанавливаемый.

Provides: <список пакетов>
    Это список виртуальных пакетов, которые предоставляет данный пакет. Обычно это используется, если несколько разных пакетов предоставляют один и тот же сервис. Например, sendmail и exim могут работать как почтовый сервер, поэтому они предоставляют общий пакет (`mail-transport-agent') для тех пакетов, которые могут от него зависеть. Это позволяет использовать sendmail или exim в тех пакетах, которые зависят от `mail-transport-agent'. Это устраняет необходимость указывать в пакетах, которые зависят от почтового сервера, список через `|' всех пакетов с почтовыми серверами.

Синтаксис Conflicts , Replaces и Provides позволяет перечислить пакеты через запятую (и пробелы). В поле Conflicts запятая читается как `ИЛИ'. В значениях полей Conflicts и Replaces можно указывать номер версии пакета (используя вышеописанный синтаксис).

ПРИМЕР
Package: grep
Essential: yes
Priority: required
Section: base
Maintainer: Wichert Akkerman <wakkerma@debian.org>
Architecture: sparc
Version: 2.4-1
Pre-Depends: libc6 (>= 2.0.105)
Provides: rgrep
Conflicts: rgrep
Description: GNU grep, egrep and fgrep.
 The GNU family of grep utilities may be the "fastest grep in the
 west".  GNU grep is based on a fast lazy-state deterministic matcher
 (about twice as fast as stock Unix egrep) hybridized with a
 Boyer-Moore-Gosper search for a fixed string that eliminates
 impossible text from being considered by the full regexp matcher
 without necessarily having to look at every character. The result is
 typically many times faster than Unix grep or egrep. (Regular
 expressions containing backreferencing will run more slowly,
 however.)

СМОТРИ ТАКЖЕ
deb(5), dpkg(8), dpkg-deb(1).

ПЕРЕВОД
Перевёл с английского Виктор Вислобоков <victor_v@permonline.ru> Обновление и корректура: Alexey Mahotkin <alexm@hsys.msk.ru>.