Como definir o status da seleção de pacotes para o status atual?

4

Eu fiz um comando dpkg --clear-selections e descobri que todos os meus pacotes estão selecionados para remoção. Como as páginas man estão dizendo

  

- clear-selections: Defina o estado solicitado de todos os pacotes não essenciais para desinstalar.

e mais tarde eu soube, se eu fizer um sudo apt-get dselect-upgrade , todos os pacotes serão removidos.

Eu verifiquei esta questão no Ask Ubuntu , e leia o significado de cada sinalizador em dpkg -l . Lá diz: A primeira coluna mostra "estado do pacote desejado" ou estado de seleção e a segunda coluna mostra "estado atual".

Como não tenho nenhum problema de dependência agora, quero definir meu estado de seleção como o estado desejado no banco de dados do dpkg. Como posso fazer isso?

Eu não dei a saída de dpkg -l por causa da saída grande. A saída é todas as colunas ri .

Além disso, quando eu fiz o comando sudo apt-get dselect-upgrade , ele me deu essa mensagem,

......... After a long list of package names to be removed...
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  apt ubuntu-keyring (due to apt) libapt-pkg4.12 (due to apt) libstdc++6 (due
  to apt) gnupg (due to apt) base-files bash
4 upgraded, 0 newly installed, 1764 to remove and 1 not upgraded.
Need to get 0 B/1,359 kB of archives.
After this operation, 3,078 MB disk space will be freed.
You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'
 ?] 

Existe alguma maneira de redefinir o estado de seleção de pacotes para o estado atual instalado?

    
por Anwar 20.07.2012 / 17:47

2 respostas

10

Tente este comando para alterar o status do pacote -

echo "<package-name> <status>" | sudo dpkg --set-selections

Digamos que você tenha definido o status do pacote zip para deinstall . Para reverter para o status original, install execute este comando -

echo "zip install" | sudo dpkg --set-selections 

Para alterar mais pacotes de uma só vez, use este comando

dpkg --get-selections | sed -n 's/\<<current-status>$/<status>/p' | sudo dpkg --set-selections

por exemplo, para alterar todos os pacotes com o status deinstall para instalar o uso -

dpkg --get-selections | sed -n 's/\<deinstall$/install/p' | sudo dpkg --set-selections
    
por Sarowar 21.07.2012 / 09:07
0

Ok, eu só precisava fazer isso. Obrigado @sarowar pelo comando. Etapas para o script fazendo isso para todos os pacotes instalados:

export IFS='
'
for i in $(dpkg -l |egrep '^[a-z]i.*' |awk '{print " install"}') ; do echo $i|dpkg --set-selections  ; done
unset IFS
    
por DaveQB 25.07.2016 / 10:11