Иногда возникает внутреннее желание называть джунов котятами. Ведь они такие же маленькие, слепые и беспомощные. Но каждый котенок рано или поздно станет красивым, грациозным котом, которому нет дела до мелких проблем, а вся эта суета уже стала чужда.
Пока я погружаюсь в увлекательный мир отечественных ОС (привет, Астра linux), хочу немного поговорить о пакетном менеджере apt.
Как обычно, за шаблон возьмем мой любимый Debian, но все, что я буду здесь показывать, актуально абсолютно для всех deb дистрибутивов.
В этот раз начнем с самого простого: list и search.
Задам простой вопрос: помните ли вы наизусть, как называются пакеты? Если да, то зачем?
Предположим, мы хотим установить haproxy. Для начала посмотрим, есть ли он в наших библиотеках:
apt search haproxy
Вывод search дал нам вообще все пакеты, где хоть как-то упоминается haproxy. А что, если мы хотим сузить круг поиска?
apt list haproxy
С ключом -a пакетный менеджер покажет нам абсолютно все версии данного пакета. При этом, apt list поддерживает фильтры.
Если мы захотим вывести все пакеты, которые начинаются со слова haproxy, вводим:
apt list haproxy*
Если хотим все пакеты, в названии которых есть слово haproxy, вводим:
apt list *haproxy*
Очень удобно, можно посмотреть, какие пакеты (и самое главное - какой версии) нам доступны.
Вы мне можете сказать, что такие пакеты обычно устанавливаются по инструкциям. И искать их таким методом не придется. Они всегда называются одинаково. И вы будете правы.
Самая очевидная польза от apt list проявляется в тех случаях, когда вам необходимо установить какой-нибудь модуль родительской программы. А также, иногда полезно будет узнать, что именно у вас в системе уже установлено.
В этом случае нам приходит на помощь ключ --installed.
Как это работает:
Мы хотим узнать, какие пакеты python3 у нас установлены. Если мы поищем по вхождению apt list python3, пакетный менеджер покажет только основной пакет python3:
Мы видим, что python3 у нас установлен, а какие конкретно его модули у нас подгружены - нет.
Пробуем тогда вывести apt list python3*:
Вывод команды не попадет даже в 10 скриншотов. По запросу python3* доступно 4261 пакета (конкретно в моей виртуалке). Листать всю эту портянку и искать нужное - долго. Проще выполнить:
apt list python3* --installed
В принципе, вывод apt можно грепать (grep). Но система сама даст вам предупреждение, что у apt нет клиентского интерфейса, и что так делать не стоит:
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Да и с отличии от ключа, grep все-таки будет зависим от языка на локали системы.