Управление пакетами в Debian

mrvtn

Постоянный участник
ДРУЗЬЯ ФОРУМА

mrvtn

Постоянный участник
ДРУЗЬЯ ФОРУМА
Регистрация
2 Июн 2018
Сообщения
116
Реакции
58
Репутация
0
Теоретическая часть

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

Общая информация

Все пакеты для Debian можно разделить на два типа

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

:


Двоичные пакеты (binary) — содержат исполняемые файлы, файлы настроек, справочные страницы, информацию об авторских правах. Пакеты поставляются в файлах с расширением .deb (специфичен именно для Debian-систем).


Пакеты исходного кода (source) — содержат описание пакета, файл с tar-архивом немодифицированного исходного кода (расширение .orig.tar.gz) и обычно файла, содержащего особые Debian-специфичные изменения к оригинальному исходному коду (расширение .diff.gz)


Имена файлов пакетов включают в себя последовательно общее имя пакета, номер ревизии, архитектуру.


Помимо обычных пакетов существуют также виртуальные

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

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

Файл control

Вся сопроводительная информация о пакете находится в файле control. Некоторые атрибуты

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

в этом файле рассмотрены ниже, назначение остальных легко можно понять исходя из их названия. Рассмотрим для примера вывод файла control для пакета mysql-server-5.5:



Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.




Приоритет (priority)

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

— может принимать значения требуемый (required), важный (important), стандартный (standard), дополнительный (optional) и экстра (extra). Все типы указаны в порядке уменьшения их важности для операционной системы. Если без требуемых пакетов операционная система не сможет функционировать нормально, то экстра и дополнительные пакеты в принципе не нужны для работы системы, они добавляют дополнительный функционал.


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

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

: зависит (depends), пред-зависит (pre-depends), рекомендует (reccomends), предлагает (suggests), ломает (breaks), конфликтует (conflict), предоставляет (provides), заменяет (replace), наращивает (enhances). Конечно же все эти поля содержат имена других пакетов, без которых работа основного невозможна (как в случае с пакетами в атрибуте depends), которые добавляют дополнительный функционал (reccomends, suggests), или которые могут даже заменять уже существующие в системе пакеты (replace) и так далее.


Почти в самом низу находятся данные файла conffile

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

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

Сценарии установки

Помимо данных самого приложения и информации о нем, в пакетах также поставляются сценарии, которые определяют необходимые действия до/после установки/удаления пакета. Все сценарии установленного пакета хранятся в каталоге низкоуровневой утилиты управления пакетами — dpkg — /var/lib/dpkg/info с соответствующим расширением (проверим это на примере все того же mysql-server-5.5):



Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.




Вот за что отвечает каждый сценарий

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

:


.preinst — выполняется перед распаковкой пакетов, обычно останавливает связанные с ними службы;


.postinst — выполняется соответственно после распаковки пакета и в большинстве случае служит для настройки только что распакованного пакета — либо самостоятельной, либо с помощью пользователя путем запроса каких-либо данных и/или вывода предупреждений. Конечно же остановленные на этапе выполнения сценария .preinst службы должны быть запущены;


.prerm — как можно догадаться из названия, этот сценарий запускается перед удалением пакета и обычно останавливает все зависящие от него службы;


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


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

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

.

Утилиты управления пакетами

Существует достаточно много утилит управления пакетами, например: apt, aptitude, dpkg, dselect, synaptic и другие. Все они обладают практически идентичным функционалом для «повседневного» использования, но различаются некоторыми другими функциями, интерфейсом и т.д.


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


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

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

.

Основные различия

Основные различия заключаются в следующем

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

:


dpkg:


  • является основным низкоуровневым инструментом для работы с пакетами, умеет работать с файлами .deb, в отличие от apt и aptitude, работает только с существующими пакетами, загружать ничего не умеет, пользуйтесь этим инструментом очень аккуратно;
  • не умеет работать с зависимостями и если устанавливаемому пакету нужны какие-либо другие, dpkg выкинет ошибку и вам придется подгружать зависимости вручную;
  • ведет очень подробные логи в файле /var/log/dpkg.log;

apt:


  • рекомендуют использовать для обновлении системы при переходе между версиями дистрибутивов, а также просто при установке или обновлении пакетов благодаря более надежному механизму разрешения зависимостей пакетов;
  • apt-get и apt-cache работают только в режиме командной строке;
  • apt-cache предоставляет возможность поиска с использованием регулярных выражений только в именах и описаниях пакетов;
  • умеет работать с предпочтениями

    Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

    только через файл /etc/apt/preferences, в отличие от aptitude;
  • менее требовательна к аппаратным ресурсам.

aptitude:


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




Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.





Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.





Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

(главы 6, 7)



Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

(глава 2)



Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.





Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.





Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.




Также могут быть полезны ресурсы смежных дистрибутивов:



Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.




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