Como posso obter uma lista de arquivos no meu computador que não pertencem a nenhum pacote?

9

Estou pensando em escrever um script que faça isso:

  • Percorre cada arquivo em / usr / lib
  • Faz uma dpkg -spesquisa em cada arquivo.
  • Relata uma lista de arquivos "órfãos" que não pertencem a nenhum pacote .deb.

A idéia é que, com o tempo, instalei muitos make installsoftwares e gostaria de obter uma lista dos arquivos restantes dos softwares instalados manualmente que excluí desde então.

Ken Kinder
fonte
No futuro, verifique se tudo o que você instala fora do sistema de empacotamento é instalado em / usr / local ou / opt. Então você terá uma separação clara.
Geirha

Respostas:

8
find /usr/lib -type f -exec dpkg -S {} + 2>&1 >/dev/null | sed -r 's/^[^/]+//'

Vou avisá-lo agora: é lento.

Oli
fonte
3
É mais rápido:find /usr/lib -type f -exec dpkg -S {} + | grep 'no path found'
αғsнιη
1
Não há desacordo lá. A Oli de 2012 não foi tão boa quanto a de 2015. Eu o atualizei para retornar apenas uma lista de arquivos.
Oli
3

Você pode executar o seguinte comando

join -t '' -v1 <(find /usr/lib | sort) \
               <(grep -h /usr/lib /var/lib/dpkg/info/*.list | sort -u)

que comparam a lista de arquivos /usr/libcom a lista de arquivos presentes em pelo menos um arquivo /var/lib/dpkg/info/<NAME>.list(os arquivos usados ​​por dpkg -S). A -v1opção reportaria os arquivos presentes na primeira lista, mas não na segunda.

Na minha máquina, essa lista de diferenças oferece mais de 5000 ocorrências, então duvido que possa ser de alguma ajuda.

enzotib
fonte
Funciona muito rápido para mim.
User1202136
2
sudo aptitude install cruft
man cruft
sudo addgroup cruft
sudo chmod g+rwx /var/spool/cruft
sudo chown root:cruft /var/spool/cruft
sudo addgroup $USER cruft
cruft -r cruftreport
sudo chown root:root /var/spool/cruft
less cruftreport
user2697383
fonte
1
Eu gosto do man cruftlá, mas um pouco mais de explicação sobre cruft e por que você recomenda que seria legal! : P ;-)
Fabby
Isso não funcionará, mais preciso: (1) "chown: operando ausente após 'root: cruft'". É necessário escrever: "sudo chown root: cruft / var / spool / cruft" (2) "sudo addgroup $ USER cruft" exigirá o fechamento / abertura de um novo shell (logon). (3) Chamar cruft exigirá "sudo cruft" se você quiser inspecionar todos os diretórios.
muenalan 8/17/17