Qual é a maneira correta de remover completamente um aplicativo?

454

Eu procurei na rede por essas informações e encontrei diferentes linhas de comando, como estas:

sudo apt-get remove application
sudo apt-get remove application*

sudo apt-get remove --purge application
sudo apt-get remove --purge application*

sudo apt-get purge application
sudo apt-get purge application*

Então, qual é o caminho correto? É necessário usar esse "*"?

Depois disso, também encontrei estes comandos:

sudo updatedb
sudo locate application
sudo rm -rf (file/folder name)
    
por user48949 14.09.2012 / 23:54

7 respostas

604

  • apt-get remove packagename

    removerá os binários, mas não os arquivos de configuração ou dados do pacote packagename . Ele também deixará as dependências instaladas com ele no tempo de instalação intocado.

  • apt-get purge packagename ou apt-get remove --purge packagename

    removerá o tudo em relação ao pacote packagename , mas não as dependências instaladas com ele na instalação. Ambos os comandos são equivalentes.

    Particularmente útil quando você quer "começar tudo de novo" com um aplicativo porque você bagunçou a configuração. No entanto, ele não remove arquivos de configuração ou de dados que residem nos diretórios iniciais dos usuários, geralmente em pastas ocultas. Não há uma maneira fácil de removê-los também.

  • apt-get autoremove

    remove pacotes órfãos, ou seja, pacotes instalados que costumavam ser instalados como uma dependência, mas não são mais. Use isso depois de remover um pacote que tinha dependências instaladas nas quais você não está mais interessado.

  • aptitude remove packagename ou aptitude purge packagename (da mesma forma)

    também tentará remover outros pacotes que foram requeridos por packagename , mas não são requeridos por nenhum pacote restante. Observe que aptitude apenas lembra informações de dependência para pacotes que foram instalados.

E muitos mais existem. Baixo nível dpkg -commands pode ser usado (avançado), ou ferramentas GUI como Muon, Synaptic, Software Center, etc. Não existe uma única 'maneira correta' de remover aplicativos ou executar outras tarefas interagindo com o gerenciamento de pacotes .

A lista que você encontrou é apenas um exemplo. Certifique-se de entender os significados e tente o que ele quer fazer antes de aceitar a ação (você precisa pressionar Y antes de realmente executar as ações conforme proposto).

A versão do asterisco na pergunta é provavelmente errada ; apt-get aceita uma expressão regular e não um padrão glob como o shell. Então o que acontece com

sudo apt-get remove application*

é o seguinte:

  1. O shell tenta expandir application* procurando os arquivos no diretório atual. Se (como é normalmente o caso) não encontrar nada, ele retorna o padrão glob inalterado (supondo que bash com o comportamento padrão aqui --- zsh errará).

  2. apt-get removerá os pacotes cujo nome contém uma string que satisfaça a expressão regular application* , ou seja, applicatio seguido por um número arbitrário de n : applicatio , application , applicationn , libapplicatio , etc.

  3. Para ver como isso pode ser perigoso, tente (sem root para segurança dupla) apt-get -s remove "wine*" ( -s simulará a coisa em vez de fazê-lo) --- ela dirá que removerá todos os pacotes que tem "win" em seu nome e o dependente, quase todo o sistema ...

Provavelmente, o comando que foi usado é realmente

 sudo apt-get remove "^application.*"

(observe as aspas e o ponto), que removerá todos os pacotes cujo nome começa com application .

Estes comandos,

sudo updatedb                  # <-- updates the locate database (index). harmless
sudo locate application        # <-- locates the file 'application'. harmless
sudo rm -rf (file/folder name) # <-- removes files/dirs recursively. dangerous.

estão completamente fora do escopo do gerenciamento de pacotes. Não remova arquivos pertencentes a pacotes sem usar o gerenciador de pacotes! Vai ficar confuso e é a maneira errada de fazer as coisas.

Se você não sabe a qual pacote um arquivo pertence, tente isto:

dpkg -S /path/to/file
    
por gertvdijk 15.09.2012 / 00:04
88

Para o Ubuntu 12.04 e talvez superior, o método correto é:

sudo apt-get --purge autoremove packagename

Como detalhado aqui .

Não use packagename* , pois isso pode excluir pacotes não intencionais e causar mais problemas do que soluciona. Ou se você precisar, pelo menos, executá-lo com um sinal -s , --simulate , --dry-run primeiro para ver exatamente o que ele fará sem fazê-lo.

    
por Kurtosis 20.11.2013 / 21:01
15

Você pode usar este comando:

sudo apt-get purge --auto-remove packagename

Ele irá limpar os pacotes necessários juntamente com as dependências instaladas com esses pacotes. A opção --auto-remove (sendo um alias de autoremove ) funciona de forma semelhante a sudo apt-get autoremove . Usando este comando, podemos executar um único comando:

sudo apt-get purge --auto-remove packagename

Em vez de:

sudo apt-get purge packagename
sudo apt-get autoremove
    
por pl_rock 16.09.2015 / 22:08
6

Você pode usar com segurança sudo apt-get remove --purge application ou sudo apt-get remove applications 99% do tempo. Quando você usa o purge flag, simplesmente remove todos os arquivos de configuração também. Que pode ou não ser o que você quer, dependendo se você deseja reinstalar o aplicativo. O application* corresponderá a todos os aplicativos que começam com application , que geralmente são plug-ins, recursos adicionais, etc. do aplicativo principal que você está removendo. ou seja,

sudo apt-get remove gedit*

removeria gedit , gedit-plugins e gedit-common . Normalmente, não é necessário fazer isso, porque a maioria dos plug-ins / programas associados depende do aplicativo principal e será removida automaticamente (ou marcada para remoção) quando você desinstalar o aplicativo principal.

Seu último comando é apenas para remover sobras de aplicativos que são conhecidos por terem desinstaladores desarrumados, e é apenas remover todos os restos do aplicativo.

    
por reverendj1 15.09.2012 / 00:05
5

Eu recebi algumas mensagens de erro para remover um pacote, a única maneira que encontrei que funcionou foi esta:

mv /var/lib/dpkg/info/package.* /tmp/
dpkg --remove --force-remove-reinstreq package

descobri que, embora usando apenas

dpkg --remove --force-remove-reinstreq package

não remove o pacote, mostra-me o caminho correto para o arquivo a ser movido:

mv /var/lib/dpkg/info/package.* /tmp/

Substitua o pacote pelo nome do seu aplicativo. Use o sudo no Ubuntu, torne-se root no Debian.

    
por DangerFireBob 26.02.2015 / 10:26
3

Eu encontrei este comando na internet.

dpkg --purge --force-depends application

link .

    
por vrcmr 15.09.2012 / 00:10
1

Depende do aplicativo que você deseja remover. Certifique-se sempre de verificar suas dependências antes de emitir o comando yes. Quando você remove algo por linha de comando, algumas vezes ele mostra um punhado de bibliotecas que não são mais necessárias. Estes podem ser removidos com o apt-get autoremove.

Cuidado com o uso de comandos como sudo apt-get remove - limpar nome da aplicação pode remover algumas dependências que são necessárias para outros aplicativos e, como tal, pode quebrar seu sistema.

Se você quiser fazê-lo da maneira mais segura, você sempre pode removê-lo usando apenas o centro de software ou o apt-get remove applicationname. Se as dependências não forem mais necessárias, execute o apt-get autoremove mais tarde.

    
por gustavokrm 15.09.2012 / 00:10