Jak znaleźć pliki w systemie Debian niezainstalowanym lub utworzonym przez dpkg?

20

W przeszłości instalowałem niektóre rzeczy ręcznie i chciałbym usunąć wszystkie powiązane pliki. Potrzebuję więc sposobu, aby automatycznie znaleźć wszystkie pliki (na przykład w / usr), które nie są zawarte w żadnym z pakietów aktualnie zainstalowanych w systemie Debian. Jednak musiałbym również odfiltrować pliki, które są tworzone podczas instalacji pakietu (przez skrypty poinstalacyjne dpkg i podobne rzeczy).

Karol
źródło
1
Zobacz także to pytanie: unix.stackexchange.com/questions/18038/…
Taha Jahangir

Odpowiedzi:

25

Użyj cruftpakietu:

cruft to program do sprawdzania w systemie wszystkiego, co nie powinno tam być, ale jest; lub cokolwiek, co powinno tam być, ale nie ma.

Miś
źródło
4

Możesz spróbować czegoś takiego:

dpkg -L --list-all-package-files | grep "^/usr" > dpkg-files.dat   **(don't know the dpkg option "--list-all-package-files", read mand dpkg)**
find /usr -type f -o -type l > all-usr-files.dat
sort dpkg-files.dat all-usr-files.dat | uniq -c | grep " 1 "

W ten sposób otrzymasz wszystkie pliki, które znajdują się w / usr, ale nie żaden plik pakietu. Jako pierwszy strzał może ci to pomóc.

rems
źródło
Nie mogę znaleźć żadnego sposobu, aby -L wyświetlał więcej niż jedną paczkę na raz, ale możesz uzyskać ten sam efekt odgrep -h "^/usr" /var/lib/dpkg/info/*.list > dpkg-files.dat
DerfK
Nie ma --list-all-package-filesopcji.
Karol
@DerfK: Możesz uzyskać -l, aby wyświetlić więcej niż jedną paczkę, na przykład w ten sposób:dpkg -L `aptitude search ~i -F "%p"`
Karol
Problem z tym podejściem polega na tym, że w / usr jest więcej plików lub linków niż faktycznie wymienionych przez dpkg. Na przykład istnieje / usr / bin / aptitude, prawdopodobnie utworzony przez jakiś skrypt poinstalacyjny, ale nie jest wymieniony przez dpkg. Myślę, że chcę tutaj listy plików zainstalowanych lub utworzonych przez zainstalowanie dowolnego pakietu (zmieni pytanie).
Karol
@Karol: Innymi źródłami plików mogą być dywersje i alternatywy. Dane wyjściowe są w formie zdań, ale można zobaczyć dywizje dpkg-divert --listjako root (zazwyczaj mają one przyrostek). Alternatywy są nieco trudniejsze, format pliku w / var / lib / dpkg / alternatives / jest niewygodny i update-alternativesmówi mi prawie wszystko, ALE nazwa łącza. find /usr -lname '/etc/alternatives/*'jest prawdopodobnie najłatwiejszym sposobem na ich zdobycie.
DerfK