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 обращает внимание только на название пакета, его версию и зависимости, а расположение в том или ином репозитории не имеет значения. Если потребуется, 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 обычно указывается интернет-репозиторий, совместимый с установленным дистрибутивом.
После редактирования списка репозиториев в sources.list, необходимо обновлять локальную базу данных APT о доступных пакетах. Это делается командой apt-get update.
Если в sources.list присутствует репозиторий, содержимое которого может изменяться (как происходит с любым постоянно разрабатываемым репозиторием, в частности, обновлений по безопасности), то прежде чем работать с APT, необходимо синхронизировать локальную базу данных с удаленным сервером командой apt-get update. Локальная база данных создается заново каждый раз, когда в репозитории происходит изменение: добавление, удаление или переименование пакета. Для репозиториев, находящихся на компакт-дисках и подключенных командой apt-cdrom add, синхронизация производится единожды в момент подключения.
При выборе пакетов для установки, APT руководствуется всеми доступными репозиториями вне зависимости от способа доступа к ним. Так, если в репозитории, доступном по сети Интернет, обнаружена более новая версия программы, чем на компакт-диске, то 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
  • вывести справку о команде apt-repo:
    $ man apt-repo
    или
    $ apt-repo --help

Примечание

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

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

Для добавления в sources.list репозитория на компакт-диске в APT предусмотрена специальная утилита — apt-cdrom. Чтобы добавить запись о репозитории на компакт-диске, достаточно вставить диск в привод и выполнить команду apt-cdrom add. После этого в sources.list появится запись о подключенном диске.

Примечание

Если при выполнении команды apt-cdrom add, получена ошибка:
Не найдена точка монтирования /media/ALTLinux/ диска
Необходимо:
  • в файл /etc/fstab добавить строку:
    /dev/sr0 /media/ALTLinux udf,iso9660     ro,noauto,user,utf8,nofail,comment=x-gvfs-show  0 0
    
  • создать каталог для монтирования:
    # mkdir /media/ALTLinux
    затем использовать команду добавления носителя:
    # apt-cdrom add

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

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

Примечание

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

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

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

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