Найти в Дзене
Записки сисадмина

Linux. Apt. Ищем пакеты в репозиториях.

Иногда возникает внутреннее желание называть джунов котятами. Ведь они такие же маленькие, слепые и беспомощные. Но каждый котенок рано или поздно станет красивым, грациозным котом, которому нет дела до мелких проблем, а вся эта суета уже стала чужда.

Пока я погружаюсь в увлекательный мир отечественных ОС (привет, Астра linux), хочу немного поговорить о пакетном менеджере apt.

Как обычно, за шаблон возьмем мой любимый Debian, но все, что я буду здесь показывать, актуально абсолютно для всех deb дистрибутивов.

В этот раз начнем с самого простого: list и search.

Задам простой вопрос: помните ли вы наизусть, как называются пакеты? Если да, то зачем?

Предположим, мы хотим установить haproxy. Для начала посмотрим, есть ли он в наших библиотеках:

apt search haproxy

Вывод search дал нам вообще все пакеты, где хоть как-то упоминается haproxy. А что, если мы хотим сузить круг поиска?

apt list haproxy
-2

С ключом -a пакетный менеджер покажет нам абсолютно все версии данного пакета. При этом, apt list поддерживает фильтры.

Если мы захотим вывести все пакеты, которые начинаются со слова haproxy, вводим:

apt list haproxy*
-3

Если хотим все пакеты, в названии которых есть слово haproxy, вводим:

apt list *haproxy*
-4

Очень удобно, можно посмотреть, какие пакеты (и самое главное - какой версии) нам доступны.

Вы мне можете сказать, что такие пакеты обычно устанавливаются по инструкциям. И искать их таким методом не придется. Они всегда называются одинаково. И вы будете правы.

Самая очевидная польза от apt list проявляется в тех случаях, когда вам необходимо установить какой-нибудь модуль родительской программы. А также, иногда полезно будет узнать, что именно у вас в системе уже установлено.

В этом случае нам приходит на помощь ключ --installed.

Как это работает:

Мы хотим узнать, какие пакеты python3 у нас установлены. Если мы поищем по вхождению apt list python3, пакетный менеджер покажет только основной пакет python3:

-5

Мы видим, что python3 у нас установлен, а какие конкретно его модули у нас подгружены - нет.

Пробуем тогда вывести apt list python3*:

-6

Вывод команды не попадет даже в 10 скриншотов. По запросу python3* доступно 4261 пакета (конкретно в моей виртуалке). Листать всю эту портянку и искать нужное - долго. Проще выполнить:

apt list python3* --installed
-7

В принципе, вывод apt можно грепать (grep). Но система сама даст вам предупреждение, что у apt нет клиентского интерфейса, и что так делать не стоит:

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
-8

Да и с отличии от ключа, grep все-таки будет зависим от языка на локали системы.