Данный сайт использует файлы cookie
Ok
Close
Система управления пакетами APT
Введение: пакеты, зависимости и репозитории
В современных системах на базе Linux огромное число общих ресурсов, которыми пользуются сразу несколько программ: разделяемых библиотек, содержащих стандартные функции, исполняемых файлов, сценариев и стандартных утилит и т.д. Удаление или изменение версии одного из составляющих систему компонентов может повлечь неработоспособность других, связанных с ним компонентов, или даже вывести из строя всю систему. В контексте системного администрирования проблемы такого рода называют нарушением целостности системы. Задача администратора – обеспечить наличие в системе согласованных версий всех необходимых программных компонентов (обеспечение целостности системы).

Для установки, удаления и обновления программ и поддержания целостности системы в Linux в первую очередь стали использоваться менеджеры пакетов (такие, как rpm в дистрибутивах RedHat или dpkg в Debian GNU/Linux). С точки зрения менеджера пакетов программное обеспечение представляет собой набор компонентов – программных пакетов. Такие компоненты содержат в себе набор исполняемых программ и вспомогательных файлов, необходимых для корректной работы программного обеспечения. Менеджеры пакетов облегчают установку программ: они позволяют проверить наличие необходимых для работы устанавливаемой программы компонент подходящей версии непосредственно в момент установки, а также производят необходимые процедуры для регистрации программы во всех операционных средах пользователя: сразу после установки программа может быть доступна пользователю из командной строки и – если это предусмотрено – появляется в меню всех графических оболочек.

Важно: благодаря менеджерам пакетов, пользователю Linux обычно не требуется непосредственно обращаться к установочным процедурам отдельных программ или непосредственно работать с каталогами, в которых установлены исполняемые файлы и компоненты программ (обычно это /Applications, /usr/share/имя_пакета) – всю работу делает менеджер пакетов. Поэтому установку, обновление и удаление программ в Linux обычно называют управлением пакетами.

Часто компоненты, используемые различными программами, выделяют в отдельные пакеты и помечают, что для работы ПО, предоставляемого пакетом A, необходимо установить пакет B. В таком случае говорят, что пакет A зависит от пакета B или что между пакетами A и B существует зависимость.

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

Задача контроля целостности и непротиворечивости установленного в системе ПО ещё сложнее. Представим, что некие программы A и B требуют наличия в системе компоненты C версии 1.0. Обновление версии пакета A, требующее обновления компоненты C до новой, использующей новый интерфейс доступа, версии (скажем, до версии 2.0), влечёт за собой обязательное обновление и программы B.

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

Для автоматизации этого процесса в ОС ЛОТОС применяется система управления программными пакетами APT.

Назначение APT
Фактически, APT представляет собой оболочку для dpkg обеспечивающую работу с репозиториями. Утилита APT – это менеджер пакетов Debian, который умеет запрашивать информацию о пакетах, получать пакеты из репозиториев, устанавливать и удалять их, используя систему автоматического разрешения зависимостей, а так же позволяет обновлять систему целиком до последних версий пакетов. APT выполняет автоматическое разрешение зависимостей для пакетов, которые обновляются, устанавливаются или удаляются, и, таким образом, позволяет автоматически определять, получать и устанавливать все доступные по зависимостям пакеты. Для APT можно настроить новые, дополнительные репозитории, или, по–другому, источники пакетов, кроме того, для него доступны многие дополнения, которые улучшают и расширяют его возможности. APT позволяет выполнять многие из задач, которые выполняет DPKG; кроме того, многие из опции командной строки у него также подобны опциям DPKG. Утилита apt обеспечивает простое и легкое управление пакетами на одной машине или же на группе машин.

APT обеспечивает безопасное управление пакетами путем включения проверки сигнатур GPG для пакетов, подписанных с помощью GPG, для всех репозиториев пакетов или для отдельных репозиториев. В случае включения проверки сигнатур, APT откажется устанавливать любые пакеты, не подписанные корректным ключом для данного репозитория. Это означает, что можно доверять пакетам DEB, которые скачиваются и устанавливаются на машине в том случае, если они получены из доверенных источников, например, Debian, и они не были изменены в процессе передачи.

APT также позволяет легко создавать собственные репозитории DEB– пакетов для скачивания и установки их на других машинах.

Источники программ (репозитории)
Репозитории, с которыми работает APT, отличаются от обычного набора пакетов наличием мета информации – индексов пакетов, содержащихся в репозитории, и сведений о них. Поэтому, чтобы получить всю информацию о репозитории, APT достаточно получить его индексы.

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

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

Важно: Подключая одновременно несколько репозиториев, нужно следить за тем, чтобы они были совместимы друг с другом по пакетной базе, т. е. отражали один определённый этап разработки. Например, совместимыми являются основной репозиторий дистрибутива и репозиторий обновлений по безопасности к данному дистрибутиву. В то же время, смешение среди источников APT репозиториев, относящихся к разным дистрибутивам, или смешение стабильного репозитория с нестабильной веткой разработки (sid) чревато различными неожиданными трудностями при обновлении пакетов.

APT позволяет взаимодействовать с репозиторием с помощью различных протоколов доступа. Наиболее популярные – HTTP и FTP, однако существуют и некоторые дополнительные методы.

Для того чтобы APT мог использовать тот или иной репозиторий, информацию о нем необходимо поместить в папку /Lotos/configuration/apt/

После того как отредактирован список репозиториев в sources.list, необходимо обновить локальную базу данных APT о доступных пакетах. Это делается командой apt–get update.

При выборе пакетов для установки, APT руководствуется всеми доступными репозиториями вне зависимости от способа доступа к ним. Так, если в репозитории, доступном по сети Интернет, обнаружена более новая версия программы, чем на компакт–диске, то APT начнёт загружать данный пакет из сети Интернет.

Поиск пакетов
Если вы не знаете точного названия пакета, для его поиска можно воспользоваться утилитой apt–cache search, которая позволяет искать не только по имени пакета, но и по его описанию.

Команда apt–cache search подстрока позволяет найти все пакеты, в именах или описании которых присутствует указанная подстрока. Например:

# apt–cache search lightdm

  • gir1.2–lightdm–1 – Typelib file for liblightdm–1
  • liblightdm–gobject–1–0 – simple display manager (gobject library)
  • liblightdm–gobject–dev – simple display manager (gobject development files)
  • liblightdm–qt–3–0 – simple display manager (Qt library)
  • liblightdm–qt–dev – simple display manager (Qt development files)
  • lightdm–vala – simple display manager (Vala files)
  • lightdm–gtk–greeter – simple display manager (GTK+ greeter)
  • lightdm–kde–greeter – LightDM KDE greeter
  • razorqt–lightdm–greeter – LightDM greeter for Razor–qt desktop environment
  • lightdm – простой дисплейный менеджер
  • light–locker – простой блокировщик экрана для экранного менеджера lightDM

Для того чтобы подробнее узнать о каждом из найденных пакетов и прочитать его описание, можно воспользоваться командой apt–cache show, которая покажет информацию о пакете из репозитория:

# apt–cache show lightdm
Package: lightdm
Priority: optional
Section: x11
Installed–Size: 1311
Maintainer: Debian Xfce Maintainers <pkg–xfce–devel@lists.alioth.debian.org>
Architecture: amd64
Version: 1.10.3–3
Provides: x–display–manager
Depends: libc6 (>= 2.14), libgcrypt20 (>= 1.6.0), libglib2.0–0 (>= 2.37.3), libpam0g (>= 0.99.7.1), libxcb1, libxdmcp6, debconf (>= 0.5) | debconf–2.0, lightdm–gtk–greeter | lightdm–greeter, dbus, libpam–systemd | consolekit, adduser
Recommends: xserver–xorg
Suggests: accountsservice, upower
Filename: pool/main/l/lightdm/lightdm_1.10.3–3_amd64.deb
Size: 155086
MD5sum: 5261ff1cb2523adae81926028af86440
SHA1: 4ce640bc42276c9405e973a999d1db979a424c3c
SHA256: f4c8f54fa40abe23a9b91be22ea0c9e9e2884df007f52fc4d55fe68236e30c2f
SHA512: b2fb29beaf098eeeab34a6b28b86c1bf2c25139fe402aa9aea0f480af5e901a07f3e750b37425e6a4003582cf6195cfa44509f6dcbbf220bde3e2f1265fcbfc4
Description–ru: простой дисплейный менеджер
Дисплейный менеджер для X, который
Обладает легковесным кодом,
Соответствует стандартам (PAM, ConsoleKit и т.д.),
Имеет хорошо определённый интерфейс взаимодействия сервера и пользовательского интерфейса,
Поддерживает темы оформления,
Поддерживает разные окружения рабочего стола (приветствия можно создать при помощи любого набора инструментов).
Description–md5: 1fd757fd0b15d99e160ffa78f0717022
Homepage: https://launchpad.net/lightdm


Установка пакета
Установка пакета с помощью APT выполняется командой:
# apt–get install имя_пакета
APT позволяет устанавливать в систему пакеты, требующие для работы другие, пока ещё не установленные. В этом случае он определяет, какие пакеты необходимо установить, и устанавливает их, пользуясь всеми доступными репозиториями.
Установка пакета vsftpd командой apt–get install vsftpd приведёт к следующему диалогу с APT:
# apt–get install vsftpd
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
dialog
НОВЫЕ пакеты, которые будут установлены:
dialog vsftpd
обновлено 0, установлено 2 новых пакетов, для удаления отмечено 0 пакетов, и 35 пакетов не обновлено.
Необходимо скачать 406 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 1 824 kB.
Хотите продолжить? [Д/н] y
Получено:1 http://178.46.162.61:8080/lotos/ jessie/main dialog amd64 1.2–20140911–1 [255 kB]
Получено:2 http://178.46.162.61:8080/lotos/ jessie/main vsftpd amd64 3.0.2–17+deb8u1 [151 kB]
Получено 406 kБ за 0с (1 293 kБ/c)
Предварительная настройка пакетов ...
Выбор ранее не выбранного пакета dialog.
(Чтение базы данных … на данный момент установлен 119631 файл и каталог.)
Подготовка к распаковке …/dialog_1.2–20140911–1_amd64.deb …
Распаковывается dialog (1.2–20140911–1) …
Выбор ранее не выбранного пакета vsftpd.
Подготовка к распаковке …/vsftpd_3.0.2–17+deb8u1_amd64.deb …
Распаковывается vsftpd (3.0.2–17+deb8u1) …
Обрабатываются триггеры для man–db (2.7.0.2–5) …
Обрабатываются триггеры для systemd (215–17+deb8u7) …
Настраивается пакет dialog (1.2–20140911–1) …
Настраивается пакет vsftpd (3.0.2–17+deb8u1) …
Обрабатываются триггеры для systemd (215–17+deb8u7) …

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

Удаление установленного пакета
Для удаления пакета используется команда apt–get remove <имя_пакета>. Для того, чтобы не нарушать целостность системы, будут удалены и все пакеты, зависящие от удаляемого: если отсутствует необходимый для работы приложения компонент (например, библиотека), то само приложение становится бесполезным.

Обновление всех установленных пакетов
Для обновления всех установленных пакетов используется команда aptget dist–upgrade. Она позволяет обновить те и только те установленные пакеты, для которых в репозиториях, перечисленных в /Lotos/configuration/apt, имеются новые версии; при этом из системы не будут удалены никакие другие пакеты. Этот способ полезен при работе со стабильными пакетами приложений, относительно которых известно, что они при смене версии изменяются несущественно.

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

Для обновления всей системы рекомендуется использовать команду apt–get dist–upgrade.