Як я можу отримати список усіх пакетів у розділі сховища з командного рядка?


13

У Synaptic можна перераховувати пакунки за розділами. Наприклад, на зображенні нижче вказані всі пакети розділу "Аматорське радіо (Всесвіт)".

Як я можу отримати такий список (редагувати: з описом пакета) у командному рядку?

Мені потрібен необроблений список; термінальна програма на зразок aptitudeне зробить.

синаптичний


apt-cache search shell
Panther

@ bodhi.zazen, це гарна пропозиція, але не шукайте лише Розділ
Стівен Пенні,

Відповіді:


5

Хоча, якщо ви кажете, що не хочете використовувати здатність через результат, вам потрібно знати, що ви можете змінити його, щоб отримати те, що вам подобається:

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

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

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

де ~iвстановлені засоби, а " !не", то він читається як "не (!) встановлений (~ 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'

Дуже елегантно, особливо з -F'|%p|%d|'. Однак чи можна було б не перерахувати :i386пакунки, додавши !до searchрядка -вираз ?
Серж Стротобандт

1
@GinGordon Так, просто додайте ~r nativeдо пошукових термінів. ~rістота , ?architectureяке відповідає архітектурі пакета і nativeперелік яких тільки ті , які мають ту ж архітектуру , ніж система, еквівалент dpkg --print-architecture. До речі, вам потрібен список із описом пакета?
Браям

Чудово! І так, я відредагував питання, щоб включити опис пакета. Будь ласка, відредагуйте відповідь відповідно, і ви заслужено отримаєте мій найкращий голос відповіді за те, що ви будете найбільш стислим.
Серж Стротобандт

@GinGordon перевірити це.
Брайам

1
@GinGordon, якщо ви встановите aptitude-docпакет і перейдете до /usr/share/doc/aptitude/html/en/index.htmlсвого браузера, ви знайдете у file:///usr/share/doc/aptitude/html/en/ch02s04s05.htmlвсіх неприємних льготах.
Браям

11

Переконайтесь, що встановлено пакет інструментів dctrlВстановіть dctrl-інструменти . Він надає корисні команди для пошуку списків пакетів 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 .


3

Більше полів на одному рядку, з довільним роздільником

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

grep-aptavail -n -s Package,Description -F Section hamradio |paste -sd '||\n' |sed 's:^:|:' |sort -u

2

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

$ 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.