Содержание

Advanced Package Tool (APT)

Advanced Package Tool (APT) — набор программ для установки, обновления и удаления программных пакетов применяемый в основном в дистрибутиве Debian и других дочерних по отношению к нему дистрибутивах (например: Ubuntu, Linux Mint). Так же APT используется в дистрибутивах основанных на Mandrake (Mandriva, ALT Linux и PCLinuxOS).

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

Для своей работы APT в качестве бэкенда использует утилиту dpkg которая сама не может самостоятельно работать с удаленными репозиториями или отслеживать взаимозависимости между пакетами.

Таким образом, APT решает три ключевые задачи:

Команды для основных действий с программными пакетами

Основной синтаксис команды apt следующий:

sudo apt <действие> <пакет(ы)> <доп. параметры>

для выполнения требуются права root.

Команда Исполняемое действие
apt update Обновление баз данных пакетов (указанных в /etc/apt/sources.list)
apt upgrade Обновление системы
apt search пакет Поиск пакетов
apt search ^пакет Поиск пакетов по регулярному выражению
apt show пакет Поиск пакетов и вывод информации о пакете. Отображается версия, размер, описание, зависимости и др.
apt install пакет Установить пакет
apt purge пакет Удалить пакет и его конфигурационные файлы. Возможно использовать для уже удаленного пакета.
apt remove пакет Удалить пакет
apt autoremove Удаление всех пакетов-сирот
apt autoclean Очистка кэша неустановленных пакетов
apt clean Очистка кэша пакетов
apt edit-sources Открывает файл /etc/apt/sources.list в текстовом редакторе для редактирования, после сохранения изменений и закрытия редактора, выполняет проверку файла на предмет ошибок. В случае наличия ошибок, выводит предложение на повторное редактирование файла, чтобы исправить ошибки.
apt full-upgrade Переход от одной основной версии дистрибутива к следующей
.

Вывод списка пакетов

Команда

apt list <параметр>

используется для вывода списка пакетов соответствующих заданному критерию.

Команда Результат действия
apt list --installed Вывести список установленных в системе пакетов
apt list --upgradable Вывести список пакетов, которые требуют обновления (у которых вышла новая версия)
apt list --all-versions Вывести список всех пакетов доступных для вашей системы

Для того, чтобы проверить данные по какому-то конкретному пакету используется команда

apt list <имя_пакета>

например

apt list nginx

.

Расширенный поиск

Общий синтаксис команды поиска следующий:

apt search <имя_или_описание>

Результат её выполнения позволит получить полное представление о всех доступных пакетах соответствующих указанному критерию.

Например

apt search editor

даст список пакетов у которых слово editor есть как в имени пакета, так и в описании пакета, то есть - вообще всех редакторов, доступных для установки.

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

Применяемые опции:

Регулярные выражения напрямую использовать в apt search нельзя т.к. эта команда ищет только по подстрокам (в имени и описании пакета).
Например при выполнении команды apt search libssl* — shell сначала раскроет libssl* в список файлов/пакетов, которые есть в текущей директории, и только потом передаст результат в apt для поиска. Результат этого будет почти всегда не тот, что нужен.
Команда apt search ожидает обычный текст или регулярное выражение (зависит от версии и реализации), а не shell-wildcards (специальные символы которые способна обрабатывать командная оболочка, например bash).

Способы применяемые для поиска с использованием регулярных выражений

Так как apt search не поддерживает регулярные выражения и специальные метасимволы (вроде *, ?, +, [] и т. д.) в том смысле, в каком их используют в shell или в grep, то для поиска с использованием регулярных выражений применяют следующие способы:

Способ 1: применение apt search --names-only и grep

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

Пример:

apt search --names-only . | grep -E '^lib.*dev$'

здесь

В результате код из примера найдёт пакеты, имя которых начинается с lib, а заканчивается на dev (например, libpng-dev).

Способ 2: применение apt-cache + grep

Применение apt-cache search даёт более простой формат вывода, удобный для дальнейшего парсинга.

Применение:

apt-cache search '^lib' | grep -E '^lib[a-z]+(-[a-z]+)?-dev'

здесь

Разбор регулярного выражения из примера выше:

То есть шаблон ищет пакеты вида lib<буквы>-dev или lib<буквы>-<буквы>-dev.

Примеры имен подходящих под шаблон:

Важно! Всегда используйте кавычки вокруг выражения для grep, чтобы оболочка не раскрывала спецсимволы:

# Правильно
grep -E '^foo.*bar'
 
# Может сломаться, если в текущей директории есть файлы foo*
grep -E ^foo.*bar

Метасимволы используемые в регулярных выражениях применяемых при фильтрации через grep:

Символ Описание
^ начало строки (имени пакета)
$ конец строки
. любой символ
[abc], [^abc] набор/исключения символов
** * ** 0 и более повторений
+ 1 и более повторений
? 0 или 1 вхождение
(…) группировка
** **
.

Графические фронтенды

Существуют программы предоставляющие пользователю графический интерфейс для работы с APT:

Полное руководство по команде apt в Linux

Можно посмотреть здесь