Como o status desejado no Gerenciador de Pacotes Debian é determinado?

0

Por exemplo, se eu executar o seguinte comando dpkg -l ‘*compiz*’ , a saída será a seguinte:

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
+++-==============-============-============-=================================
pi  compiz         1:0.9.12.2+1 all          OpenGL window and compositing man
ii  compiz-core    1:0.9.12.2+1 amd64        OpenGL window and compositing man
un  compiz-core-ab <none>       <none>       (no description available)
[more output deleted]

A saída é um pouco enigmática. Existem várias explicações detalhadas em askubuntu, das quais, exemplo , é um deles. Da mesma forma, man dpkg e man dpkg-query fornecem explicações semelhantes.

O primeiro caractere no primeiro campo, "p", em nossa saída de exemplo acima, indica o status desejado do pacote. Qual é o status no qual o sistema de empacotamento acha que o pacote deve estar.

Qual é o significado subjacente do status desejado? Ou seja Por que o sistema de gerenciamento de embalagens tem uma ideia de qual status um pacote deve estar? Eu pude ver que um sistema inteligente recomendaria (ou desejaria) um pacote a ser removido se ele fosse usado apenas como uma dependência para um pacote pai já removido. No entanto, este não é o caso do nosso exemplo.

Em nosso exemplo, o pacote "compiz" está instalado, mas dpkg acredita que ele deve ser removido ou, pelo menos, que é desejável que o pacote seja removido. Por que isso acontece? Além disso, como esse campo particular funciona em geral? Ou seja Como o sistema decide sobre um "status desejado" para um pacote e quais são os motivos subjacentes para essa funcionalidade?

    
por Andrew Hardiman 17.08.2017 / 19:21

1 resposta

1

Eu não sei se você já usou ferramentas como aptitude ou synaptic , mesmo comandos de níveis mais baixos como: dpkg , dpkg-purge etc.

Usando ferramentas como aptitude , eu posso marcar muitos pacotes para remoção, alguns para limpar e outros para instalação, downgrade, etc, então eu posso rodar um único comando para fazer todas as coisas necessárias para conseguir o que eu quero (acionar ações pendentes).

O campo desejado é usado para determinar o que devo fazer com um pacote.

Permite instalar axel :

sudo apt install -y axel

Agora vamos ver seu status:

$ dpkg -l axel
ii  axel               2.5-2

Eu posso marcá-lo para purge :

$ echo axel purge | sudo dpkg --set-selections

Agora, a ação desejada é:

$ dpkg -l axel
pi  axel               2.5-2  

Eu também poderia marcar o pacote para "limpeza" usando outras ferramentas:

sudo dpkg-purge axel

Agora, se eu correr:

sudo aptitude install 

ou

sudo apt-get dselect-upgrade

ele me pergunta se eu quiser remover axel ou não ...

De onde vêm esses dados:

/var/lib/dpkg/status
    
por Ravexina 17.08.2017 / 21:14