Come posso ottenere un elenco di file sul mio computer che non sono "di proprietà" di alcun pacchetto?


9

Sto pensando di scrivere una sceneggiatura che faccia questo:

  • Passa attraverso ogni file in / usr / lib
  • Esegue una dpkg -sricerca su ciascun file.
  • Riporta un elenco di file "orfani" non appartenenti a nessun pacchetto .deb.

L'idea è che nel tempo ho installato un sacco di make installsoftware e mi piacerebbe ottenere un elenco di file rimanenti dal software installato manualmente che ho eliminato da allora.


In futuro, assicurati che tutto ciò che installi al di fuori del sistema di packaging venga installato su / usr / local o / opt. Quindi avrai una chiara separazione.
geirha,

Risposte:


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

Ti avvertirò ora: è lento.


3
È più veloce:find /usr/lib -type f -exec dpkg -S {} + | grep 'no path found'
αғsнιη il

1
Non c'è disaccordo lì. Oli del 2012 non era buono come quello del 2015. L'ho aggiornato in modo che restituisca solo un elenco di file.
Oli

3

È possibile eseguire il comando seguente

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

che confronta l'elenco dei file /usr/libcon l'elenco dei file presenti in almeno un file /var/lib/dpkg/info/<NAME>.list(i file utilizzati da dpkg -S). L' -v1opzione riporta i file presenti nel primo elenco ma non nel secondo.

Sulla mia macchina questo elenco di differenze dà più di 5000 risultati, quindi dubito che possa essere di aiuto.


Funziona molto velocemente per me.
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

1
Mi piace l'interno man cruft, ma un po 'più di spiegazione sulla cruft e perché mi consiglia che sarebbe bello! : P ;-)
Fabby

Questo non funzionerà, più precisamente: (1) "chown: operando mancante dopo 'root: cruft'". È necessario scrivere: "sudo chown root: cruft / var / spool / cruft" invece (2) "sudo addgroup $ USER cruft" richiederà la chiusura / apertura di una nuova shell (eseguire nuovamente il login). (3) La chiamata di cruft richiederà "sudo cruft" se si desidera ispezionare tutte le directory.
muenalan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.