пакет & ldquo; состояние & rdquo; vs & ldquo; состояние выбора & rdquo;

Все ответы, которые я прочитал, предлагают список / сохранение пакета Выбор состояний. то есть dpkg --get-selections

Но состояние выбора может отличаться от фактического . Так зачем это использовать? Это просто потому, что получение фактического состояния пакета более сложное?

Например, получение «установленных пакетов» имеет 2 возможных решения:

  • получить имена пакетов, чьи состояние выбора равно install с dpkg --get-selections | grep install | cut -f1

  • получить имена пакетов, состояние которых которых установлено ] с dpkg -l | tail -n +6 | grep '^.i' | cut -d' ' -f3

В отличие от dpkg --get-selections dpkg -l предназначен для просмотра, а не обработки. Почему это так?

2
задан 26 January 2015 в 15:01

1 ответ

dpkg --get-selections только произведите состояния выбора пакета не состояния пакета. Вывод dpkg -l содержит реальные положения пакета, однако обрабатывающие dpkg -l вывод является битом, жестким из-за того, чтобы быть больше ближе к графическому подходу.

Таким образом, если Вы хотите извлечь состояние пакета, можно использовать dpkg-query инструмент.

Это обеспечивает использование параметра форматирования -f, --showformat=format

От man dpkg-query

-f, --showformat=format
              This  option  is used to specify the format of the output --show
              will produce. The format is a string that  will  be  output  for
              each package listed.

Таким образом, я объединился ${binary:Package} поле с ${Status} получить фактическое состояние пакета.

dpkg-query --show -f='${binary:Package} \t\t ${Status}\n'

Для большего количества отформатированного вывода можно использовать

dpkg-query --show -f='${binary:Package} ${Status}\n'  | awk '{ printf "%-60s %s\n", $1, $2" "$3" "$4}'


Пример

Используя dpkg -l

$dpkg -l vlc
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                           Version              Architecture         Description
+++-==============================-====================-====================-=================================================================
hU  vlc                            2.2.0~pre2-4build1   amd64                multimedia player and streamer

Используя dpkg-query --show

$ dpkg-query --show -f='${binary:Package} ${Status}\n' vlc  | awk '{ printf "%-60s %s\n", $1, $2" "$3" "$4}'
vlc                                                          hold ok unpacked
0
ответ дан 26 January 2015 в 15:01

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

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