Я нашел, что огромное количество ссылок получает список установленных пакетов, но как я могу распечатать единственный список всех известных пакетов с их "состоянием пакета" (not-installed
, installed
, half-installed
и т.д., как определено dpkg
) в оболочке, идеально как это:
awk not-installed
bash installed
cc half-installed
[...]
dpkg --get-selections
и dpkg --list
только списки установили пакеты.
dpkg --get-selections '.'
не работает.
apt-cache dump
не печатает, установлены ли пакеты, и также печатает много несоответствующего материала.
Я использую Travis CI, который запускает Ubuntu 12.04 Выпуск Сервера LTS 64 бита с, например, dpkg-query
1.16.1.2.
Вы хотите dpkg-query
;
Для dpkg-query
> = 1.17.11:
dpkg-query -f '${Package}\t${db:Status-Status}\n' -W '*'
Для dpkg-query
< 1.17.11:
dpkg-query -f '${Package} ${Status}\n' -W '*' | awk '{print $1"\t"$4}'
#1:
-f '${Package}\t${db:Status-Status}\n'
: При использовании с -W
опция указывает формат вывода (см. man dpkg-query
для других опций); -W '*'
: списки все пакеты, соответствующие шаблону *
; #2:
-f '${Package} ${Status}\n'
: При использовании с -W
опция указывает формат вывода (см. man dpkg-query
для других опций); -W '*'
: списки все пакеты, соответствующие шаблону *
; awk '{print $1"\t"$4}'
: печать только первое и четвертое поле; В этом случае кажется, что Вы хотите перечислить слово состояния, таким образом, я выбрал db:Status-Status
виртуальное поле; вот другие виртуальные поля, связанные с состоянием пакета:
db:Status-Abbrev It contains the abbreviated package status, such as "ii" (since dpkg 1.16.2). db:Status-Want It contains the package wanted status, part of the Status field (since dpkg 1.17.11). db:Status-Status It contains the package status word, part of the Status field (since dpkg 1.17.11). db:Status-Eflag It contains the package status error flag, part of the Status field (since dpkg 1.17.11).
user@user-X550CL ~/tmp % dpkg-query -f '${Package}\t${db:status-status}\n' -W '*' | head
aalib1 not-installed
account-plugin-aim installed
account-plugin-empathy not-installed
account-plugin-facebook installed
account-plugin-flickr installed
account-plugin-foursquare not-installed
account-plugin-gadugadu not-installed
account-plugin-generic-oauth not-installed
account-plugin-google installed
account-plugin-groupwise not-installed
dpkg-query -l '*'
покажет Вам весь установленный, удаленный и половину установленных пакетов. Просто grep на пакете Вы хотите отфильтровать.