Просматривайте приложения Ubuntu из командной строки

Я могу просматривать программное обеспечение Ubuntu в Gnome-Software. И они очень хорошо разлагаются. Я ищу версию CLI этого. То есть я хотел бы просматривать приложения из терминала, где я мог бы перечислить все приложения в определенной категории (например, игры).

Почему я ищу это?

Если бы я мог просматривать приложения из терминала, результаты поиска можно было бы настроить с помощью таких инструментов, как grep, awk так далее...

2 ответа

Решение

Там уже существует команда apt-cache dumpavail в котором будут перечислены все доступные пакеты из всех включенных репозиториев. За кулисами он фактически читает из файлов, хранящихся в /var/lib/apt/lists/ каталог (я сделал strace команды, и вот что показывает вывод) . Я предполагаю, что Gnome Software анализирует те же самые файлы и организует их по категориям.

Проблема в том, что фактические данные имеют строки, начинающиеся с Package: для имен пакетов и Section: к которому они принадлежат, но Section: линии организованы не так, как в Gnome Software. Однако, с небольшим количеством волшебства командной строки, мы можем приблизиться к чему-то подобному. То, что я предлагаю, это функция

filter_sections()
{
  apt-cache dumpavail | \
  awk -v SEARCH="$@" '/^Package:/{ PKG=$0  }\
    /Section:/ && $0~SEARCH {printf PKG" "$0"\n"}'
}

С помощью этой функции мы можем перечислить все пакеты по разделам, например:

$ filter_sections web | head                                                   
Package: apache2 Section: web
Package: awstats Section: web
Package: curl Section: web
Package: heat-api Section: web
Package: heat-api-cfn Section: web
Package: heat-api-cloudwatch Section: web
Package: heat-common Section: web
Package: heat-engine Section: web
Package: javascript-common Section: web
Package: libapache2-mod-apparmor Section: web

Сам код довольно прост: мы передаем вывод apt-cache dumpavail в awk который сохраняет каждое имя пакета в varialbe, и если Section: строка также содержит строку, которую мы сопоставляем, мы напечатаем как имя пакета, так и раздел.

Что касается перечисления самих разделов, то это довольно просто

apt-cache dumpavail | awk '/Section:/' | sort | uniq 

Что хорошо в этом подходе, так это то, что некоторые из Sections указать, к какому репозиторию относится пакет, например universe/python или же multiverse/web, Функция, однако, будет искать все и их, но при желании мы всегда можем отфильтровать awk даже больше

Вы, наверное, ищете aptitude, Если это не установлено в вашей системе, откройте терминал и введитеsudo apt-get install aptitude затем sudo aptitude чтобы начать это.

Если вы хотите искать и фильтровать результаты с grepВы можете использовать либо sudo apt-cache search или же sudo aptitude search

Другие вопросы по тегам