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

Опубликовано mensh - пт, 06/20/2008 - 15:29

Для автоматизации процесса установки, удаления и обновления пакетов программ в ряде дистрибутивов Linux применяется Усовершенствованная система управления программными пакетамиAPT (Advanced Packaging Tool). Автоматизация достигается созданием одного или нескольких внешних репозитариев, в которых хранятся пакеты программ и относительно которых производится сверка пакетов, установленных в системе. Репозитории могут содержать как официальную версию дистрибутива, обновляемую его разработчиками по мере выхода новых версий программ, так и локальные наработки.

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

APT изначально проектировался как не зависящий от конкретного метода работы с установленными в системе пакетами, что позволило разработчикам из бразильской компании Connectiva реализовать в нём поддержку менеджера пакетов RPM. Таким образом, пользователи основанных на RPM дистрибутивов (Ubuntu, Fedora, Mandriva, ALT Linux) получили возможность использовать этот мощный инструмент.

Графический интерфейс для APT

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

Графическая оболочка Synaptic системы управления программными пакетами APT

Использование APT

Система APT состоит из нескольких утилит. Главной и наиболее часто используемой является утилита управления пакетами apt-get, которая автоматически определяет зависимости между пакетами и строго следит за их соблюдением при выполнении любой из следующих операций: установка, удаление или обновление пакетов.

apt-get позволяет устанавливать в систему пакеты, требующие для своей работы другие, пока ещё не установленные. В этом случае он определяет, какие пакеты необходимо установить, и устанавливает их, пользуясь всеми доступными репозитариями. Для того, чтобы apt-get мог использовать тот или иной репозитарий, информацию о нем необходимо поместить в файл /etc/apt/sources.list и выполнить команду

~# apt-get update

Эту команду необходимо также выполнять каждый раз, когда вы собираетесь работать с репозитарием после длительного перерыва, так как при поиске пакетов APT должен руководствоваться базой данных, отражающей актуальное состояние репозитария. Такая база данных создаётся заново каждый раз, когда в репозитарии происходит изменение: добавление, удаление или переименование пакета. Для ускорения работы apt-get хранит локальную копию базы данных, которая через некоторое время может уже не соответствовать реальному состоянию репозитария.

В качестве источника пакетов можно использовать и компакт-диски дистрибутива, поскольку на каждом диске присутствует вся необходимая для APT информация о содержащихся на нём пакетах. Для этого необходимо использовать утилиту apt-cdrom с единственным параметром add. Операцию следует повторить для CD из набора. После этого в /etc/apt/sources.list появится запись о подключённом диске.

При отсутствии подключения к сети строки в /etc/apt/sources.list, где говорится о ресурсах, доступных по сети, следует закомментировать.

Поиск пакетов

При отсутствии точного названия пакета для его поиска можно воспользоваться утилитой apt-cache, позволяющей искать не только по имени пакета, но и по его описанию:

~$ apt-cache search wine
wine-utils - Эмулятор Wine (Дополнительные программы)
libwine-arts - arts support library for wine
libwine-twain - twain support library for wine
libwine-devel - Headers for libwine-devel
libwine - Main library for wine
wine - Среда для запуска программ Windows (сборка от Etersoft)

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

~$ apt-cache show wine-utils
Package: wine-utils
Section: Emulators
Installed Size: 8700
Maintainer: Vitaly Lipatov 
Version: 20040716-alt1
Pre-Depends: rpmlib(PayloadFilesHavePrefix) (<= 4.0-1), rpmlib(CompressedFileNames) (<= 3.0.4-1)
Depends: wine (= 20040716-alt1), libc.so.6, libc.so.6(GLIBC_2.0), libc.so.6(GLIBC_2.1), libc.so.6(GLIBC_2.1.3), libc.so.6(GLIBC_2.2), libc.so.6(GLIBC_2.3), libm.so.6, libm.so.6(GLIBC_2.0), libwine.so.1, libwine.so.1(WINE_1.0), perl-base, sh
Provides: wine-utils (= 20040716-alt1)
Architecture: i586
Size: 1575076
MD5Sum: aa244a1e32557722ae53a283181f617e
Filename: wine-utils-20040716-alt1.i586.rpm
Description: Эмулятор Wine (Дополнительные программы)
 This is an ALPHA release of Wine, the MS-Windows emulator. This is
 still a developers release and many applications may still not work.

 This package consists many of the utilities provided by wine, both
 for compiling source using winelib and for running wine. This
 package is not strictly necessary.

 Wine is often updated.

Получение зависимостей пакета:

~$ apt-cache depends wine-utils
wine-utils-20040716-alt1
 Требует: wine = 20040716-alt1
 Требует: 
 glibc-core-6:2.3.3.200406160000-alt1
 Требует: 
 glibc-core-6:2.3.3.200406160000-alt1
 Требует: 
 glibc-core-6:2.3.3.200406160000-alt1
 Требует: 
 glibc-core-6:2.3.3.200406160000-alt1
 Требует: 
 glibc-core-6:2.3.3.200406160000-alt1
 Требует: 
 glibc-core-6:2.3.3.200406160000-alt1
 Требует: 
 glibc-core-6:2.3.3.200406160000-alt1
 Требует: 
 glibc-core-6:2.3.3.200406160000-alt1
 Требует: 
 libwine-20060610-alt0.M24.1
 Требует: 
 libwine-20060610-alt0.M24.1
 Требует: perl-base
 Требует: sh

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

Установка или обновление пакета

Установка пакета с помощью APT выполняется командой:

~# apt-get install имя_пакета

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

Переустановка пакета:

~# apt-get install имя_пакета --reinstall

Полезный режим позволяюший исправить ошибки администратора и сборщика пакета.

Если вы не уверены в том, что в результате выполнения операции система останется работоспособной, запустите apt-get с опцией -s.

В этом случае будет показан отчёт о выполнении операции обновления, но само обновление произведено не будет:

~# apt-get install -s имя_пакета

Удаление установленного пакета

Для удаления пакета используется команда

~# apt-get remove имя_пакета

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

Обновление всех установленных пакетов

Для обновления всех установленных пакетов используется команда

~# apt-get upgrade

Она позволяет обновить только те пакеты, для которых в репозитариях, перечисленных в /etc/apt/sources.list, имеются новые версии; при этом из системы не будут удалены никакие другие пакеты.

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

Изменения в именовании пакетов или изменения их зависимостей командой apt-get upgrade не обрабатываются. Такие ситуации разрешаются в режиме обновления в масштабе дистрибутива:

~# apt-get dist-upgrade

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

Настройка APT

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

Работа с локальным репозитарием и удаленными подробно описана в разделе Обновление.

Поделиться с друзьями