Очень часто, наводя порядок или планируя обновление системы встает вопрос о подключенных репозиториях, в частности о том, для чего они нужны и какие пакеты из них установлены.
Прямого способа сделать это нет, но Linux тем и хорош, что позволяет решить задачу различными способами, в нашем случае мы будем использовать
apt-patterns, позволяющий использовать регулярные выражения с командами apt.Чтобы получить интересующую нас информацию прежде всего выведем список подключенных репозиториев командой:
apt policy
В ее выводе нас прежде всего будет интересовать опция «источник (origin)», которая выводится после ключа
o=. Теперь мы можем получить полный список пакетов из этого репозитория командой:
apt list ~Onginx
В данном случае указываем наименование источника сразу после ключа
~O, без пробела. Обратите внимание, что данная команда выводит все пакеты, содержащиеся в репозитории, установленные пакеты при этом помечены отдельно как [установлен].Если репозиторий небольшой, то этого достаточно. Вы можете быстро понять, что из него уже установлено, что вы можете установить и нужно ли это вам вообще в текущий момент времени.
В противном случае нужно будет добавить дополнительные отборы, например, добавим фильтр по только установленным пакетам:
apt list ?and\(~i\,~Oprox\)
Здесь мы соединили через логическое И два условия: пакет установлен
~i и пакет принадлежит определенному источнику ~O, также не забывайте использовать обратный слеш для экранирования служебных символов.Также обратите внимание, что имя источника не обязательно указывать полностью, так как это регулярное выражение. Так для репозитория
o=Proxmox мы использовали просто ~Oprox.Но здесь нас может поджидать несколько иная сложность, среди установленных пактов нам могут попасться пакеты со статусом [установлен, автоматически] и их может быть много, очень много.
Статус [установлен, автоматически] обозначает что мы не выбирали этот пакет для установки, и он был получен автоматически, по зависимостям. Для больших репозиториев таких пакетов может оказаться сильно много, и они серьезно ухудшают восприятие. Поэтом добавим еще одно условие:
apt list ?and\(~i\,\!~M\,~Oprox\)
Где параметр
!~M обозначает «кроме установленных автоматически». Теперь вывод команды покажет только пакеты, которые были установлены вручную из указанного репозитория. Данные конструкции можно использовать не только с командой
apt list, но и с любыми другими командами apt, например для установки или удаления пакетов. А больше информации вы можете получить при помощи: man apt-patterns
Или обратившись к подобной информации в сети интернет.
