Bagaimana menemukan file dalam sistem Debian yang tidak diinstal atau dibuat oleh dpkg?

20

Saya telah menginstal beberapa hal secara manual di masa lalu dan ingin menyingkirkan semua file terkait. Jadi, saya perlu cara untuk secara otomatis menemukan semua file (di / usr, misalnya) yang tidak termasuk dalam paket yang saat ini diinstal pada sistem Debian. Namun, saya juga perlu memfilter file yang dibuat selama instalasi paket (dengan dpkg post-install scripts dan hal-hal serupa).

Karol
sumber
1
Lihat juga pertanyaan ini: unix.stackexchange.com/questions/18038/…
Taha Jahangir

Jawaban:

25

Gunakan cruftpaket:

cruft adalah program untuk melihat sistem apa pun yang seharusnya tidak ada, tetapi ada; atau untuk apa pun yang seharusnya ada di sana, tetapi tidak.

Teddy
sumber
4

Anda dapat mencoba sesuatu seperti ini:

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 "

Dengan cara ini Anda akan mendapatkan semua file yang ada di / usr tetapi tidak ada file paket. Sebagai bidikan pertama, ini bisa membantu Anda.

rem
sumber
Saya tidak dapat menemukan cara untuk mendapatkan -L untuk membuat daftar lebih dari satu paket pada suatu waktu, tetapi Anda bisa mendapatkan efek yang sama darigrep -h "^/usr" /var/lib/dpkg/info/*.list > dpkg-files.dat
DerfK
Tidak ada --list-all-package-filespilihan.
Karol
@ DerfK: Anda bisa mendapatkan -l untuk daftar lebih dari satu paket, misalnya seperti ini:dpkg -L `aptitude search ~i -F "%p"`
Karol
Masalah dengan pendekatan ini adalah bahwa ada lebih banyak file atau tautan di / usr daripada yang sebenarnya terdaftar oleh dpkg. Sebagai contoh, / usr / bin / aptitude ada, mungkin dibuat oleh beberapa skrip pasca-instalasi, tetapi tidak terdaftar oleh dpkg. Jadi, saya kira yang saya inginkan di sini adalah daftar file yang diinstal atau dibuat dengan menginstal paket apa pun (akan mengubah pertanyaan).
Karol
@ Karol: Sumber file lainnya bisa berupa pengalihan dan alternatif. Output dalam bentuk kalimat tetapi Anda dapat melihat pengalihan dengan dpkg-divert --listsebagai root (Ini biasanya diberi akhiran). Alternatif sedikit lebih sulit, format file di / var / lib / dpkg / alternatif / canggung dan update-alternativeshanya memberi tahu saya tentang segalanya TETAPI nama tautan. find /usr -lname '/etc/alternatives/*'mungkin cara termudah untuk mendapatkannya.
DerfK