Как передать установленные пакеты по каналу к способному кэшу?

Я пытаюсь получить описание пакета своих установленных пакетов.

Это было бы похоже на это:

sudo apt list --installed | sed 's/\/.*//' | apt-cache search {} \;

Проблема состоит в том, чтобы отправить каждую строку от sed до способного кэша. Какое-либо предложение?

2
задан 22 May 2018 в 18:11

1 ответ

{} \; синтаксис, который Вы предположили, характерен для find управляйте и не будет работать в этом контексте. Вы могли использовать xargs напр.

apt list --installed | sed 's/\/.*//' | xargs -n1 apt-cache search

На самом деле xargs имеет его собственное {}- как синтаксис, который Вы могли использовать здесь, т.е.

. . . | xargs -n1 -I{} apt-cache search {}

хотя это избыточно в этом случае (для случаев полезно, где Вы хотите заменить переданным по каналу значением в точке кроме конца команды).


Однако apt-cache search команда почти наверняка не, что Вы хотите здесь - она будет искать весь каталог (онлайн) пакеты, которые соответствуют каждому из результатов apt list --installed. Даже если Вы ограничиваете объем поискового использования --names-only Вы все еще получите много ложных положительных сторон (т.е. соответствия подстроки между пакетами, которые установлены и пакеты, которые не ЯВЛЯЮТСЯ). Это также будет ужасно неэффективно.

Для этой конкретной задачи я пропустил бы apt в целом и использование низшего уровня dpkg-query команда напр.

dpkg-query -W -f='${binary:Package}: ${binary:Summary}\n'

который будет намного более эффективным (только пересекают список пакета однажды), и будет строго ограничен локальным каталогом пакета.

Если Вы хотите ограничить вывод пакетами, которые в настоящее время устанавливаются, добавляют db:Status-Abbrev поле и фильтр на этом, например.

dpkg-query -W -f='${db:Status-Abbrev}\t${binary:Package} - ${binary:Summary}\n' | 
  awk '/^ii/'

или

dpkg-query -W -f='${db:Status-Abbrev}\t${binary:Package} - ${binary:Summary}\n' | 
  awk -F'\t' '/^ii/ {print $2}'
3
ответ дан 2 December 2019 в 02:43

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

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