Veja algumas informações de man dpkg
, que explica o que dpkg -r
e dpkg -P
fazem. Remover um pacote com comandos APT ou synaptic envolve os mesmos procedimentos; Até onde eu sei, utilitários de gerenciamento de pacotes de alto nível como APT e synaptic simplesmente chamam DPKG como um subprocesso para remover ou instalar arquivos. Sua função é calcular e resolver dependências e fornecer uma interface aprimorada.
-r, --remove package...|-a|--pending
Remove an installed package. This removes everything except conffiles,
which may avoid having to reconfigure the package if it is reinstalled
later (conffiles are configuration files that are listed in the
DEBIAN/conffiles control file)[...]
Removing of a package consists of the following steps:
1. Run prerm script
2. Remove the installed files
3. Run postrm script
-P, --purge package...|-a|--pending
Purge an installed or already removed package. This removes everything,
including conffiles. [...]
Note: some configuration files might be unknown to dpkg because
they are created and handled separately through the configuration
scripts. In that case, dpkg won't remove them by itself, but the
package's postrm script (which is called by dpkg), has to take care
of their removal during purge. Of course, this only applies to files
in system directories, not configuration files written to individual
users' home directories.
Purging of a package consists of the following steps:
1. Remove the package, if not already removed.
2. Run postrm script.
Como você pode ver, esses comandos excluem todos os arquivos do aplicativo, com exceção dos arquivos de configuração. Mesmo o -P / --purge
pode nem sempre remover os arquivos de configuração local dos diretórios home dos usuários em alguns casos, portanto, esses arquivos podem precisar ser excluídos manualmente se não forem mais necessários. Quando você menciona os diretórios de aplicativos remanescentes após a desinstalação, provavelmente você está falando sobre um diretório de configuração local. *
Em minha resposta para uma questão um pouco relacionada eu discuti como APT, DPKG e outros gerenciadores de pacotes instalados em um sistema Ubuntu armazenar informações sobre os arquivos fornecidos por um pacote em um formato legível por humanos.
Essa resposta também tenta explicar por que usar um gerenciador de pacotes para lidar com o gerenciamento de pacotes é substancialmente mais fácil do que tentar fazer isso manualmente; em um sistema de arquivos típico do Linux, os arquivos fornecidos pelos aplicativos estão espalhados por todo o lugar. Embora isso possa parecer confuso, há uma grande vantagem de segurança para os arquivos de aplicativos que estão nos diretórios do sistema de propriedade do root, aos quais os usuários não podem gravar. Além disso, se precisarmos descobrir onde estão os arquivos relacionados a um pacote, podemos usar vários utilitários de linha de comando para encontrá-los.
Você queria saber se excluir todos os arquivos de um aplicativo para desinstalá-lo é uma má ideia e, em caso afirmativo, por quê. Minha resposta a esta pergunta é YES , em geral é uma idéia muito ruim, porque a exclusão dos arquivos instalados é apenas parte do trabalho feito pelo gerenciamento de pacotes quando você os chama para executar uma desinstalação. O banco de dados DPKG armazena informações sobre quais pacotes estão instalados e instaláveis, e todos os relacionamentos de dependência entre eles. Se os arquivos de pacote forem removidos sem o banco de dados ser atualizado, a resolução de dependência não será executada, o software que depende do software silencioso falhará, os pacotes serão quebrados, a limpeza feita pelos scripts prerm e postrm dpkg
chamadas para cada pacote que ele remove não será feito, potencialmente deixando links simbólicos quebrados e arquivos de configuração incorretos por aí, e tudo será horrível.
TL; DR
Os gerenciadores de pacotes existem por boas razões. Use-os sempre que possível, em vez de tentar fazer você mesmo.
* No entanto, às vezes, o software pode ser instalado (e ter um único diretório) sem que o DPKG saiba nada sobre ele. Por exemplo, você pode baixar um aplicativo de terceiros, extrair o arquivo e executar o arquivo executável. Para "desinstalar" este software, você pode simplesmente deletar os arquivos extraídos. Outro exemplo é a instalação usando sudo make install
após a compilação da origem, o que deixa o diretório de origem para trás. Desinstalar tal software pode ser uma dor de cabeça se os desenvolvedores não configurarem as coisas de modo a habilitar sudo make uninstall
ou não incluir um manifesto de arquivo! Uma maneira de contornar isso é criar um pacote deb após make
, o que pode ser feito com checkinstall
.