Инструменты пользователя

Инструменты сайта


linux:apt

Это старая версия документа!


# 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 есть как в имени пакета, так и в описании пакета, то есть - _вообще всех редакторов_, доступных для установки.

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

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

  • --installed - показать только установленные пакеты.
  • --upgradable - показать пакеты, для которых есть обновления.
  • --names-only - искать только по именам пакетов (без выдачи пакетов у которых упоминание о vim есть в описаниях).
  • --show-types - добавляет к выводу информацию о типе каждого пакета (например, «библиотека», приложение», «зависимость»). Это полезно, чтобы сразу понять, с чем имеем дело.

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

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

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

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

Пример: ```bash apt search --names-only . | grep -E '^lib.*dev$' ``` здесь

  • -\-names-only заставляет apt search просматривать только имена пакетов, а не в описания.
  • grep -E включает расширенные регулярные выражения (Extended Regular Expressions). Без -E многие спецсимволы (вроде +, ?, ()) работали бы буквально, а не как операторы..

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

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

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

Применение: ```bash apt-cache search '^lib' | grep -E '^lib[a-z]+(-[a-z]+)?-dev' ``` здесь

  • ^lib указанный аргументом в `apt-cache search` — это подстрока (не регулярное выражение), которая уменьшает объём данных.
  • grep -E производит фильтрацию по _регулярному выражению_

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

  • ^ — якорь «начало строки». Гарантирует, что совпадение начинается с самого начала имени пакета, а не где‑то в середине.
  • lib — буквально текст «lib».
  • [a-z]+ — одна или более строчных латинских букв. То есть после lib должно идти хотя бы одно слово из букв (например, png, xml, jpeg).
  • (-[a-z]+)? — необязательная группа:
    • ( и ) — группируют часть выражения.
    • -[a-z]+ — дефис и затем одна или более строчных букв (например, -dev, -tools, но тут это часть промежуточной части имени).
    • ? — означает «0 или 1 раз»: эта часть может быть, а может и не быть.
  • -dev — буквально «-dev» в конце имени пакета.

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

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

  • libpng-dev → lib + png + (нет промежуточной части) + -dev
  • libjpeg-turbo-dev → lib + jpeg + -turbo (это как раз необязательная часть определяемая в (-[a-z]+)?) + -dev

Пример неподходящего имени:

  • libxml2-dev не подойдёт, потому что в [a-z]+ нет цифр, а тут есть 2. Если нужно чтоб шаблон искал имена с цифрами, используют [a-z0-9]+.

Важно! Всегда используйте кавычки вокруг выражения для grep, чтобы оболочка не раскрывала спецсимволы: ```bash # Правильно grep -E '^foo.*bar'

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

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

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

.

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

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

  • Aptitude (aptitude так же имеет псевдографический интерфейс использующий ncurses)
/var/www/html/dokuwiki/data/attic/linux/apt.1782939513.txt.gz · Последнее изменение: — so_v_a