Por que o Linux (Mint 17.2, baseado no Ubuntu 14.04. KDE) remove automaticamente certos pacotes enquanto instala outros?

Por que o Linux (Mint 17.2, baseado no Ubuntu 14.04. KDE) remove automaticamente certos pacotes enquanto instala outros?

Por exemploEditor de texto átomo. Quando corro:

sudo apt-get install imagemagick # http://www.imagemagick.org/script/index.php

dá:

you might want to run 'apt-get -f install' to correct these: 
The following packages have unmet dependencies:  virtualbox-5.0:i386 : Depends: psmisc:i386 but it is not going to be installed

Então, quando eu tento:

sudo apt-get -f install

eu recebo

The following packages were automatically installed and are no longer required:
  libgtkspell0 pidgin-data
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  psmisc:i386
The following packages will be REMOVED:
  atom gconf2 psmisc
The following NEW packages will be installed:
  psmisc:i386

Minha pergunta é: por que deveriaÁtomoser desinstalado quando tento instalar algo completamente diferente?

EDITAR: repetindo o procedimento mas com

apt-get autoremove

em vez de

sudo apt-get -f install

resolveu o problema.

Mas ainda não entendo por que um pacote desnecessário deve desencadear a remoção de um pacote que eu realmente preciso (atom)

Responder1

isso acontece porque cada pacote no apt possui uma lista de dependências, que você pode ver com:

apt-cache depends libgtkspell0 pidgin-data atom

Para reter os pacotes, o apt está sugerindo que você remova o atom, que possui uma dependência que entra em conflito com uma das dependências que o atom possui. Observe em particular o:

Conflicts: libgtkspell0:i386

parte da saída.

Então apt está simplesmente tentando resolver um conflito. Pode-se notar que quase vale a pena postar um problema para o empacotador dos dois pacotes a serem removidos porque em teoria o apt deveria oferecer a remoção do pacote que não é mais necessário, não um pacote que está ativo no sistema, mas é sempre um equilibrar a criação e manutenção de listas de dependências/conflitos em um pool de pacotes.

Se eu fosse adivinhar, acho que o apt internamente não tem como diferenciar entre pacotes a serem removidos e ativos ao criar suas listas de dependências, então ele simplesmente escolhe o resultado com o menor número negativo (ou seja, remoção forçada de um pacote) resultado.

informação relacionada