Руководство начинающего разработчика Debian - Обязательные файлы в каталоге debian

       

Файл control


Этот файл содержит информацию, которая используется программами dpkg и dselect (а также другими) для работы c пакетами. Вот, например, файл control, который был создан программой dh_make. 1 Source: gentoo 2 Section: unknown 3 Priority: optional 4 Maintainer: Josip Rodin <jrodin@jagor.srce.hr> 5 Standards-Version: 3.0.1 6 7 Package: gentoo 8 Architecture: any 9 Depends: ${shlibs:Depends} 10 Description: <insert up to 60 chars description> 11 <insert long description, indented with spaces>

(номера строк добавлены)

Строки 1-5 представляют собой управляющую информацию для пакета, содержащего исходные тексты, где строка 1 — его название.

Строка 2 — это название раздела, к которому относится данный пакет. Как, возможно, вы уже заметили, Debian разбит на несколько разделов: раздел main (основной) содержит свободное программное обеспечение, non-free (не-свободное) содержит пакеты, которые не совсем отвечают определению свободного программного обеспечения, и contib, где находятся пакеты, которые, являясь свободным программным обеспечением, зависят от не-свободного программного обесепеченя. В каждом разделе существуют логические подразделы, определяющие что пакет из данного подраздела делает. Таким образом, существует раздел ‘admin’, где находятся программы для администрирования системы, раздел ‘base’ — для основных пакетов, раздел ‘devel’ содержит инструменты разработки программного обеспечения, ‘doc’ — документацию, ‘libs’ — библиотеки, ‘mail’ — почтовых сервером и программ чтения почты, ‘net’ — для сетевых приложений, ‘x11’ — программ, работающих под X Window System, и много много других.

В нашем случае мы должны указать ‘x11’.

В строке 3 мы должны указать, насколько важен данный пакет. Значения полей Section и Priority пока используется только программой dselect, которая позволяет пользователю сортировать по значениям этих полей, они также могут (и, скорее всего, будут) замещены сопровождающими ftp-сервер. Документ «Policy Manual» подробно описывает, чем нужно руководствоваться при выборе значений для этих полей.

В нашем случае мы оставим значение этого поля равным ‘optional’.

В строке 4 указано имя и адрес разработчика пакета.

Строка 5 — это версия документа «Debian Policy», стандартам которого следует данный пакет (две основные версии пакета debian-policy).

Если для построения программы используется нестандартный компилятор или какие-нибудь дополнительные утилиты, вы должны перечислить их в специальной записи ‘Build-Depends’. Дополнительная информация может быть найдена в «Руководстве по созданию пакетов» (раздел 8.7) и в документации, прилагаемой к пакету build-essential.

В строке 7 указано имя двоичного пакета.

В строке 8 указана архитектура процессора, для которого может быть скомпилирован двоичный пакет. Мы можем оставить в качестве значения ‘any’, так как программа dpkg-gencontrol(1) поместит в это поле значение, соответствующее процессору машины, на которой компилировался пакет (см. в «Руководстве разработчика» объяснение понятия ‘перенос пакета’). Если ваш пакет не зависит от архитектуры процессора (например, сценарий на языке Perl или же документ), измените значение этого поля на ‘all’ и прочитайте раздел Файл rules, раздел 4.4, который описывает цель ‘binary-indep’, используемую при построении пакета.

Одна из самых полезных возможностей системы управления пакетами Debian приведена в строке 9. Пакеты могут зависеть друг от друга различным образом. Помимо зависимости Depends, существуют также зависимости Recommends, Suggests, Pre-Depends, Conflicts, Provides, и Replaces .

Программы управления пакетами (такие как dpkg, dselect или apt) обычно одинаковым образом обрабатывают эти зависимости. Мы попытались дать объяснение тем случаям, когда поведение различается. (см. dpkg(8), dselect(8), apt(8), console-apt(8), gnome-apt(8))

Ниже приведено описание того, что означает каждый тип зависимости:


Depends Данный пакет не может быть установлен, если пакеты, указанные в списке зависимостей Depends, также не установлены. Используйте этот тип зависимости, если ваша программа гарантировано не будет работать (или вызовет какие-нибудь серьезные проблемы), если соответствующий пакет не установлен.

Recommends Программа dselect не установит ваш пакет, если пакеты, указанные в списке зависимостей Recommends, не установлены. Однако программы dpkg и apt-get должны позволить сделать это. Используйте данный тип зависимостей для пакетов, которые бы не использовались вместе с вашим пакетом только в нестандартных случаях.

Suggests Когда пользователь устанавливает ваш пакет, программа dselect предложит ему также установить пакеты, перечисленные в списке зависимостей Suggests. Программы dpkg и apt этого делать не будут. Используйте данный тип зависимостей для пакетов, которые могут расширить функциональность вашего пакета, и, таким образом, увеличить его полезность.

Pre-Depends Данный тип зависимостей строже, чем зависимости типа Depends. Данный пакет не будет установлен, если пакеты, указанные в списке зависимостей Pre-Depends, уже не установлены или не настроены. Используйте этот тип зависимостей очень скупо и только после обсуждения в списке рассылки debian-devel. Другими словами, не используйте его никогда! :-)

Conflicts Данный пакет не будет установлен пока пакеты, перечисленные в списке зависимостей Conflicts, не удалены из системы. Используйте этот тип зависимостей, если ваша программа гарантировано не будет работать (или же может вызвать серьезные повреждения системы), если присутвует какой-нибудь определенный пакет.

Provides В случае, когда для какого-то типа пакетов существуют несколько альтернатив, вводятся так называемый виртуальные пакеты. Полный список виртуальных пакетов приведен в файле /usr/share/doc/debian-policy/virtual-package-names-list.text.gz. Вы должны использовать данный тип зависимостей, если ваша программа реализует функциональность существующего виртуального пакета.



Replaces Используйте данный тип зависимостей в случае, когда ваш пакет заменяет файлы из другого пакета, или же полностью заменяет другой пакет (в этом случае, вы также должны использовать зависимость типа Conflicts:). Тогда файлы из указанного пакета будут удалены перед установкой вашего.

Формат этих полей одинаков: это список имен пакетов, разделенных запятой. Здесь также могут быть указаны списки имен альтернативных пакетов, разделенных вертикальной чертой |. Для каждого пакета в списке вы можете ограничить допустимость указанного пакета по версии. Версии указываются в круглых скобках после имени пакета и должны состоять из символа сравнения, за которым следует номер версии. Допустимыми символами сравнения являются: <<, <=, =, >=, и >> для “строго раньше чем”, “раньше или равно”, “в точности равно”, “равно или позже” и “строго позже чем” соответственно.

Последнее, что мы хотели бы здесь показать, это $(shlibs:Depends). Данная конструкция позволяет программе dh_gencontrol(1) заполнить данное поле названиями пакетов разделяемых библиотек — например, libc6 или xlib6g — которыми пользуется ваша программа (список библиотек позволяет получить программа dh_shlibdeps(1)). Таким образом, вы можете их не указывать. В нашем случае, мы оставляем строку 9 так как она есть.

Мы добавим строчку (которая станет строкой номер 10) со списком зависимостей типа Suggests. Здесь мы (пока только) укажем пакет file так как программа gentoo может использовать некоторые из возможностей предоставляемых данным пакетом/программой.

Строка 11 — это короткое описание. У большинства людей ширина экрана составляет 80 колонок, поэтому мы рекомендуем вам не превышать этот предел. Здесь мы напишем “A fully GUI configurable GTK+ file manager”.

В строке 12 мы укажем длинное (более полное) описание пакета. В первой колонке должен быть пробел. Пустых строк не должно быть. Если вам необходимо поместить в описание пустую строку, поместите после пробела (!) символ ‘.’ (точка). После описания не должно быть больше одной пустой строки.

Вот обновленный файл control: 1 Source: gentoo 2 Section: x11 3 Priority: optional 4 Maintainer: Josip Rodin <jrodin@jagor.srce.hr> 5 Standards-Version: 3.0.1 6 7 Package: gentoo 8 Architecture: any 9 Depends: ${shlibs:Depends} 10 Suggests: file 11 Description: A fully GUI configurable GTK+ file manager 12 gentoo is a file manager for Linux written from scratch in pure C. It 13 uses the GTK+ toolkit for all of its interface needs. gentoo provides 14 100% GUI configurability; no need to edit config files by hand and re- 15 start the program. gentoo supports identifying the type of various 16 files (using extension, regular expressions, or the 'file' command), 17 and can display files of different types with different colors and icons. 18 . 19 gentoo borrows some of its look and feel from the classic Amiga file 20 manager "Directory OPUS" (written by Jonathan Potter).

(номера строк добавлены)


Содержание раздела