dpkg --get-selections
apenas exibe os estados de seleção de pacote e não os estados do pacote. A saída de dpkg -l
contém os estados reais do pacote, no entanto
processar a saída dpkg -l
é um pouco difícil por estar mais próxima da abordagem gráfica.
Então, se você quiser extrair o estado do pacote, você pode usar a ferramenta dpkg-query
.
Ele fornece a opção de formatação usando -f, --showformat=format
-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.
Portanto, combinei o campo ${binary:Package}
com ${Status}
para obter o status real de um pacote.
dpkg-query --show -f='${binary:Package} \t\t ${Status}\n'
Para uma saída mais formatada, você pode usar
dpkg-query --show -f='${binary:Package} ${Status}\n' | awk '{ printf "%-60s %s\n", , " "" "}'
Exemplo
Usando 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
Usando dpkg-query --show
$ dpkg-query --show -f='${binary:Package} ${Status}\n' vlc | awk '{ printf "%-60s %s\n", , " "" "}'
vlc hold ok unpacked