Как получить установленное/не установленное состояние ** все ** пакеты?

Я нашел, что огромное количество ссылок получает список установленных пакетов, но как я могу распечатать единственный список всех известных пакетов с их "состоянием пакета" (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.

3
задан 3 October 2015 в 21:00

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
1
ответ дан 1 December 2019 в 17:35
dpkg-query -l '*'

покажет Вам весь установленный, удаленный и половину установленных пакетов. Просто grep на пакете Вы хотите отфильтровать.

0
ответ дан 1 December 2019 в 17:35

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

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