[ назад ] [ Содержание ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ вперед ]
Пакеты обычно содержат все файлы необходимые для реализации определенного набора функций. Есть два типа пакетов Debian:
Двоичные (Binary) пакеты, которые содержат выполняемые и конфигурационные файлы, страницы man/info, информацию об авторских правах и другую документацию. Эти пакеты распространяются в архивах специального формата Debian (см. Какой формат у двоичных пакетов Debian?, раздел 6.2); их обычно можно отличить по расширению '.deb'. Двоичные пакеты могут быть распакованы при помощи утилиты dpkg; подробности даны в странице руководства.
Исходные (Source) пакеты, которые состоят из .dsc файла описывающего исходный пакет (включая имена файлов описанных ниже), .orig.tar.gz файла, содержащего оригинальный исходный текст программы в архивном формате tar.gz и, обычно, .diff.gz файл содержащий специфические для Debian изменения к оригинальным исходным текстам. Утилита dpkg-source запаковывает и распаковывает исходные архивы Debian; детали описаны на страницах руководства.
При установке программного обеспечения система управления пакетами использует
"зависимости" (dependencies), которые тщательно определены
сопровождающим пакет. Эти зависимости указаны в файле control,
связанном с каждым пакетом. Например пакет содержащий GNU компилятор C
(gcc
) "зависит" от пакета binutils
, в
котором содержатся компоновщик и ассемблер. Если пользователь попытается
установить gcc
до того как установит binutils
, то
система управления пакетами (dpkg) выдаст сообщение об ошибке, содержащее
указание на необходимость установить binutils
, и прервет установку
пакета. (Обычно, эта возможность может быть отключена настойчивым
пользователем, см. dpkg(8)
.) Более подробно смотри ниже в Что подразумевают говоря, что пакет
Зависит/Рекомендует/Предполагает/Конфликтует/Заменяет/Предоставляет
(Depends/Recommends/Suggests/Conflicts/Replaces/Provides) другой пакет?, раздел
6.9.
Инструменты управления пакетами Debian могут использоваться для:
манипуляций и управления пакетами и частями пакетов,
помощи пользователю в разбиении пакетов, которые должны быть перенесены на носителях ограниченной емкости, таких как дискеты,
помощи разработчику в сборке пакетов,
помощи пользователю в установке пакетов, размещенных на удаленном FTP сервере.
"Пакет" Debian, или архив Debian, содержит выполнимые файлы, библиотеки и документацию связанные с определенным набором программ или с множеством взаимосвязанных программ. Как правило, файл архива Debian имеет расширение .deb.
Внутренний формат двоичных пакетов Debian описан в странице руководства
deb(5)
. Этот внутренний формат может быть изменен (в различных
выпусках Debian GNU/Linux), поэтому всегда используйте dpkg-deb(1)
для различных манипуляций с файлами .deb.
Имена двоичных пакетов Debian удовлетворяют следующему соглашению: <foo>_<VersionNumber>-<DebianRevisionNumber>.deb
Заметим, что foo полагается именем пакета. Для проверки имени пакета связанного с конкретным .deb файлом можно воспользоваться следующими методами:
просмотреть файл "Packages" в каталоге FTP сервера, где хранился архив Debian. Этот файл содержит блоки описаний для каждого пакета; первое поле в каждом блоке -- имя пакета.
использовать команду dpkg --info foo_VVV-RRR.deb (где VVV и RRR -- версия и ревизия проверяемого пакета). При этом, среди прочей информации, выводится имя пакета соответствующее архивному файлу.
Компонент VVV -- номер версии определяемый разрабочиком программы. На формат версии нет каких либо ограничений, он может быть различным, напр., "19990513" или "1.3.8pre1".
Компонент RRR номер ревизии Debian, определяется разработчиком Debian (или конкретным пользователем, если тот хочет построить пакет сам). Этот номер соответствует количеству пересмотров, которому подвергся пакет, так, при каждом пересмотре, обычно, вносятся изменения в Debian Makefile (debian/rules), управляющий файл Debian (debian/control), сценарии инсталяции и удаления (debian/p*), или в файлы конфигурации используемые с пакетом.
Спецификации содержимого управляющего файла Debian приводятся в "Руководстве по пакетам Debian" (Debian Packaging manual), глава 4, см. Какая ещё документация существует для системы Debian?, раздел 11.1.
Короткий пример файла control для пакета Debian hello приведен ниже:
Package: hello
Priority: optional
Section: devel
Installed-Size: 45
Maintainer: Adam Heath <doogie@debian.org>
Architecture: i386
Version: 1.3-16
Depends: libc6 (>= 2.1)
Description: The classic greeting, and a good example
The GNU hello program produces a familiar, friendly greeting. It
allows nonprogrammers to use a classic computer science tool which
would otherwise be unavailable to them.
.
Seriously, though: this is an example of how to do a Debian package.
It is the Debian version of the GNU Project's `hello world' program
(which is itself an example for the GNU Project).
Поле Package определяет имя пакета. Это имя по которому инструменты упраления пакетами будут его опознавать. Обычно такое же, но не обязательно, как первая часть имени файла архива Debian.
Поле Version определяет версию разработчика и (в последнем компоненте) номер ревизии пакета данной программы как раскрыто в Почему у пакетов Debian такие длинные имена?, раздел 6.3.
Поле Architecture определяет тип процессора для которого был скомпилирован данный пакет.
Поле Depends содержит список пакетов, которые должны быть установлены для успешной установки данного пакета.
Installed-Size показывает сколько дискового пространства займет установленный пакет. Этот параметр может использоваться программами установки для определения остающегося дискового пространства.
Строка Section определяет "раздел", в котором хранится пакет Debian на FTP сервере. Это имя подкаталога (в одном из основных каталогов, см. Что содержат каталоги в FTP-архивах Debian?, раздел 5.1) в котором хранится пакет.
Поле Priority показывает насколько важным является пакет для установки; некоторые программы, напр., dselect или console-apt могут сортировать пакеты по категориям. См. Что такое Требуемый/Важный/Стандартный/Необязательный/Дополнительный (Required/Important/Standard/Optional/Extra) пакет?, раздел 6.7.
В поле Maintainer указан e-mail адрес человека, ответственного за поддержку данного пакета.
В поле Description дается краткое описание возможностей, предоставляемых пакетом.
Для более подробной информации о полях, которые может иметь пакет, смотрите главу 4 Руководства по пакетам Debian, "Управляющие файлы и их поля."
Conffile содержит список файлов конфигурации (обычно помещаемых в /etc), которые система управления пакетами не будет перезаписывать при обновлении пакета. Это гарантирует, что содержимое файлов конфигурации будет сохранено и позволяет обновлять пакеты не прерывая работу системы.
Чтобы точно определить, какие файлы сохраняются при обновлении, запустите:
dpkg --status package
и смотрите в строке "Conffiles:".
Это выполняемые сценарии, которые автоматически запускаются перед или после установки пакета. Вместе с файлом control, эти файлы являются частью "управляющего" раздела архивного файла Debian.
Более подробно:
Данный сценарий выполняется перед тем, как пакет будет распакован из .deb файла. Многие сценарии 'preinst' останавливают сервисы, которые будут обновлены пакетом, до завершения установки или обновления.
Этот сценарий, обычно, завершает требуемую настройку пакета после того, как он был извлечен из .deb файла. Часто, сценарий 'postinst' запрашивает у пользователя различные параметры и/или предупреждает пользователя, что если он примет значения по-умолчанию, то позже прийдется переконфигурировать пакет. Многие сценарии также 'postinst' выполняют команды, необходимые для запуска или перезапуска сервиса после установки или обновления пакета.
Этот сценарий, обычно, останавливает выполнение всех демонов, связанных с пакетом. Он выполняется перед удалением файлов, связанных с пакетом.
Этот сценарий, обычно изменяет ссылки или другие файлы, связанные с пакетом, и/или удаляет файлы созданные пакетом. (См. также Что такое виртуальный пакет?, раздел 6.8).
В настоящее время все управляющие файлы можно найти в каталоге /var/lib/dpkg/info. Файлы, относящиеся к пакету foo имеют имя "foo" и расширения "preinst", "postinst" и т.д. Файл foo.list в этом каталоге содержит список всех файлов установленных пакетом foo. (Заметим, что местонахождение файлов определяется dpkg; вам не следует полагаться на указанный каталог).
Для каждого пакета Debian создателями дистрибутива определен приоритет (priority), в качестве помощи для управления пакетами. Приоритеты следующие:
Требуемый (Required): пакет, который необходим для правильного функционирования системы.
Сюда включены все инструменты, необходимые для устранения неполадок в системе. Вам не следует удалять эти пакеты, иначе ваша система может перестать работать, и вы, что не исключено, даже не сможете использовать dpkg для того, чтобы вернуть все на свои места. Функциональность системы, в которой установлены только Требуемые пакеты, не слишком высока, но достаточна для того, чтобы позволить системному администратору загрузить ее и установить больше програмного обеспечения.
Важные (Important) пакеты содержат программы, которые должны иметься в любой Unix-подобной системе.
Без этих программ не смогут работать или не будут обладать полной функциональностью другие пакеты. Сюда НЕ относятся Emacs, X11, Tex или любое другое большое приложение. Это пакеты образующие базовую структуру.
Стандартные (Standard) пакеты являются стандартными для любой Linux системы, включая сравнительно небольшие, но не слишком ограниченные, системы работающие только в текстовом режиме.
Это то, что будет установлено по умолчанию, если пользователь не выберет чего-либо еще. Сюда не относятся многие большие приложения, но входят такие, как Emacs и ограниченное подмножество TeX и LaTeX.
Необязательные (Optional) пакеты содержат все то, что вы, как правило, можете захотеть установить, если не вполне осознаете свои потребности.
Сюда входят X11, полный дистрибутив TeX, и множество других приложений.
Дополнительные (Extra): пакеты, которые либо конфликтуют с другими пакетами, имеющими более высокий приоритет, и применимые только тогда, когда вы знаете, что это такое, либо имеющие специализированные требования, которые делают их неподходящими для раздела "Optional".
Виртуальный пакет - это общее имя, применимое к любому из группы пакетов, все из которых обеспечивают выполнение какой либо функции. Например, программы tin и trn, обе являются программами для чтения новостей и должны удовлетворять зависимость программы, которая требует наличия в системе программы чтения новостей, для своей работы. Поэтому обе предоставляют "виртуальный пакет", называемый news-reader.
Аналогично, smail и sendmail обеспечивают функции почтового транспортного агента. Поэтому они предоставляют виртуальный пакет "mail transport agent". Если один из них установлен, то любая программа, зависящая от пакета mail-transport-agent, будет удовлетворена существованием данного виртуального пакета.
Кроме того, если в системе установлено более одного пакета, предоставляющего определенный виртуальный пакет, то Debian обеспечивает системного администратора механизмом, позволяющим определить один из этих пакетов предпочтительным. Для этого имеется команда update-alternatives, описанная далее в Некоторым пользователям нравится mawk, другим - gawk; некоторым - vim, другим - elvis; некоторым - trn, другим - tin; как осуществялется поддержка предпочтений в Debian?, раздел 10.10.
В системе пакетов Debian введено понятие "зависимости" между пакетами, которое показывает насколько правильная работа Программы А зависит от существования Программы В на данной системе:
Пакет A зависит (depends) от пакета B, если B абсолютно необходим для работы A. В некоторых случаях, A не просто зависит от B, но дополнительно требует определенную версию B. В этом случае, обычно, накладывается требование, чтобы версия B была не ниже заданной.
Пакет A рекомендует (recommends) установку Пакета B, если сопровождающий пакета считает, что большинство пользователей не захотят пользоваться A не имея функциональности, предоставляемой пакетом B.
Пакет A поддерживает (suggests) Пакет B, если B содержит файлы относящиеся (и обычно расширяющие их) к функциям выполняемым пакетом A.
Пакет A конфликтует (conflicts) с Пакетом B, когда A не может работать, если установлен пакет B. Наиболее часто, конфликты возникают в случаях, когда A содержит файлы, заменяющие аналогичные, но содержащиеся в B. "Конфликты" часто сочетаются с "заменой".
Пакет A заменяет (replaces) пакет B, когда файлы установленные пакетом B удаляются и (в некоторых случаях) замещаются файлами пакета A.
Пакет A предоставляет (provides) Пакет B, когда все файлы и функциональность B обеспечиваются A.
Более подробная информация об использовании этих терминов может быть найдена в Руководстве по пакетам (Packaging manual) и в Руководстве по политике (Policy manual).
"Pre-Depends" это специальная форма зависимости. Большинство пакетов будут извлечены dpkg из архивных файлов независимо от того, существуют ли файлы от которых они зависят или нет. Проще говоря, dpkg извлекает файлы пакета из архива и помещает их на положенные места. Если пакет зависит от существования других пакетов, то dpkg откажется завершать установку (выполняя конфигурацию) до установки необходимых пакетов.
Однако, для некоторых пакетов, dpkg откажется даже распаковывать файлы до разрешения зависимостей. Такие пакеты указывают, что они "Pre-depend" от наличия других пакетов. Проект Debian обеспечивает механизм для безопасного обновления системы с формата a.out на формат ELF, где критичен порядок, в котором пакеты будут распакованы. Существуют и другие ситуации, когда может применяться этот метод.
Более подробная информация может быть найдена в Руководстве по пакетам.
Эти флаги определяют, что пользователь хочет сделать с пакетом (что определяется либо действиями пользователя при работе в разделе "Выбор" ("Select") программы dselect, либо непосредственными обращениями пользователя к dpkg).
Их значения:
неизвестно (unknown) - пользователь никогда не проявлял интереса к пакету.
установить (install) - пользователь хочет, чтобы пакет был установлен или обновлен.
удалить (remove) - пользователь хочет, чтобы пакет был удален, но не хочет удалять какие-либо из его файлов конфигурации.
очистить (purge) - пользователь хочет, чтобы пакет был удален полностью, включая его файлы конфигурации.
захватить (hold) - пользователь хочет, чтобы над пакетом не совершалось никаких действий, т.е., он хочет сохранить текущую версию пакета в том состоянии в котором она находится, какими бы они ни были.
Есть два пути, которыми можно перевести пакет в удерживаемое состояние -- при помощи dpkg или dselect.
С dpkg, вы просто экспортируете список выбранных пакетов:
dpkg --get-selections > selections.txt
Затем редактируете полученный файл selections.txt
, заменяете
строку, содержащую выбранный вами для удерживания пакет, напр.
libc6
, с:
libc6 install
на:
libc6 hold
Сохраняете файл и загружаете его в базу данных dpkg:
dpkg --set-selections < selections.txt
C dselect, вы просто переходите в меню Выбор (Select), находите нужный пакет и нажимаете клавишу '=' (или 'H'). Изменения вступят в силу сразу же после вашего выхода из режима Выбор.
Пакеты исходных текстов Debian не могут быть "установлены", они просто распаковываются в том каталоге, в котором вы хотите собрать двоичный пакет. Исходные пакеты располагаются в каталоге source, и вы можете либо загрузить их вручную, либо воспользовавться командой:
apt-get source foo
(см. страницу руководства apt-get(8)
).
Вам необходимы foo_*.dsc, foo_*.tar.gz и foo_*.diff.gz файлы для компиляции исходного текста (для родных пакетов Debian файла .diff.gz может не быть).
Если у вас есть эти файлы и установлен пакет dpkg-dev
, то
следующая команда:
dpkg-source -x foo_version-revision.dsc
извлечет пакет в каталог foo-version.
Если вы хотите скомпилировать пакет, то перейдите в каталог foo-version и выполните команду
debian/rules build
для компиляции программы, затем
debian/rules binary
как пользователь root, для сборки пакета, и затем
dpkg -i ../foo_version-revision_arch.deb
для установки пакета.
Детальное описание этого процесса содержится в "Руководстве начинающего
разработчика Debian", доступном в пакете maint-guide-ru
, или
ftp://ftp.debian.org/debian/doc/package-developer/maint-guide.html.tar.gz
.
[ назад ] [ Содержание ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ вперед ]
The Debian GNU/Linux FAQ
версия CVS, 17 June 2006