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

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


linux:apt

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
linux:apt [2026/06/24 19:33] – [Расширенный поиск] so_v_alinux:apt [2026/10/08 17:53] (текущий) – so_v_a
Строка 1: Строка 1:
 +<!DOCTYPE markdown>
 +
 # Advanced Package Tool (APT) # Advanced Package Tool (APT)
  
-Advanced Package Tool (**APT**) — набор программ для установки, обновления и удаления программных пакетов применяемый в основном в дистрибутиве Debian и других дочерних по отношению к нему дистрибутивах (например: Ubuntu, Linux Mint). Так же APT используется в дистрибутивах основанных на Mandrake (Mandriva, ALT Linux и PCLinuxOS).+**Advanced Package Tool** (**APT**) — набор программ для установки, обновления и удаления программных пакетов применяемый в основном в дистрибутиве Debian и других дочерних по отношению к нему дистрибутивах (например: Ubuntu, Linux Mint). Так же APT используется в дистрибутивах основанных на Mandrake (Mandriva, ALT Linux и PCLinuxOS).
  
 APT может автоматически устанавливать и настраивать программы для UNIX-подобных операционных систем как из предварительно откомпилированных пакетов, так и из исходных кодов.   APT может автоматически устанавливать и настраивать программы для UNIX-подобных операционных систем как из предварительно откомпилированных пакетов, так и из исходных кодов.  
 Пакеты берутся из интернет-репозиториев, либо их можно установить с имеющихся носителей. Пакеты берутся из интернет-репозиториев, либо их можно установить с имеющихся носителей.
  
-Для своей работы **APT** в качестве бэкенда использует утилиту [[https://ru.wikipedia.org/wiki/Dpkg|dpkg]] которая сама не может самостоятельно работать с удаленными репозиториями или отслеживать взаимозависимости между пакетами.+Для своей работы **APT** в качестве бэкенда использует утилиту [dpkg](https://ru.wikipedia.org/wiki/Dpkg) которая сама не может самостоятельно работать с удаленными репозиториями или отслеживать взаимозависимости между пакетами.
  
 Таким образом, **APT** решает три ключевые задачи: Таким образом, **APT** решает три ключевые задачи:
   * Установка/удаление программ с автоматическим разрешением зависимостей   * Установка/удаление программ с автоматическим разрешением зависимостей
   * Обновление системы и отдельных пакетов   * Обновление системы и отдельных пакетов
-  * Поиск и анализ доступного ПО+  * Поиск и анализ доступного 
 + ПО
 . .
- 
 ## Команды для основных действий с программными пакетами ## Команды для основных действий с программными пакетами
  
Строка 23: Строка 25:
  
 |< 100% 20% 80% >| |< 100% 20% 80% >|
-^Команда ^Исполняемое действие ^+|Команда |Исполняемое действие | 
 +|:---:|:---|
 |apt update |Обновление баз данных пакетов (указанных в `/etc/apt/sources.list`)| |apt update |Обновление баз данных пакетов (указанных в `/etc/apt/sources.list`)|
 |apt upgrade |Обновление системы| |apt upgrade |Обновление системы|
 |apt search **пакет** |Поиск пакетов| |apt search **пакет** |Поиск пакетов|
 |apt search **^пакет**|Поиск пакетов по регулярному выражению| |apt search **^пакет**|Поиск пакетов по регулярному выражению|
-|apt show **пакет** |Поиск пакетов и вывод информации о пакете|+|apt show **пакет** |Поиск пакетов и вывод информации о пакете. Отображается версия, размер, описание, зависимости и др.|
 |apt install **пакет** |Установить пакет| |apt install **пакет** |Установить пакет|
 |apt purge **пакет** |Удалить пакет и его конфигурационные файлы. Возможно использовать для уже удаленного пакета.| |apt purge **пакет** |Удалить пакет и его конфигурационные файлы. Возможно использовать для уже удаленного пакета.|
Строка 38: Строка 41:
 |apt full-upgrade |Переход от одной основной версии дистрибутива к следующей| |apt full-upgrade |Переход от одной основной версии дистрибутива к следующей|
 . .
 +
 ### Вывод списка пакетов ### Вывод списка пакетов
  
Строка 46: Строка 50:
 используется для вывода списка пакетов соответствующих заданному критерию. используется для вывода списка пакетов соответствующих заданному критерию.
  
-^Команда ^Результат действия ^+|Команда |Результат действия | 
 +|:---:|:---|
 |apt list -\-installed |Вывести список установленных в системе пакетов | |apt list -\-installed |Вывести список установленных в системе пакетов |
 |apt list -\-upgradable |Вывести список пакетов, которые требуют обновления (у которых вышла новая версия) | |apt list -\-upgradable |Вывести список пакетов, которые требуют обновления (у которых вышла новая версия) |
Строка 60: Строка 65:
 ``` ```
 . .
 +
 ### Расширенный поиск ### Расширенный поиск
  
Строка 75: Строка 81:
  
 Для уточнения результатов поиска можно использовать командные опции, а так же регулярные выражения и подстановочные знаки. Для уточнения результатов поиска можно использовать командные опции, а так же регулярные выражения и подстановочные знаки.
- 
  
  
Строка 84: Строка 89:
   * **--show-types** - добавляет к выводу информацию о типе каждого пакета (например, «библиотека», приложение», «зависимость»). Это полезно, чтобы сразу понять, с чем имеем дело.   * **--show-types** - добавляет к выводу информацию о типе каждого пакета (например, «библиотека», приложение», «зависимость»). Это полезно, чтобы сразу понять, с чем имеем дело.
  
 +Регулярные выражения //напрямую// использовать в `apt search` //нельзя// т.к. эта команда ищет только по подстрокам (в имени и описании пакета).  
 +Например при выполнении команды `apt search libssl*` — shell сначала раскроет libssl* в список файлов/пакетов, которые есть в текущей директории, и только потом передаст результат в apt для поиска. Результат этого будет почти всегда не тот, что нужен.  
 +Команда `apt search` ожидает обычный текст или регулярное выражение (зависит от версии и реализации), а не shell-wildcards (специальные символы которые способна обрабатывать командная оболочка, например bash).
  
-Метасимволы для регулярных выражений: +#### Способы применяемые для поиска с использованием регулярных выражений 
-^Символ ^Описание ^ + 
-| **^** |Начало строки | +Так как `apt search` не поддерживает регулярные выражения и специальные метасимволы (вроде *, ?, +, [] и т. д.) в том смысле, в каком их используют в shell или в grep, то для поиска с использованием регулярных выражений применяют следующие способы: 
-| **$** |Конец строки | + 
-| **.** |Любой символ | +**Способ 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]+. 
 + 
 +<blockquote>**Важно!** Всегда используйте кавычки вокруг выражения для grep, чтобы оболочка не раскрывала спецсимволы: 
 +```bash 
 +# Правильно 
 +grep -E '^foo.*bar' 
 + 
 +# Может сломаться, если в текущей директории есть файлы foo* 
 +grep -E ^foo.*bar 
 +``` 
 +</blockquote> 
 + 
 +Метасимволы используемые в регулярных выражениях применяемых при фильтрации через grep: 
 + 
 +|Символ |Описание | 
 +|:---:|:---| 
 +| **^** |начало строки (имени пакета) | 
 +| **$** |конец строки | 
 +| **.** |любой символ | 
 +| **[abc]**, **[^abc]** |набор/исключения символов | 
 +| ** * ** |0 и более повторений | 
 +| **+** |1 и более повторений | 
 +| **?** |0 или 1 вхождение | 
 +| **(**...**)** |группировка | 
 +| **|** |логическое ИЛИ | 
 +.
  
  
Строка 99: Строка 170:
  
 Существуют программы предоставляющие  пользователю графический интерфейс для работы с APT: Существуют программы предоставляющие  пользователю графический интерфейс для работы с APT:
-  * [[https://ru.wikipedia.org/wiki/Synaptic|Synaptic]] +  * [Synaptic](https://ru.wikipedia.org/wiki/Synaptic) 
-  * [[https://ru.wikipedia.org/wiki/PackageKit|PackageKit]] +  * [PackageKit](https://ru.wikipedia.org/wiki/PackageKit) 
-  * [[https://ru.wikipedia.org/wiki/Aptitude|Aptitude]] (aptitude так же имеет псевдографический интерфейс использующий ncurses)+  * [Aptitude](https://ru.wikipedia.org/wiki/Aptitude) (aptitude так же имеет псевдографический интерфейс использующий ncurses) 
 + 
 + 
 +## Полное руководство по команде apt в Linux 
 + 
 +Можно посмотреть [здесь](https://blog.sedicomm.com/2018/04/06/ispolzovanie-komand-apt-v-linux-polnoe-rukovodstvo/) 
  
  
/var/www/html/dokuwiki/data/attic/linux/apt.1782329613.txt.gz · Последнее изменение: — so_v_a