dpkg-query для отображения только установленных пакетов, а не "rc"

Другое предложение awk

awk '{gsub(/\[.+foo|\]/,"foo")}1' file
foo1 bar1
foo2 bar2
foo3 bar3
foo4 bar4
foo5 bar5
2
06.03.2020, 09:39
2 ответа

dpkg-queryне поддерживает фильтрацию по статусу, но может выводить статус пакетов, что позволяет их фильтровать:

dpkg-query -W -f='${Status}\t${package}\t${version}\t${architecture}\n' | grep "^install ok installed"

dpkg -lоснован на dpkg-queryи поэтому не может фильтровать по самому статусу.

aptitudeпредоставляет более мощные параметры поиска и может использоваться для этого; см. Правильный способ получить список установленных пакетов, соответствующих шаблону? для получения подробной информации. Следующая команда отобразит имя пакета, версию и архитектуру всех установленных пакетов (и только установленных пакетов ):

.
aptitude search "~i" -F "%p%v#%E"

Обратите внимание, что имя пакета будет включать архитектуру, если она не соответствует основной архитектуре системы; например

zlib1g       1:1.2.11.dfsg-1  amd64
zlib1g:i386  1:1.2.11.dfsg-1  i386      
1
28.04.2021, 23:21

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

Если вы просто хотите показать установленные пакеты:

dpkg --list | grep ^ii

Статус будет указан в первом столбце, где iiозначает, что он установлен и ожидается. Канал в grep ^iiпоказывает только пакеты с этим статусом.

Если вам просто нужны установленные пакеты с архитектурой amd64:

dpkg --list | grep "^ii.*amd64"

Будут напечатаны только те пакеты, которые содержат статус iiи amd64.

Чтобы сделать то же самое, используя awkдля печати только строк, в которых первый столбец имеет ii, а четвертый —amd64:

dpkg --list | awk '$1=="ii" && $4=="amd64"'
2
28.04.2021, 23:21

Теги

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