Por que o 'apt-get autoremove' não funcionou corretamente?

4

Eu instalei o Pipelight do arquivo PPA, de acordo com estas instruções .

O comando de instalação, sudo apt-get install --install-recommends pipelight-multi era para apenas um pacote, mas implicava o download e a instalação de cerca de 180 pacotes de dependência, dos quais cerca de 40 eram upgrades para pacotes atualmente instalados.

Portanto, cerca de 140 novos pacotes foram instalados.

Posteriormente Pipelight não funcionou, então eu removi:

sudo apt-get purge pipelight-multi

Nenhum outro pacote foi removido.

Eu usei sudo apt-get autoremove . Este comando removeu todos os pacotes removíveis automaticamente. Havia exatamente 100 deles (havia também exatamente 100 pacotes na lista "Autoremovable" do Gerenciador de Pacotes Synaptic).

Então, isso deixou cerca de 40 pacotes que não eram considerados removíveis automaticamente e, portanto, não foram removidos. Eu tive que removê-los manualmente.

Não havia dependências não atendidas no meu sistema antes de instalar o Pipelight; e eu não havia marcado nenhum pacote como instalado, instalado ou removido manualmente, ou algo assim. Apenas cerca de dez minutos se passaram entre instalar o Pipelight e removê-lo.

Então, depois que eu removi o Pipelight, por que todas as suas dependências desnecessárias foram marcadas como auto-removíveis?

    
por EmmaV 22.02.2016 / 05:19

1 resposta

3

Meu melhor palpite é que os 40 pacotes foram recomendados por outros pacotes que você já instalou; pipelight-multi junto com a opção --install-recommends fez com que eles fossem instalados, mas eles foram mantidos após a remoção devido a essas recomendações. Como você removeu os pacotes manualmente, é difícil determinar, mas no futuro você pode executar aptitude why ${package} para cada pacote que você acha que deve ser removido automaticamente e aptitude dirá por que ele está sendo mantido.

A mecânica por trás disso não é necessariamente intuitiva. Quando um pacote é marcado como auto-removível, manualmente ou automaticamente (no último caso, porque é instalado automaticamente para satisfazer uma dependência ou recomendação), o sinalizador de remoção automática é a única informação armazenada; o sistema não lembra porque um pacote foi instalado automaticamente. Esses pacotes são mantidos apenas enquanto algum outro pacote depende deles, ou os recomenda (esta é a configuração padrão, pode ser alterada).

Tudo isso explicaria sua situação da seguinte maneira. Você já tem algum outro pacote, A , instalado; este pacote recomenda B , mas o último não está instalado. Você instala pipelight-multi , que também recomenda B ; Como você especificou explicitamente --install-recommends , sabemos que B é instalado junto com pipelight-multi . Quando você remove pipelight-multi e executa apt-get autoremove , B é marcado como removível automaticamente e é verificado, mas como A ainda está instalado, B é mantido, mesmo que o pacote que o tenha instalado em primeiro lugar se foi. Como A recomenda apenas B , você pode remover manualmente B para voltar à situação inicial.

    
por 23.02.2016 / 11:20