pacote “estado” vs “estado de seleção”

2

Todas as respostas que eu li, sugiro listar / salvar pacote seleção estados. ou seja, dpkg --get-selections

Mas o estado seleção pode ser diferente de atual . Então, por que usar isso? É só porque obter o estado real do pacote está mais envolvido?

Por exemplo, obter "pacotes instalados" tem duas soluções possíveis:

  • obtenha os nomes dos pacotes cujo estado de seleção é install com dpkg --get-selections | grep install | cut -f1

  • obtenha nomes de pacotes cujo estado é instalado com dpkg -l | tail -n +6 | grep '^.i' | cut -d' ' -f3

Ao contrário de dpkg --get-selections dpkg -l , destina-se à visualização não processada. Por que isso?

    
por tylihkjo 26.01.2015 / 10:22

1 resposta

0

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

Em 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.

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
    
por g_p 26.01.2015 / 12:18