“sudo apt -get install foo” causa remoção do pacote foo e tudo depende disso

9

Enquanto trabalhava no prompt de comando, eu acidentalmente digitei o seguinte comando:

sudo apt-get install python3-

e o ubuntu começou a remover o python3 e tudo depende dele (incluindo o firefox e muito mais). Felizmente fechei esse terminal imediatamente e reverti tudo verificando o arquivo de log do dpkg, mas fiquei me perguntando por que um comando install deveria agir como remover?

É um bug?

Considere a situação em que você está procurando por um nome de pacote (pressionando Tab duas vezes) e percorrendo as possibilidades pressionando a tecla Enter e as teclas Enter permanecem no buffer do teclado e .... youhaaaa ... apt-get está removendo toda a instalação na frente dos seus olhos.

    
por melmi 07.11.2012 / 11:20

2 respostas

10

Apenas tentei este sinal de menos (ou traço) depois de um pacote e, sim, o apt-get agindo como remove .

O engraçado é que eu não conhecia essa função de apt-get . Este sinal de menos é válido para todos os pacotes. Eu tentei com smplayer- com firefox- e sempre agindo como remove . Então, a única coisa que posso pensar é que o sinal de traço no final de um pacote considerado por apt-get como um comando de menos e install foi convertido em remove .

Se você quisesse instalar tudo sobre o python3, teria que adicionar um sinal de asterisco após esse sinal de traço (menos)

sudo apt-get install python3-*

No começo eu pensei que isso fosse apenas um problema de conflito, mas não é. Às vezes, quando você instala algum pacote e entra em conflito com outro pacote, o pacote já instalado será removido devido ao novo pacote instalado, mas essa não é a nossa situação aqui.

Aprendemos algo útil hoje em dia.

A partir da página man do apt-get. Para ler a página de manual através do seu terminal, dê man apt-get

  

Se um hífen (-) é anexado ao nome do pacote (sem interferência   espaço), o pacote identificado será removido se estiver   instalado. Da mesma forma, um sinal de mais (+) pode ser usado para designar   pacote para instalar. Estes últimos recursos podem ser usados para anular   decisões tomadas pelo sistema de resolução de conflitos do apt-get.

Eventualmente não é uma opção nova ou algo estranho, é apenas não lermos as páginas do manual cuidadosamente.

    
por Nick Thom 07.11.2012 / 12:05
11

Este é aparentemente um recurso de apt .

A partir da manpage para o comando apt-get ,

  

Se um hífen for anexado ao nome do pacote (com              nenhum espaço interveniente), o pacote identificado será removido se              está instalado. Da mesma forma, um sinal de mais pode ser usado para designar um              pacote para instalar. Estes últimos recursos podem ser usados para anular              decisões tomadas pelo sistema de resolução de conflitos do apt-get.

A simulação com um pacote instalado e um hífen acrescentado ao final do pacote me fornece esta saída:

$ apt-get install -s retext-
NOTE: This is only a simulation!
      apt-get needs root privileges for real execution.
      Keep also in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following package was automatically installed and is no longer required:
  retext-wpgen
Use 'apt-get autoremove' to remove it.
The following packages will be REMOVED:
  retext
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
Remv retext [3.1.3-1]

Da mesma forma, com um pacote desinstalado e um sinal de mais anexado ao final do pacote, recebo esta saída:

$ apt-get remove -s googlecl+
NOTE: This is only a simulation!
      apt-get needs root privileges for real execution.
      Keep also in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  python-gdata
Suggested packages:
  python-gdata-doc
The following NEW packages will be installed:
  googlecl python-gdata
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Inst python-gdata (2.0.17-1 Ubuntu:12.10/quantal [all])
Inst googlecl (0.9.13-1.1 Ubuntu:12.10/quantal [all])
Conf python-gdata (2.0.17-1 Ubuntu:12.10/quantal [all])
Conf googlecl (0.9.13-1.1 Ubuntu:12.10/quantal [all])
    
por jokerdino 07.11.2012 / 12:29

Tags