Qual é a diferença entre esses comandos?
sudo apt-get autoremove --purge packagenames
sudo apt-get remove --purge packagenames
sudo apt-get purge purge packagenmaes
sudo apt-get remove packagenames
sudo apt-get autoremove
fonte
Qual é a diferença entre esses comandos?
sudo apt-get autoremove --purge packagenames
sudo apt-get remove --purge packagenames
sudo apt-get purge purge packagenmaes
sudo apt-get remove packagenames
sudo apt-get autoremove
remove
desinstala pacotes com o seu nome.autoremove
desinstala todos os pacotes instalados automaticamente que não são mais necessários. É incorreto listar os nomes dos pacotes depois autoremove
; eles serão ignorados (e todos os pacotes elegíveis serão removidos), o que provavelmente não é o que você pretende.--purge
faz com que os arquivos de configuração em todo o sistema associados aos pacotes sendo removidos também sejam removidos. Deve ser acompanhado por um comando, como remove
ou autoremove
. O --purge
sinalizador modifica a ação de um comando; não age por si só.purge
significa a mesma coisa que --purge remove
(que é a mesma que remove --purge
). É incorreto dizer purge
duas vezes; o segundo purge
é interpretado como o nome de um pacote a ser purge
d, o que provavelmente não é o que você pretende.Para entender o que esses comandos fazem e como são diferentes, ajuda (e provavelmente é essencial) entender dois conceitos:
Um pacote instalado é instalado manual ou automaticamente .
Quando você especifica um pacote para instalação e ele é instalado, ele é instalado manualmente .
Mas outros pacotes também podem ser instalados. A maioria dos pacotes possui dependências - outros pacotes que devem ser instalados para que o pacote funcione conforme o planejado. Quando você instala um pacote, suas dependências (ou seja, os outros pacotes dos quais depende) são instaladas, exceto as que foram instaladas anteriormente.
Quando um pacote não é especificado por você para ser instalado, mas é instalado como uma dependência de um pacote que você especificou para instalar, ele é instalado automaticamente .
Observe que quando você tem dois pacotes instalados e um deles é uma dependência de outro, isso não significa que a dependência é instalada automaticamente. Também é possível que a dependência tenha sido instalada manualmente (ou seja, especificada por você, por exemplo, instalada antes ou ao mesmo tempo que o pacote que depende dela).
Finalmente:
apt-mark
comando), independentemente de como ou sob que circunstâncias eles foram realmente instalados.Normalmente, para cada pacote instalado automaticamente, você terá pelo menos um pacote instalado manualmente que depende dele (e que causou a instalação automática). No entanto, se você remover todos os pacotes instalados manualmente que dependem de um pacote instalado automaticamente, o pacote instalado automaticamente não será mais necessário, mas ainda será instalado.
apt-get autoremove
remove os pacotes instalados automaticamente que não possuem mais pacotes instalados manualmente, dependendo deles.
Um pacote fornece arquivos que devem ser e permanecem os mesmos em todos os sistemas em que a versão desse pacote está instalada. Esses arquivos fornecem executáveis, recursos, documentação e outros "ativos" para programas instalados. Geralmente chamamos esses "arquivos" que um pacote fornece.
Mas um pacote também fornece outros arquivos, que devem (possivelmente) ser alterados. Esses são chamados de arquivos de configuração global (ou em todo o sistema). Eles quase sempre são instalados no /etc
diretório e podem ser modificados automática e manualmente para alterar o comportamento dos programas instalados. Por exemplo, sudo
possui um arquivo de configuração /etc/sudoers
e um diretório para mais arquivos de configuração /etc/sudoers.d
. Esse arquivo e quaisquer arquivos adicionados a esse diretório especificam quem tem permissão para usar sudo
de que maneiras.
Normalmente, é desejável que desinstalar um pacote e instalá-lo novamente não mude a maneira como ele se comporta (a menos que os arquivos do pacote estejam corrompidos e é por isso que você o reinstalou, é claro). Portanto, normalmente quando um pacote é desinstalado, seus arquivos são excluídos, mas seus arquivos de configuração em todo o sistema são deixados intocados.
Quando você desinstala um pacote sem especificar que seus arquivos de configuração em todo o sistema também devem ser excluídos, isso é chamado "removendo" o pacote.
Se você também deseja excluir os arquivos de configuração em todo o sistema de um pacote ao desinstalá-lo, isso é chamado de "limpeza" do pacote.
apt-get remove
irá remover um pacote; ou seja, ele desinstalará o pacote, mas deixará seus arquivos de configuração em todo o sistema.
apt-get purge
irá limpar um pacote; ou seja, ele desinstalará o pacote e também excluirá os arquivos de configuração em todo o sistema.
Outra maneira de limpar os pacotes é usar o --purge
sinalizador. Isso não diz apt-get
o que fazer; em vez disso, modifica quais termos (ou "comandos") remove
dizem para ele fazer. O --purge
sinalizador faz com que qualquer desinstalação de pacote seja acompanhada pela exclusão de arquivos de configuração em todo o sistema dos pacotes sendo desinstalados. Em outras palavras, a --purge
bandeira transforma remoções em expurgos.
Por que temos a --purge
bandeira quando temos o purge
comando? Afinal, não é sudo apt-get --purge remove packagename
equivalente a sudo apt-get purge packagename
. Eles são equivalentes. Onde --purge
é útil é quando você deseja modificar o comportamento de comandos diferentes de remove
.
Por exemplo, suponha que você queira desinstalar os pacotes instalados automaticamente que não são mais necessários (porque não existem mais pacotes instalados manualmente dependendo deles), mas você não deseja apenas remover esses pacotes instalados automaticamente, mas também excluir seus arquivos de configuração em todo o sistema. Então você pode executar:
sudo apt-get --purge autoremove
Vamos considerar mais um uso de --purge
. Há um sinalizador chamado --reinstall
, que transforma instalações em reinstalações. Isso significa que, normalmente, quando você tenta instalar um pacote que já está instalado, nada acontece ou (se o pacote for marcado como instalado automaticamente), o pacote será marcado como instalado manualmente. Mas com o --reinstall
sinalizador, a instalação de um pacote que já está instalado faz com que seja removido e, em seguida, instalado novamente :
sudo apt-get --reinstall install packagename
Mas suponha que você queira excluir os arquivos de configuração em todo o sistema do pacote que está reinstalando. Isso é algo comum; quando um pacote não está funcionando e você não sabe o porquê, tente reinstalá-lo e também excluir seus arquivos de configuração para que sua configuração seja redefinida para o padrão. Para conseguir isso, você pode executar:
sudo apt-get --purge --reinstall install packagename
A --reinstall
instalação voltas em reinstalação (isto é, remoção seguido de instalação), e a --purge
transforma a parte de remoção de reinstalação em purga.
Agora deve ficar claro exatamente o que cada um dos seus apt-get
comandos de exemplo faz:
sudo apt-get autoremove --purge packagenames
Isso elimina pacotes instalados automaticamente que não possuem mais pacotes instalados manualmente que dependem deles. Ou seja, desinstala esses pacotes (o que implica a exclusão dos arquivos dos pacotes) e também os arquivos de configuração em todo o sistema.
Aqui, packagenames
não faz nada. Em particular, se você pretendia apenas remover pacotes cujos nomes estão listados lá, isso não se comportará como você pretende.
sudo apt-get remove --purge packagenames
Isso limpa packagenames
; supondo que packagenames
seja uma lista de nomes de pacotes separados por espaços em branco, ele limpará todos eles. Ou seja, ele os desinstalará (o que implica a exclusão de seus arquivos de pacote) e também os arquivos de configuração em todo o sistema.
Se algum dos pacotes listados packagenames
não estiver instalado, sua presença na lista não terá efeito (exceto que você será informado de que não foi instalado). Se você listar nomes de pacotes que não são o nome de nenhum pacote real, o comando falhará com um erro.unable to locate packagename
sudo apt-get purge purge packagenmaes
Se você removesse uma das ocorrências purge
desse comando, seria equivalente à anterior. Tal como está, ele tenta limpar um pacote chamado purge
e também limpar os pacotes listados em packagenames
. Como purge
não é o nome de nenhum pacote, ele falhará com uma mensagem de erro.
sudo apt-get remove packagenames
Isso remove os pacotes listados em packagenames
, o que implica a exclusão de seus arquivos de pacote. Isso não exclui seus arquivos de configuração em todo o sistema (porque é apenas uma remoção, não uma limpeza).
sudo apt-get autoremove
Isso desinstala pacotes instalados automaticamente que não possuem mais pacotes instalados manualmente que dependem deles. Isso implica excluir os arquivos de pacote, mas não os arquivos de configuração em todo o sistema (ou seja, é uma remoção, mas não uma limpeza).
Para mais informações sobre como usar apt-get
, recomendo a página do manual . Para informações mais gerais, consulte este guia .