Como encontrar arquivos que não pertencem a nenhum pacote?

9

No meu sistema eu tenho arquivos que não pertencem a nenhum pacote, eles são meus ou de programas compilados instalados com make install . Como posso encontrar todos os arquivos que não pertencem a nenhum pacote?

    
por geaplanet 02.09.2014 / 06:41

2 respostas

9

Em /var/lib/dpkg/info estão .list arquivos de texto que listam todos os arquivos contidos em cada pacote¹ instalado através do gerenciador de pacotes do Debian.

Encontrar todos os arquivos no sistema de arquivos que não correspondam a nenhuma entrada pode ser obtido com algo ingênuo como este:

find / -xdev -type f \( -exec grep -xq "{}" /var/lib/dpkg/info/*.list \; -or -print \)

Isso obviamente levará muito tempo, já que todo o sistema de arquivos será escaneado. Se você usar partições diferentes para diretórios do sistema (como /usr ou /var ), especifique-as após o / inicial.

Atenção: Isso não inclui arquivos criados por scripts de pacotes. Por exemplo:

  • /etc/hosts.allow não está listado em nenhum lugar, mas pode vir de libwrap0 que possivelmente o criou, se esse arquivo não existisse no momento da instalação do pacote.
  • Muitos arquivos são compilados durante a instalação, por exemplo, .pyc files (bibliotecas Python compiladas), .elc files (compilados pelo Emacs Lisp), etc.
por 02.09.2014 / 09:46
5

Uma versão mais eficiente da @ solução de Patrice , usando um shell com suporte para substituição de processo ( bash , AT & ; T ksh , zsh ):

(
  export LC_ALL=C
  comm -23 <(find / -xdev -type f | sort) \
           <(sort -u /var/lib/dpkg/info/*.list)
)

Como a solução de Patrice, ele supõe que nenhum caminho de arquivo contém caracteres de nova linha.

    
por 19.01.2016 / 16:18