Debian где хранятся пакеты

Обновлено: 05.07.2024

Пакеты обычно содержат все файлы необходимые для реализации определенного набора функций. Есть два типа пакетов Debian:

Двоичные (Binary) пакеты, которые содержат выполняемые и конфигурационные файлы, страницы man/info, информацию об авторских правах и другую документацию. Эти пакеты распространяются в архивах специального формата Debian (см. Какой формат у двоичных пакетов Debian?, раздел 6.2); их обычно можно отличить по расширению '.deb'. Двоичные пакеты могут быть распакованы при помощи утилиты dpkg ; подробности даны в странице руководства.

Исходные (Source) пакеты, которые состоят из .dsc файла описывающего исходный пакет (включая имена файлов описанных ниже), .orig.tar.gz файла, содержащего оригинальный исходный текст программы в архивном формате tar.gz и, обычно, .diff.gz файл содержащий специфические для Debian изменения к оригинальным исходным текстам. Утилита dpkg-source запаковывает и распаковывает исходные архивы Debian; детали описаны на страницах руководства.

Инструменты управления пакетами Debian могут использоваться для:

манипуляций и управления пакетами и частями пакетов,

помощи пользователю в разбиении пакетов, которые должны быть перенесены на носителях ограниченной емкости, таких как дискеты,

помощи разработчику в сборке пакетов,

помощи пользователю в установке пакетов, размещенных на удаленном FTP сервере.

6.2 Какой формат у двоичных пакетов Debian?

"Пакет" Debian, или архив Debian, содержит выполнимые файлы, библиотеки и документацию связанные с определенным набором программ или с множеством взаимосвязанных программ. Как правило, файл архива Debian имеет расширение .deb .

Внутренний формат двоичных пакетов Debian описан в странице руководства deb(5) . Этот внутренний формат может быть изменен (в различных выпусках Debian GNU/Linux), поэтому всегда используйте dpkg-deb(1) для различных манипуляций с файлами .deb .

6.3 Почему у пакетов Debian такие длинные имена?

Имена двоичных пакетов 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* ), или в файлы конфигурации используемые с пакетом.

6.4 Что это за управляющий (control) файл Debian?

Спецификации содержимого управляющего файла Debian приводятся в "Руководстве по пакетам Debian" (Debian Packaging manual), глава 4, см. Какая ещё документация существует для системы Debian?, раздел 11.1.

Короткий пример файла control для пакета Debian hello приведен ниже:

Поле 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, "Управляющие файлы и их поля."

6.5 Что такое Debian conffile?

Conffile содержит список файлов конфигурации (обычно помещаемых в /etc ), которые система управления пакетами не будет перезаписывать при обновлении пакета. Это гарантирует, что содержимое файлов конфигурации будет сохранено и позволяет обновлять пакеты не прерывая работу системы.

Чтобы точно определить, какие файлы сохраняются при обновлении, запустите:

и смотрите в строке "Conffiles:".

6.6 Что это за сценарии preinst, postinst, prerm и postrm?

Это выполняемые сценарии, которые автоматически запускаются перед или после установки пакета. Вместе с файлом control , эти файлы являются частью "управляющего" раздела архивного файла Debian.

Данный сценарий выполняется перед тем, как пакет будет распакован из .deb файла. Многие сценарии 'preinst' останавливают сервисы, которые будут обновлены пакетом, до завершения установки или обновления.

Этот сценарий, обычно, завершает требуемую настройку пакета после того, как он был извлечен из .deb файла. Часто, сценарий 'postinst' запрашивает у пользователя различные параметры и/или предупреждает пользователя, что если он примет значения по-умолчанию, то позже прийдется переконфигурировать пакет. Многие сценарии также 'postinst' выполняют команды, необходимые для запуска или перезапуска сервиса после установки или обновления пакета.

Этот сценарий, обычно, останавливает выполнение всех демонов, связанных с пакетом. Он выполняется перед удалением файлов, связанных с пакетом.

Этот сценарий, обычно изменяет ссылки или другие файлы, связанные с пакетом, и/или удаляет файлы созданные пакетом. (См. также Что такое виртуальный пакет?, раздел 6.8).

В настоящее время все управляющие файлы можно найти в каталоге /var/lib/dpkg/info . Файлы, относящиеся к пакету foo имеют имя "foo" и расширения "preinst", "postinst" и т.д. Файл foo.list в этом каталоге содержит список всех файлов установленных пакетом foo . (Заметим, что местонахождение файлов определяется dpkg; вам не следует полагаться на указанный каталог).

6.7 Что такое Требуемый/Важный/Стандартный/Необязательный/Дополнительный (Required/Important/Standard/Optional/Extra) пакет?

Для каждого пакета Debian создателями дистрибутива определен приоритет (priority), в качестве помощи для управления пакетами. Приоритеты следующие:

Требуемый (Required): пакет, который необходим для правильного функционирования системы.

Сюда включены все инструменты, необходимые для устранения неполадок в системе. Вам не следует удалять эти пакеты, иначе ваша система может перестать работать, и вы, что не исключено, даже не сможете использовать dpkg для того, чтобы вернуть все на свои места. Функциональность системы, в которой установлены только Требуемые пакеты, не слишком высока, но достаточна для того, чтобы позволить системному администратору загрузить ее и установить больше програмного обеспечения.

Важные (Important) пакеты содержат программы, которые должны иметься в любой Unix-подобной системе.

Без этих программ не смогут работать или не будут обладать полной функциональностью другие пакеты. Сюда НЕ относятся Emacs, X11, Tex или любое другое большое приложение. Это пакеты образующие базовую структуру.

Стандартные (Standard) пакеты являются стандартными для любой Linux системы, включая сравнительно небольшие, но не слишком ограниченные, системы работающие только в текстовом режиме.

Это то, что будет установлено по умолчанию, если пользователь не выберет чего-либо еще. Сюда не относятся многие большие приложения, но входят такие, как Emacs и ограниченное подмножество TeX и LaTeX.

Необязательные (Optional) пакеты содержат все то, что вы, как правило, можете захотеть установить, если не вполне осознаете свои потребности.

Сюда входят X11, полный дистрибутив TeX, и множество других приложений.

Дополнительные (Extra): пакеты, которые либо конфликтуют с другими пакетами, имеющими более высокий приоритет, и применимые только тогда, когда вы знаете, что это такое, либо имеющие специализированные требования, которые делают их неподходящими для раздела "Optional".

6.8 Что такое виртуальный пакет?

Виртуальный пакет - это общее имя, применимое к любому из группы пакетов, все из которых обеспечивают выполнение какой либо функции. Например, программы tin и trn , обе являются программами для чтения новостей и должны удовлетворять зависимость программы, которая требует наличия в системе программы чтения новостей, для своей работы. Поэтому обе предоставляют "виртуальный пакет", называемый news-reader .

Аналогично, smail и sendmail обеспечивают функции почтового транспортного агента. Поэтому они предоставляют виртуальный пакет "mail transport agent". Если один из них установлен, то любая программа, зависящая от пакета mail-transport-agent , будет удовлетворена существованием данного виртуального пакета.

Кроме того, если в системе установлено более одного пакета, предоставляющего определенный виртуальный пакет, то Debian обеспечивает системного администратора механизмом, позволяющим определить один из этих пакетов предпочтительным. Для этого имеется команда update-alternatives , описанная далее в Некоторым пользователям нравится mawk, другим - gawk; некоторым - vim, другим - elvis; некоторым - trn, другим - tin; как осуществялется поддержка предпочтений в Debian?, раздел 10.10.

6.9 Что подразумевают говоря, что пакет Зависит/Рекомендует/Предполагает/Конфликтует/Заменяет/Предоставляет (Depends/Recommends/Suggests/Conflicts/Replaces/Provides) другой пакет?

В системе пакетов 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).

6.10 Что означает слово Pre-Depends (Пред-Зависимости)?

"Pre-Depends" это специальная форма зависимости. Большинство пакетов будут извлечены dpkg из архивных файлов независимо от того, существуют ли файлы от которых они зависят или нет. Проще говоря, dpkg извлекает файлы пакета из архива и помещает их на положенные места. Если пакет зависит от существования других пакетов, то dpkg откажется завершать установку (выполняя конфигурацию) до установки необходимых пакетов.

Однако, для некоторых пакетов, dpkg откажется даже распаковывать файлы до разрешения зависимостей. Такие пакеты указывают, что они "Pre-depend" от наличия других пакетов. Проект Debian обеспечивает механизм для безопасного обновления системы с формата a.out на формат ELF , где критичен порядок, в котором пакеты будут распакованы. Существуют и другие ситуации, когда может применяться этот метод.

Более подробная информация может быть найдена в Руководстве по пакетам.

6.11 Что означают слова неизвестно/установить/удалить/очистить/удерживать (unknown/install/remove/purge/hold) в статусе пакета?

Эти флаги определяют, что пользователь хочет сделать с пакетом (что определяется либо действиями пользователя при работе в разделе "Выбор" ("Select") программы dselect , либо непосредственными обращениями пользователя к dpkg ).

неизвестно (unknown) - пользователь никогда не проявлял интереса к пакету.

установить (install) - пользователь хочет, чтобы пакет был установлен или обновлен.

удалить (remove) - пользователь хочет, чтобы пакет был удален, но не хочет удалять какие-либо из его файлов конфигурации.

очистить (purge) - пользователь хочет, чтобы пакет был удален полностью, включая его файлы конфигурации.

захватить (hold) - пользователь хочет, чтобы над пакетом не совершалось никаких действий, т.е., он хочет сохранить текущую версию пакета в том состоянии в котором она находится, какими бы они ни были.

6.12 Как я могу перевести пакет в удерживаемое (hold) состояние?

Есть два пути, которыми можно перевести пакет в удерживаемое состояние -- при помощи dpkg или dselect.

С dpkg, вы просто экспортируете список выбранных пакетов:

Затем редактируете полученный файл selections.txt , заменяете строку, содержащую выбранный вами для удерживания пакет, напр. libc6 , с:

Сохраняете файл и загружаете его в базу данных dpkg:

C dselect, вы просто переходите в меню Выбор (Select), находите нужный пакет и нажимаете клавишу '=' (или 'H'). Изменения вступят в силу сразу же после вашего выхода из режима Выбор.

6.13 Как я могу установить пакет исходных текстов?

Пакеты исходных текстов Debian не могут быть "установлены", они просто распаковываются в том каталоге, в котором вы хотите собрать двоичный пакет. Исходные пакеты располагаются в каталоге source , и вы можете либо загрузить их вручную, либо воспользовавться командой:

(см. страницу руководства apt-get(8) ).

6.14 Как я могу построить двоичный пакет из исходного?

Вам необходимы foo_*.dsc, foo_*.tar.gz и foo_*.diff.gz файлы для компиляции исходного текста (для родных пакетов Debian файла .diff.gz может не быть).

Если у вас есть эти файлы и установлен пакет dpkg-dev , то следующая команда:

извлечет пакет в каталог foo-version .

Если вы хотите скомпилировать пакет, то перейдите в каталог foo-version и выполните команду

Как получить список установленных пакетов в Debian

В этом руководстве мы объясним, как составить список и отфильтровать установленные пакеты в Debian. Мы также покажем вам, как проверить, установлен ли конкретный пакет, подсчитать количество установленных пакетов и узнать версию установленного пакета.

Список установленных пакетов с помощью Apt

Apt представляет собой интерфейс командной строки для системы управления пакетами и сочетает в себе наиболее часто используемых функций от apt-get и apt-cache включая опцию список установленных пакетов.

Чтобы вывести список всех пакетов, установленных в вашей системе, выполните следующую команду:

Команда отобразит список всех установленных пакетов, включая информацию о версиях пакетов и архитектуре. В крайнем правом столбце выходных данных показано, был ли пакет автоматически установлен как зависимость другого пакета.

Поскольку список пакетов длинный, рекомендуется передать вывод по конвейеру less команде, чтобы облегчить чтение:


Чтобы узнать, установлен ли конкретный пакет, используйте команду grep для фильтрации вывода. Например, чтобы узнать, установлен ли в системе пакет tmux, введите:

Приведенный выше вывод показывает, что в вашей системе установлен tmux 2.3-4.


Список установленных пакетов с помощью dpkg-query

dpkg-query - это командная строка, которая может использоваться для отображения информации о пакетах, перечисленных в базе данных dpkg.

Чтобы получить список всех установленных пакетов, введите:




Команда отобразит список всех установленных пакетов, включая версии пакетов, архитектуру и краткое описание.

Вы можете отфильтровать dpkg-query -l вывод с помощью grep команды:


Получить список всех установленных пакетов

Следующая команда сохранит список всех установленных пакетов в вашей системе Debian в файл с именем packages_list.txt :


Теперь, когда у вас есть список, вы можете установить те же пакеты на свой новый сервер с помощью:


Подсчитать количество установленных пакетов

Чтобы узнать, сколько пакетов установлено в вашей системе, вы можете использовать ту же команду, что и при создании списка пакетов, но вместо перенаправления вывода в файл вы можете передать его wc команде для подсчета строк:


Вывод покажет количество установленных пакетов:

Заключение

В этом руководстве вы узнали, как составлять список и фильтровать установленные пакеты в вашей системе Debian.

Эта статья даёт краткие пояснения к различным файлам, важным для создания пакетов Ubuntu, которые содержатся в каталоге debian/ . Самыми важными из них являются changelog , control , copyright , and rules . Они требуются для всех пакетов. Многие дополнительные файлы в debian/ могут использоваться для настройки и изменения поведения пакета. Некоторые из этих файлов обсуждаются в этой статье, но это далеко не полный список.

2.1. Файл changelog¶

Этот файл, как следует из его названия — это список изменений, внесённых в каждую версию. Он имеет особый формат, который показывает имя пакета, версию, дистрибутив, изменения, и кто вносил изменения в данное время. Если у вас есть ключ GPG (смотрите: Подготовка), убедитесь, что вы используете в changelog те же имя и адрес электронной почты, что и в вашем ключе. Ниже приведен шаблон changelog :

Формат (особенно даты) важен. Дата должна быть в формате RFC 5322, который можно увидеть при выполнении команды date -R . Для удобства, можно использовать для редактирования changelog команду dch . Она обновит дату автоматически.

Пункты с незначительными изменениями отмечаются дефисом «-», в то время как в важных пунктах используется звездочка «*».

Если вы создаёте пакет «с нуля», dch --create ( dch находится в пакете devscripts ) создаст для вас стандартный файл debian/changelog .

Вот пример файла changelog для hello:

Ubuntu и Debian используют немного различающиеся схемы нумерации версий пакетов, чтобы избежать конфликта пакетов с одной и той же исходной версией. Если пакет Debian был изменён в Ubuntu, к концу Debian-версии добавляется ubuntuX (где X — номер редакции в Ubuntu). Таким образом, если пакет Debian hello 2.6-1 был изменён в Ubuntu, номер версии будет 2.6-1ubuntu1 . Если пакет приложения в Debian не существует, то редакция Debian равна 0 (например, 2.6-0ubuntu1 ).

Более подробную информацию можно найти на странице changelog (Глава 4.4) документа Debian Policy Manual.

2.2. Файл control¶

Файл control содержит информацию, которую использует менеджер пакетов (такой, как apt-get , synaptic или adept ), сборочные зависимости, информацию мэйнтейнера и многое другое.

Для пакета Ubuntu hello файл control выглядит следующим образом:

Первый абзац описывает исходный пакет, включая список пакетов, требуемых для сборки данного пакета из исходного кода, в поле Build-Depends . Он также содержит некоторую метаинформацию, такую как имя мэйнтейнера, версию Debian Policy, с которой компилируется пакет, местоположение репозитория управления версиями и домашнюю страницу апстрима.

Каждый дополнительный абзац описывает бинарный пакет, который будет создан.

Более подробную информацию можно найти на странице секции control-файла (Глава 5) документа Debian Policy Manual.

2.3. Файл copyright¶

Файл содержит информацию о копирайтах исходных кодов и самого пакета. Ubuntu и Debian Policy (Глава 12.5) требуют, чтобы каждый пакет устанавливал неизменную копию копирайта и информации по лицензированию в папку /usr/share/doc/$(имя_пакета)/copyright

Как правило, информацию об авторских правах можно найти в файле COPYING в каталоге с исходным кодом программы. Этот файл должен включать такую информацию, как имена автора и упаковщика, URL, из которого получен источник, строку со значком копирайта с указанием года и владельца авторских прав, а также сам текст авторского права. Шаблон для примера:

Пример испольует машино-понятный формат debian/copyright, и авторам пакетов также рекомендуется следовать этому формату.

2.4. Файл rules¶

Последний файл, который мы рассмотрим, это rules . Он выполняет всю работу по сборке нашего пакета. Это Makefile, в котором есть функции компиляции программы, её установки и создания .deb -пакета из установленных файлов. В нём есть также функция очистки файлов сборки, которая удаляет всё, кроме собственно пакета исходного кода.

Вот упрощённый пример файла rules, созданного dh_make (который можно найти в пакете dh-make ):

Давайте рассмотрим этот файл внимательнее. На каждом этапе сборки debian/rules вызывается с аргументом, который передаётся /usr/bin/dh , который, в свою очередь, вызывает необходимые команды dh_* .

dh запускает последовательность команд debhelper. Поддерживаемые последовательности соответствуют целям файла debian/rules : «build», «clean», «install», «binary-arch», «binary-indep» и «binary». Чтобы увидеть, какие команды выполняются в каждой цели, наберите:

Командам из последовательности binary-indep передаётся аргумент -i , чтобы они затрагивали только архитектурно-независимые пакеты, а командам из последовательности binary-arch — аргумент -a , чтобы онм затрагивали только архитектурно-зависимые пакеты.

Каждая команда debhelper при её успешном выполненении делает запись в журнале debian/package.debhelper.log (который затем удаляет dh_clean.) Таким образом dh может определить, какие команды уже были выполнены и для каких пакетов, что помогает избежать повторного выполнения этих команд.

При каждом запуске dh он изучает журнал, находит добавленные последними команды, которые относятся к указанной последовательности. Затем он продолжает выполнение со следующей команды в этой последовательности. Опции --until , --before , --after и --remaining могут изменить это поведение.

Если в debian/rules есть функция с именем, похожим на override_dh_команда , то вместо данной команды dh выполнит данную функцию. Эта функция может запустить ту же команду с другими аргументами, или же совершенно другую команду. (Замечание: для использования этой функциональности при сборке требуется пакет debhelper версии не менее 7.0.50).

За дополнительными примерами обратитесь к /usr/share/doc/debhelper/examples/ и man dh . Смотрите также раздел о файле rules (Раздел 4.9) в «Debian Policy Manual».

2.5. Дополнительные файлы¶

2.5.1. Файл install¶

Файл install используется dh_install для установки файлов в двоичный пакет. Он имеет два стандартных варианта использования:

Для установки в ваш пакет файлов, не установленных оригинальной системой сборки.

Разделение одного большого пакета источника на несколько бинарных пакетов.

В первом случае файл install должен содержать одну строку для каждого устанавливаемого файла, указывающую как файл, так и установочный каталог. Например, следующий файл install установит сценарий foo из корневого каталога пакета исходного кода в usr/bin и desktop-файл из каталога debian в usr/share/applications :

В то время как foo-common.install , содержащий только не зависящие от архитектуры файлы, может выглядеть так:

Будут созданы два двоичных пакета: foo и foo-common . Для обоих требуется их собственный абзац в debian/control .

2.5.2. Файл watch¶

Файл debian/watch позволяет автоматически проверять наличие новых версий в апстриме с помощью инструмента uscan из пакета devscripts . Первой строкой файла watch должна быть версия формата (3 на момент написания этого руководства), а следующий строки содержат любые URL для анализа. Например:

Запуск uscan в корневом каталоге исходников сравнит номер апстрим-версии в debian/changelog с последней доступной в апстриме версией. Если в апстриме найдена новая версия, она будет автоматически загружена. Например:

Если ваши tarball-файлы обитают на Launchpad, файл debian/watch имеет немного более сложный вид (о том, почему это так, смотрите Question 21146 и Bug 231797). В этому случае используйте нечто вроде:

Дополнительные сведения смотрите в man uscan и в разделе о файле watch (Раздел 4.11) «Debian Policy Manual».

Список пакетов, для которых файл watch сообщает о том, что они не синхронизированы с апстримом, смотрите Ubuntu External Health Status.

2.5.3. Файл source/format¶

Этот файл указывает формат пакета исходного кода. Он должен содержать одну строку, показывающую выбранный формат:

3.0 (native) для «родных» пакетов Debian (апстрим-версия отсутствует)

3.0 (quilt) для пакетов с отдельным тарболом из апстрима

1.0 для пакетов, желающих явно указать формат по умолчанию

В настоящее время по умолчанию выбирается формат пакета исходного кода 1.0, если этот файл отсутствует. В файле source/format можно указать его явно. Если вы не используете этот файл для указания формата исходного кода, Lintian выдаст предупреждение об отстутствии файла. Это чисто информационное предупреждение и его можно без опасений проигнорировать.

Рекомендуется использовать более новый формат 3.0. Он предоставляет некоторые новые возможности:

Поддержка дополнительных форматов сжатия: bzip2, lzma и xz

Поддержка нескольких архивов с оригинальным исходным кодом

Необязательно перепаковывать архив с оригинальным исходным кодом, чтобы удалить директорию debian .

Специфичные для Debian изменения теперь хранятся не в одном файле .diff.gz, а в виде нескольких патчей, совместимых с quilt, в каталоге debian/patches/

Дополнительную информацию можно найти в man dpkg-source и в Главе source/format (Глава 5.21) руководства Debian New Maintainers.

2.6. Дополнительные ресурсы¶

При установке программного обеспечения система управления пакетами проверяет и при необходимости устанавливает «зависимости» (dependencies), которые подобраны создателями пакета. Эти зависимости указаны в файле control, имеющемся в каждом пакете.

Программы для управления пакетами в Debian

В Debian для управления пакетами имеется множество средств, от программ с графическими или текстовыми интерфейсами, до низкоуровневых утилит установки пакетов. Корректная работа всех доступных инструментов зависит от низкоуровневых утилит, и все они представлены здесь в порядке уменьшения уровня сложности.

Важно понимать, что высокоуровневые инструменты управления пакетами, такие как aptitude или dselect , для управления пакетами используют apt , который, в свою очередь, использует dpkg .

Подробнее об инструментах управления пакетами Debian написано в Chapter 2. Debian package management справочнике Debian.

8.1.1 dpkg

Это основная программа управления пакетами. dpkg может вызываться с многими параметрами. Наиболее часто используемые из них:

8.1.2 APT

APT (Advanced Package Tool) — расшифровывается как усовершенствованный инструмент управления пакетами, в него входит программа apt-get . Эта программа позволяет легко получать и устанавливать из командной строки пакеты из разных источников. В отличие от dpkg , программа apt-get не понимает файлы .deb, она работает с именами пакетов, и может устанавливать архивы .deb только из источников, указанных в файле /etc/apt/sources.list . После скачивания архивов .deb команда apt-get запускает dpkg .[5].

Часто используемые команды apt-get :

    Обновить список пакетов, имеющихся в источниках:

  • Обновить все пакеты в системе (без установки дополнительных пакетов или удаления пакетов):
  • Установить пакет foo и все его зависимости:
  • Удалить пакет из системы:
  • Удалить из системы пакет и все его файлы настроек:

upgrade оставит старую установленную версию пакета, если для разрешения новых зависимостей при обновлении потребуется установка дополнительных пакетов. Команда

Учтите, что для выполнения каких бы то ни было команд для изменения пакетов в системе вам нужно иметь права суперпользователя.

Обратите внимание, что в настоящее время apt-get по умолчанию устанавливает рекомендуемые пакеты, и эта программа является предпочтительной для управления пакетами из консоли при выполнении установки или больших обновлений системы вследствие её ошибкоустойчивости.

В комплект инструментов apt входит также программа для обработки запросов по списку пакетов apt-cache . Её можно использовать для поиска пакетов, имеющих определённую функциональность, с помощью простых текстовых запросов или регулярных выражений, а также для получения списка зависимостей из системы управления пакетами. Часто используемые команды apt-cache :

  • Найти пакеты, содержащие в своём описании слово :
  • Показать подробную информацию о пакете:
  • Показать зависимости пакета:
  • Показать подробную информацию о доступных версиях пакета и о пакетах, от него зависящих (об обратных зависимостях пакета):

Дополнительную информацию можно найти в справочных страницах apt-get(8) , sources.list(5) из пакета apt и в файле /usr/share/doc/apt-doc/guide.html/index.html из пакета apt-doc .

8.1.3 aptitude

aptitude — это пакетный менеджер для систем Debian GNU/Linux, предоставляющий пользовательский интерфейс для инфраструктуры управления пакетами apt. aptitude имеет текстовый интерфейс, написанный с использованием библиотеки curses, позволяет удобно и быстро выполнять задачи управления пакетами.

Помимо функциональности dselect и apt-get , aptitude реализует много других дополнительных возможностей, которых нет ни в одной из этих программ:

  • обеспечивает лёгкий доступ ко всем версиям пакета;
  • позволяет легко отслеживать устаревшее ПО, занося его в «список устаревших пакетов и пакетов, созданных локально»;
  • включает достаточно мощную систему поиска и ограничения отображаемых пакетов. Пользователи, знакомые с mutt , освоятся быстро, так как синтаксис регулярных выражений был навеян этой программой;
  • можно использовать для установки заранее сформированных наборов для определённых задач. Подробности см. вtasksel, раздел 8.1.5;
  • в полноэкранном режиме имеет встроенную функциональность команды su и может запускаться от обычного пользователя. Когда действительно понадобятся права администратора, вызовет su (и, если нужно, запросит пароль суперпользователя).

С aptitude можно работать, используя визуальный интерфейс (просто запустить

aptitude ), или непосредственно из командной строки. Используемый синтаксис командной строки очень похож на синтаксис apt-get . Например, для установки пакета foo , можно выполнить

aptitude install foo .

Заметим, что aptitude является предпочтительной программой для ежедневного управления пакетами из консоли.

Более подробную информацию можно найти в справочной странице aptitude(8) и в пакете aptitude-doc .

8.1.4 synaptic

synaptic — это менеджер пакетов с графическим интерфейсом. Он позволяет устанавливать, обновлять и удалять пакеты ПО через дружественный интерфейс. Помимо обеспечения всех возможностей aptitude, он также позволяет редактировать список используемых репозиториев, и поддерживает обзор всей доступной документации по пакету. Подробности см. на веб-сайте Synaptic .

8.1.5 tasksel

Иногда бывает трудно найти подходящий комплект пакетов для выполнения определённой задачи. Разработчики Debian определили

задачи , представляющие собой наборы из нескольких пакетов Debian, предназначенных для определённой деятельности. Задачи можно устанавливать с помощью программы tasksel или aptitude .

Обычно программа установки Debian автоматически устанавливает задачу создания стандартной системы и окружения рабочего стола. Тип устанавливаемого окружения рабочего стола зависит от используемого носителя CD/DVD, как правило это рабочий стол GNOME (задача

8.1.6 Другие инструменты управления пакетами

8.1.6.1 dselect

Данная программа предоставляет меню-ориентированный интерфейс для системы управления пакетами Debian. Для woody и более ранних версий это был основной интерфейс управления пакетами для первоначальной установки системы, но сейчас пользователям вместо неё предлагается использовать aptitude . Некоторым пользователям может быть более удобно пользоваться aptitude , к тому же это рекомендуемая замена для dselect при масштабных обновлениях. Подробности об aptitude см. в aptitude, раздел 8.1.3.

Основные возможности dselect :

  • помогает пользователю выбрать пакеты для удаления или установки, обеспечивает, что устанавливаемые пакеты не будут конфликтовать с другими, и что для каждого пакета будут установлены все пакеты, необходимые для его правильной работы;
  • предупреждает пользователя о несогласованности или несовместимости их выбора;
  • определяет правильную последовательность установки пакетов;
  • автоматически выполняет установку или удаление;
  • помогает пользователю пройти процесс настройки каждого из пакетов.

После запуска dselect показывает пользователю меню из 7 пунктов, каждый из которых выполняет определённое действие. Пользователь может выбрать одно из действий, перемещая с помощью клавиш со стрелками полосу подсветки, а затем нажав клавишу <enter> для выбора выделенного действия.

Что пользователь увидит далее, зависит от выбранного действия. Если он выбрал какое-то действие, но не

Метод (Access) или

Выбрать (Select) , то dselect просто продолжит выполнение указанного действия. Например, если пользователь выбрал действие

Удалить (Remove) , то dselect выполнит удаление всех файлов, помеченных для удаления пользователем, которые он выбрал в меню

Выбрать (Select) ранее.

Выбрать (Select) позволяют войти в дополнительные меню. В обоих случаях, меню представляют собой экран, разделённый надвое; в верхней части представлен список выбираемых пунктов, в нижней части выводится описание («справка») по каждому пункту.

Доступна подробная справка; к ней можно обратиться в любой момент, нажав клавишу «?».

Порядок представления действий в первом меню dselect соответствует тому порядку, в котором пользователь обычно выполняет действия для установки пакетов. Однако, любое действие из главного меню пользователь может выбирать как угодно часто (или совсем не выбирать — в зависимости от того, что он хочет сделать).

  • Начните с выбора метода доступа (Access Method). Здесь выбирается способ, с помощью которого пользователь получает доступ к пакетам Debian; например, у некоторых есть компакт-диски с пакетами Debian, другие же скачивают эти пакеты по FTP. Выбранный «метод доступа» сохраняется и после выхода из dselect , поэтому, если он не изменился, то нет необходимости вызывать этот пункт меню каждый раз.
  • Затем обновите (Update) список доступных пакетов. Для этого dselect читает файл «Packages.gz», который находится в верхнем уровне дерева каталогов, в котором хранятся пакеты Debian (если его там нет, dselect предложит его создать).

Для удаления: пакеты можно удалить двумя способами.

  • Удалить (removed): эта команда удаляет большинство файлов принадлежащих пакету, но оставляет файлы, помеченные как настроечные (см. Зачем нужен файл conffile?, раздел 7.5) и информацию о настройке пакета. Выполняется нажатием клавиши «-».
  • Вычистить (purged): команда удаляет все файлы пакета. Выполняется нажатием клавиши «_».

Заметим, что невозможно удалить «все пакеты». Если вы попытаетесь это сделать, то система будет сокращена до первоначально установленных базовых пакетов.

Для «фиксации» Фиксация выполняется нажатием «=», и указывает dselect не выполнять обновление пакета, даже если установленная версия устарела по сравнению с той, что имеется в используемом вами хранилище пакетов Debian (указанном через метод доступа (Access Method), и инициализируемом при выполненииобновления (Update)).

Если пакет зафиксирован, то вернуть его в нормальное состояние можно, нажав «:». Это указывает dselect , что пакет может быть обновлён, если доступна более новая версия. Такая настройка используется по умолчанию.

Вы можете выбирать различный порядок показа пакетов, используя клавишу «o» для переключения между режимами сортировки. Изначально пакеты отсортированы по приоритету; в пределах каждого приоритета пакеты представлены в порядке появления в каталоге (также называемого разделом), в котором они хранятся. При задании такого порядка сортировки, сначала могут отображаться пакеты из раздела A (как пример), потом какие-то из раздела B, а за ними ещё пакеты (с меньшим приоритетом) из раздела A.

Также можно получить описание значений меток в верхней части экрана, нажав клавишу «v». Данное действие увеличивает объём выводимого текста, и он выходит за правую границу экрана. Для прокрутки текста можно пользоваться клавишами со стрелками вправо и влево.

  • Возвратившись после выбора пакетов в главное меню, вы можете выбрать «Установить» (Install) для установки и настройки выбранных пакетов. Если вы отметили пакеты для удаления, то можете выбрать пункт «Удалить» (Remove). В любой момент времени можно выбрать пункт «Выход» (Quit) для выхода из dselect; при этом выбор пакетов, отмеченных для установки и удаления, dselect сохранит.

8.1.6.2 dpkg-deb

Данная программа позволяет манипулировать файлами-архивами Debian (

.deb файлами). Часто используемые команды:

foo_VVV-RRR.deb в каталог

Учтите, что любые пакеты, просто распакованные командой

Дополнительную информацию можно найти в справочной странице dpkg-deb(1) .

8.1.6.3 dpkg-split

Эта программа делит большие пакеты на файлы меньшего размера (например, для записи на дискеты), а также может использоваться для объединения набора разделённых файлов обратно в один файл. Она может использоваться только в системах Debian (т. е. в системах, содержащих пакет dpkg ), т. к. вызывает программу

dpkg-deb для разделения файла пакета на отдельные компоненты.

Например, для того чтобы разделить большой .deb файл на N частей, нужно:

8.2 Говорят, что Debian способен обновить работающую программу; как это делается?

Ядро (файловая система) в системах Debian GNU/Linux поддерживает замену файлов, даже когда они используются.

Мы также предоставляем программу start-stop-daemon , которая используется для запуска служб при загрузке компьютера или их останова при изменении уровня выполнения (например, при переключении из многопользовательского в однопользовательский или для выключения компьютера). Эта же программа используется сценариями установки при установке нового пакета со службой, для остановки работающей службы и её перезапуска при необходимости.

8.3 Как узнать, какие пакеты установлены в системе Debian?

Чтобы получить список всех установленных пакетов, выполните команду

Эта команда выведет для каждого пакета однострочную сводку, включающую два символа состояния (объясняемые в заголовке), имя пакета, установленную версию и краткое описание.

Чтобы узнать состояние пакетов, имена которых начинаются с «foo», выполните команду:

Чтобы получить более подробный отчёт о состоянии определённого пакета, выполните команду:

8.4 Как посмотреть список файлов установленного пакета?

Чтобы вывести список файлов установленного пакета

foo , выполните команду

Учтите, что файлы, созданные сценариями установки, не отображаются.

8.5 Как определить пакет, которому принадлежит определённый файл?

Чтобы определить, в каком пакете содержится файл с именем

foo , выполните одну из следующих команд:

имя_файла в установленных пакетах. (Это, в настоящий момент, эквивалентно поиску всех файлов с расширением

.list в каталоге

/var/lib/dpkg/info/ и выводу имён всех пакетов, которые содержат заданное имя файла и отклонения (diversions).)

Более быстрая альтернатива этому — программа dlocate .

Contents-ARCH.gz (где ARCH представляет нужную архитектуру) расположены в основных каталогах пакетов (main, non-free, contrib) на FTP-сайте Debian (то есть, в

Contents относится только к тем пакетам, что расположены в структуре подкаталогов того же каталога, где находится и он сам. Поэтому, чтобы найти пакет, содержащий файл

foo , пользователю нужно искать более чем в одном файле

Преимущество этого метода над

foo . Преимущество этой команды перед приведёнными ранее в том, что вам не нужно будет получать файлы

Contents-ARCH.gz , так как это будет сделано автоматически для всех источников, описанных в /etc/apt/sources.list , при запуске (с правами суперпользователя) команды

8.6 Почему при удалении «foo» не удаляется «foo-data»? Как вычистить старые неиспользуемые пакеты библиотек?

Некоторые пакеты разделены на программы («foo») и данные («foo-data») (или на «foo» и «foo-doc»). Так в Debian сделано для многих игр, мультимедийных приложений и словарей, и объясняется это тем, что некоторым пользователям может быть нужно получить только данные без установки программ, или эти программы могут работать без данных, что делает их установку необязательной.

Подобное относится и к библиотекам: обычно они устанавливаются, так как пакеты приложений зависят от них. Когда пакет приложения вычищается, пакет библиотеки может остаться в системе. Или когда пакет приложения больше не зависит, скажем, от libdb4.2, а зависит от libdb4.3, то пакет libdb4.2 может остаться в системе при обновлении пакета приложения.

В таких случаях «foo-data» не зависит от «foo», поэтому при удалении пакета «foo» большинство инструментов управления пакетами не станет удалять его автоматически. То же самое относится и к пакетам библиотек. Это необходимо для избежания циклических зависимостей. Тем не менее, если для управления пакетами вы используете программу aptitude (см. aptitude, раздел 8.1.3), то она отслеживает автоматически устанавливаемые пакеты и удаляет их, когда в системе не остаётся пакетов, от них зависящих.

Управление пакетами в Debian: 1 комментарий

Чистого эксперимента не проводил, смотрел на одном из доступных серваков — было похоже на правду, доверился хакерам из рассылки — убеждали меня что только под убунтой криво работает. Если есть сомнения, тогда проведу эксперимент Проверил на чистой установке Debian 6.0.5 — сразу после установки эта команда выдаёт кучу пакетов, так что вы правы — не то, поправил статью, благодарю за бдительность

Читайте также: