Как я могу получить список всех пакетов в разделе репозитория из командной строки?

В Синаптическом можно перечислить пакеты разделом. Например, в изображении ниже всех пакетов раздела "Amateur Radio (universe)" перечислены.

Как может я получать такой список (редактирование: с описанием пакета) в командной строке?

Мне нужен необработанный список; терминальное приложение как aptitude не сделает.

synaptic

13
задан 13 March 2015 в 03:36

4 ответа

Что ж, хотя вы говорите, что не хотите использовать aptitude из-за вывода, вам нужно знать, что вы можете изменить его, чтобы получить то, что вам нравится:

aptitude -F'|%p|%d|' search '?section(hamradio)'

Уловка в переключатель -F , который изменяет выходной формат. % p означает пакет. Это также выводит, когда пакет имеет различные архитектуры (например, amd64 против i386), и % d , который выводит описание. Вы можете еще больше персонализировать шаблон поиска, например, для не установленных пакетов:

aptitude -F'|%p|%d|' search '?section(hamradio) !~i'

где ~ i означает установленный, а ! - нет, поэтому он читается как «не (! ) installed (~ i) ", или если вам нужны только те, которые доступны для вашей архитектуры:

aptitude -F'|%p|%d|' search '?section(hamradio) ~r native'

~ r является ? architecture () , который соответствует архитектуре пакета и native , в котором перечислены только те, которые имеют ту же архитектуру, что и система, что эквивалентно dpkg --print-architecture .

Таким образом, предыдущую строку можно записать еще более кратко как :

aptitude -F'|%p|%d|' search '~s hamradio ~r native'
5
ответ дан 23 November 2019 в 03:17

Убедитесь, что пакет dctrl-tools Install dctrl-tools установлен. Он предоставляет полезные команды для поиска в списках пакетов apt и dpkg. Чтобы получить полное описание всех пакетов из определенного раздела, которые можно установить с помощью apt, запустите

grep-aptavail -F Section hamradio

. Это покажет полные метаданные пакета для каждого пакета в разделе hamradio . Если все, что вы хотите видеть, это имена пакетов, запустите

grep-aptavail -n -F Section -s Package hamradio

. Если ваша система настроена для многоархитектурной архитектуры, один и тот же пакет может отображаться в этом листинге более одного раза, если он создан для более чем одной архитектуры. Поэтому для дальнейшего уточнения используйте

grep-aptavail -n -F Section -s Package hamradio | sort | uniq

или

grep-aptavail -n -F Section -s Package hamradio | sort -u

для сортировки списка пакетов и удаления повторяющихся пакетов с тем же именем.

Обратите внимание, что вам нужно будет использовать фактическое имя раздела, которое отличается от "удобочитаемое" имя, которое Synaptic показывает в своем графическом интерфейсе. Например, в приведенных выше поисках используется имя раздела hamradio вместо строки «Amateur Radio», показанной в Synaptic.

См. Справочную страницу для grep-aptavail для полного описания всех вариантов и несколько примеров.

11
ответ дан 23 November 2019 в 03:17

Больше полей в одной строке с произвольным разделителем

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

grep-aptavail -n -s Package,Description -F Section hamradio |paste -sd '||\n' |sed 's:^:|:' |sort -u
3
ответ дан 23 November 2019 в 03:17

Вы можете использовать следующую команду, чтобы получить список пакетов, принадлежащих данному разделу:

$ dpkg-query -W -f='${binary:Package} ${Section}\n' | awk '{if ($2 == "shells") {print $1}}'
bash
bash-completion
busybox-initramfs
busybox-static
dash
zsh
zsh-common
3
ответ дан 23 November 2019 в 03:17

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

Похожие вопросы: