por que o autoremove não é chamado sempre que eu removo um pacote?

4

man apt-get diz:

  

O autoremove é usado para remover pacotes que foram instalados automaticamente para satisfazer dependências de outros pacotes e não são mais necessários.

Então por que não é chamado automaticamente toda vez que eu removo o pacote?

EDITAR

Essencialmente, minha pergunta é: Por que usar remove <pkg name> e não autoremove <pkg name> para remover pacotes.

Veja aqui

PS: Isso não vai quebrar a dependência como disse aqui

    
por Sourabh 27.08.2013 / 08:56

2 respostas

4

Veja a página AptGet / Howto - Documentação do Ubuntu para esclarecer suas dúvidas.

Diz:

apt-get autoremove

Este comando remove pacotes que foram instalados por outros pacotes e não são mais necessários.

apt-get autoremove <package_name>

Este comando remove um pacote e dependências instalados.

e

apt-get remove <package_name>

Este comando remove um pacote instalado, deixando os arquivos de configuração intactos.

EDITAR

Depende de quanto você confia no rastreador de dependência. Embora quase sempre esteja correto, há momentos em que você deseja que uma dependência permaneça, particularmente quando você é um desenvolvedor ou usuário experiente instalando software que não está no repositório.

Se você sempre instala o software através do apt-get, sem exceção, e confia que todas as dependências estejam corretas (o que geralmente são), então você pode usar apt-get autoremove e ganhar uma pequena quantidade de espaço em disco e uma exposição reduzida a possíveis brechas de segurança, fazendo com que ele remova pacotes que não tenham mais nenhum pacote que precise deles.

Mas se você instalar o software manualmente, ou desenvolver um software, ou não quiser lidar com um possível erro de dependência, então não usar o autoremove para limpar pacotes potencialmente não utilizados é provavelmente a escolha mais segura. Independentemente de você usar apt-get autoremove de vez em quando ou não, você sempre removerá o software usando apt-get remove Package

Por exemplo, se eu instalar AwesomePackage , pode depender de AwesomeLibrary e, portanto, AwesomeLibrary será automaticamente instalado como uma dependência . Quando eu removo AwesomePackage usando autoremove, desde que nenhum outro pacote tenha AwesomeLibrary como uma dependência, ele será desinstalado também. Mas se SuperPackage também exigir AwesomeLibrary , ou se eu tivesse instalado AwesomeLibrary explicitamente, em vez de tê-lo automaticamente como uma dependência ( apt-get install AwesomeLibrary ), então o autoremove não se livraria dele.

A razão pela qual não é o padrão é que ter AwesomeLibrary no sistema, não utilizado, é um problema muito pequeno. Quase nunca causará problemas, e a maioria das dependências não ocupa muito espaço. Há exceções, mas os momentos em que a remoção de uma dependência causará problemas superam os tempos em que ela resolverá ou evitará um problema.

Fonte: SuperUser: Quando você usaria o apt-get remove sobre o apt-get autoremove?

    
por Tarun 27.08.2013 / 09:17
1
  

Por que não remover todos os pacotes que foram instalados por outros pacotes e não são mais necessários quando o pacote original é removido?

Como remove apenas remove o pacote que você deseja remover, não suas dependências. Vamos ver:

Instalei xorg , o que depende (entre outras coisas) de xserver-xorg . xserver-xorg está marcado como Automático e, embora eu continue instalado xorg , ele não será desinstalado por autoremove . Agora, eu chamo apt-get remove xorg , que diz ao apt-get para fazer o que for preciso para remover xorg , e como ele só precisa remover esse pacote, ele não toma nenhuma ação adicional. Por quê? Porque você só disse a ele para remover o pacote e nada mais. Você não disse a ele o que fazer com as dependências, nem com outros pacotes. apt-get é um bom garoto e segue seu pedido com ponto e vírgula, sem tentar ser inteligente fazendo coisas que você não pediu a ele para fazer, e eu gosto desse jeito.

Com apt-get autoremove xorg , você diz ao apt-get para fazer o que for necessário para remover xorg e qualquer dependência Automática que tenha sido instalada por xorg . Então apt-get segue seu pedido e remove xorg e xserver-xorg e qualquer outra dependência de xorg que esteja marcada como Automática e não tenha nenhuma outra dependência a ser cumprida.

Vamos pegar outro cenário, eu instalei xorg e xserver-xorg e nenhum está marcado como Automático . Se eu chamar remove on xorg , apenas o xorg será excluído. Se eu chamar autoremove on xorg , apenas o xorg será excluído. Se eu chamar remove on xserver-xorg , ambos xserver-xorg e xorg serão deletados, porque você está dizendo ao apt-get para fazer o que for necessário para remover o xserver-xorg mas como o xorg também depende do xserver-xorg, get não quer deixar dependências quebradas enquanto segue seus pedidos, portanto, excluí-lo.

Mas aqui está a diversão, se você chamar autoremove on xserver-xorg ele irá desinstalar qualquer dependência marcada como Automático do xserver-xorg e xorg em si. Estranho, né? Isso ocorre porque o apt-get aceita esse conjunto de pedidos de você. Em suma, estas são as ações, na ordem exata, você diz ao apt-get sempre que você liga:

apt-get autoremove xserver-xorg

  • Remove qualquer dependência reversa do xserver-xorg. Neste caso, xorg
  • Remover xserver-xorg.
  • Remova qualquer pacote do qual o xserver-xorg dependa e esteja marcado como automático.
  • Não faça mais nada.

apt-get remove xserver-xorg

  • Remove qualquer dependência reversa do xserver-xorg. Neste caso, xorg
  • Remover xserver-xorg.
  • Não faça mais nada.

apt-get remove xorg

  • Remove qualquer dependência reversa do xorg. Neste caso, nenhum
  • Remover xorg.
  • Não faça mais nada.

apt-get autoremove xorg

  • Remove qualquer dependência reversa do xorg. Neste caso, nenhum
  • Remover xorg.
  • Remove qualquer pacote do qual o xorg depende e está marcado como automático. Se xserver-xorg estiver marcado como automático, será removido. Se não for, será mantido instalado.
  • Não faça mais nada.

Como você pode ver, cada conjunto de ordem tem no final "Não faça mais nada" uma vez que ele cumpra todos os comandos. É por isso que você remove apenas o alvo com a remoção.

    
por Braiam 27.08.2013 / 13:33

Tags