Product SiteDocumentation Site

5.3. Система управления пакетами APT

Утилита RPM делает операции с отдельными пакетами атомарными (одношаговыми): вместо копирования множества файлов и запуска нескольких сценариев пользователь выполняет одну команду — «установить» или «удалить» пакет. Однако такая атомарная с точки зрения пользователя операция (например, добавление в систему одного нового компонента) может включать несколько, а иногда множество операций над пакетами. Чтобы сделать процедуры установки, удаления и обновления компонентов системы атомарными, были разработаны системы управления пакетами.
Используемая в «Альт» усовершенствованная система управления программными пакетами APT представляет собой удобный инструмент с простым пользовательским интерфейсом. Она позволяет выполнять установку, обновление и повседневные операции с программами без необходимости изучения тонкостей низкоуровневого менеджера пакетов.
APT использует две базы данных: одна содержит информацию об установленных в системе пакетах, вторая — о пакетах во внешних репозиториях. APT отслеживает целостность системы и при обнаружении конфликтов зависимостей использует данные из внешних репозиториев для их разрешения.
Система APT состоит из нескольких утилит. Чаще всего используется утилита управления пакетами apt-get, которая автоматически определяет зависимости между пакетами и строго контролирует их соблюдение при выполнении операций установки, удаления или обновления пакетов.
APT хранит кеш загруженных пакетов в каталоге /var/cache/apt/archives, а кеш индексов в — /var/lib/apt/lists. Конфигурация APT расположена в каталоге /etc/apt: основной конфигурационный файл — /etc/apt/apt.conf, а списки подключенных репозиториев — в /etc/apt/sources.list и /etc/apt/sources.list.d/*.
Посмотреть текущую конфигурацию APT можно командой:
$ apt-config dump

5.3.1. Репозитории

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

Примечание

При использовании нескольких репозиториев необходимо следить за их совместимостью (они должны относиться к одной ветке или этапу разработки). Например, совместимы основной репозиторий дистрибутива и репозиторий обновлений безопасности. В то же время смешение стабильного репозитория и нестабильной ветки разработки (Sisyphus), либо репозиториев разных дистрибутивов, может привести к проблемам при обновлении системы.
APT поддерживает работу с репозиториями по различным протоколам. Наиболее распространённые — HTTP и FTP, но доступны и другие методы.
Для того чтобы APT мог использовать тот или иной репозиторий, информацию о нём необходимо поместить в файл /etc/apt/sources.list, либо в любой файл с расширением *.list (например, mysources.list) в каталоге /etc/apt/sources.list.d. Формат записи:
rpm [подпись] метод: путь база название
rpm-src [подпись] метод: путь база название
где:
  • rpm или rpm-src — тип репозитория (скомпилированные программы или исходные тексты);
  • [подпись] — необязательная строка-указатель на электронную подпись разработчиков. Наличие этого поля подразумевает, что каждый пакет из данного репозитория должен быть подписан соответствующей электронной подписью. Подписи описываются в файле /etc/apt/vendor.list;
  • метод — способ доступа к репозиторию (ftp, http, file, cdrom, copy);
  • путь — путь к репозиторию в терминах выбранного метода;
  • база — относительный путь к базе данных репозитория;
  • название — название репозитория.
Непосредственно после установки ОС «Альт» в файлах /etc/apt/sources.list.d/*.list обычно указывается интернет-репозиторий, соответствующий установленному дистрибутиву.
После изменения списка репозиториев необходимо обновить локальную базу данных пакетов APT. Это делается командой apt-get update.
Если в sources.list присутствует репозиторий, содержимое которого может изменяться (как происходит с любым постоянно разрабатываемым репозиторием, в частности, обновлений по безопасности), то прежде чем работать с APT, необходимо синхронизировать локальную базу данных с удаленным сервером командой apt-get update. Локальная база данных создается заново каждый раз, когда в репозитории происходит изменение: добавление, удаление или переименование пакета.
Для репозиториев на съёмных носителях (например, CD/DVD), добавленных с помощью apt-cdrom add, синхронизация выполняется однократно — в момент подключения.
При выборе пакетов APT учитывает все подключённые источники. Если в одном из них доступна более новая версия пакета (например, в интернет-репозитории по сравнению с локальным носителем), будет использована именно она.
Поэтому при отсутствии или ограничении доступа в Интернет (низкая скорость или высокая стоимость трафика) рекомендуется закомментировать строки в /etc/apt/sources.list, указывающие на удалённые репозитории.

5.3.1.1. Утилита apt-repo для работы с репозиториями

Для редактирования репозиториев можно воспользоваться утилитой apt-repo:
Основные команды:
  • просмотреть список активных репозиториев:
    $ apt-repo
  • показать все доступные репозитории (неактивные будут закомментированы символом «#»):
    $ apt-repo -a
  • добавить репозиторий в список активных:
    # apt-repo add репозиторий
  • удалить или отключить репозиторий:
    # apt-repo rm репозиторий
  • удалить все источники и добавить новый репозиторий:
    # apt-repo set репозиторий
  • удалить все источники типа cdrom и все хранилища задач (task):
    # apt-repo clean
  • обновить информацию о репозиториях (выполнить apt-get update):
    # apt-repo update
  • вывести справку:
    $ man apt-repo
    или
    $ apt-repo --help

Примечание

Для выполнения большинства команд требуются права администратора.
Типичный пример использования команды apt-repo: удалить все источники и добавить стандартный репозиторий P11 (архитектура выбирается автоматически):
# apt-repo rm all
# apt-repo add p11
Или то же самое одной командой:
# apt-repo set p11
Источник может быть указан в формате sources.list(5):
# apt-repo add "rpm http://git.altlinux.org/repo/414014/ x86_64 task"
Поддерживаются следующие типы репозиториев: rpm, rpm-dir и rpm-src. APT работает с протоколами: file://, copy://, http://, ftp://, rsync:// и cdrom://.
URL с обязательным указанием протокола может содержать также архитектуру и один или несколько компонентов. Если архитектура и компонент не указаны, автоматически добавляются записи для текущей архитектуры системы и noarch с компонентом classic.
Пример добавления локального репозитория:
# apt-repo add file:/srv/public/mirror/p11/branch

5.3.1.2. Добавление репозитория на CD/DVD-носителе

Для добавления в репозитория с компакт-диска в APT используется утилита apt-cdrom.
Чтобы добавить запись о репозитории на сменном диске необходимо:
  1. Создать каталог для монтирования. Точка монтирования указывается в параметре Acquire::CDROM::mount в файле конфигурации APT (/etc/apt/apt.conf), по умолчанию это /media/ALTLinux:
    # mkdir /media/ALTLinux
    
  2. Примонтировать носитель в указанную точку:
    # mount /dev/sdXN /media/ALTLinux
    
    где /dev/sdXN — соответствующее блочное устройство (например, /dev/dvd — для CD/DVD-диска).
  3. Добавить носитель, выполнив команду:
    # apt-cdrom -m add
    
После этого в sources.list появится запись о подключённом диске.

Примечание

Команду mount /dev/носитель /media/ALTLinux необходимо выполнять перед каждой командой apt-get install имя_пакета.

5.3.1.3. Добавление репозиториев вручную

Для изменения списка репозиториев можно отредактировать в любом текстовом редакторе файлы из каталога /etc/apt/sources.list.d/.

Примечание

Для изменения этих файлов необходимы права администратора.
В файле alt.list может содержаться такая информация:
# ftp.altlinux.org (ALT Linux, Moscow)

# ALT Platform 11
#rpm [p11] ftp://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/x86_64 classic
#rpm [p11] ftp://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/x86_64-i586 classic
#rpm [p11] ftp://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/noarch classic

rpm [p11] http://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/x86_64 classic
rpm [p11] http://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/x86_64-i586 classic
rpm [p11] http://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/noarch classic

#rpm [p11] rsync://ftp.altlinux.org/ALTLinux p11/branch/x86_64 classic
#rpm [p11] rsync://ftp.altlinux.org/ALTLinux p11/branch/x86_64-i586 classic
#rpm [p11] rsync://ftp.altlinux.org/ALTLinux p11/branch/noarch classic
По сути, каждая строчка соответствует некому репозиторию. Неактивные репозитории — строки, начинающиеся с символа «#».
Для отключения репозитория достаточно закомментировать соответствующую строку. Для добавления нового репозитория необходимо дописать его в этот или другой файл.
После изменения списка репозиториев необходимо обновить информацию о пакетах:
# apt-get update
или:
apt-repo update