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'
здесь
apt-cache search — это подстрока (не регулярное выражение), которая уменьшает объём данных.Разбор регулярного выражения из примера выше:
То есть шаблон ищет пакеты вида lib<буквы>-dev или lib<буквы>-<буквы>-dev.
Примеры имен подходящих под шаблон:
Важно! Всегда используйте кавычки вокруг выражения для grep, чтобы оболочка не раскрывала спецсимволы:
# Правильно grep -E '^foo.*bar' # Может сломаться, если в текущей директории есть файлы foo* grep -E ^foo.*bar
Метасимволы используемые в регулярных выражениях применяемых при фильтрации через grep:
| Символ | Описание |
|---|---|
| ^ | начало строки (имени пакета) |
| $ | конец строки |
| . | любой символ |
| [abc], [^abc] | набор/исключения символов |
| ** * ** | 0 и более повторений |
| + | 1 и более повторений |
| ? | 0 или 1 вхождение |
| (…) | группировка |
| ** | ** |
| . |
Существуют программы предоставляющие пользователю графический интерфейс для работы с APT:
Можно посмотреть здесь