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).


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.


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.