Dalam sistem saya, saya memiliki file yang bukan milik paket apa pun, itu milik saya atau dari program yang dikompilasi yang diinstal make install
. Bagaimana saya bisa menemukan semua file yang bukan milik paket apa pun?
sumber
Dalam sistem saya, saya memiliki file yang bukan milik paket apa pun, itu milik saya atau dari program yang dikompilasi yang diinstal make install
. Bagaimana saya bisa menemukan semua file yang bukan milik paket apa pun?
In /var/lib/dpkg/info
adalah .list
file teks yang mencantumkan semua file yang terkandung dalam setiap paket¹ yang diinstal melalui manajer paket Debian.
Menemukan semua file di sistem file yang tidak cocok dengan entri apa pun di sana dapat dicapai dengan sesuatu yang naif seperti ini:
find / -xdev -type f \( -exec grep -xq "{}" /var/lib/dpkg/info/*.list \; -or -print \)
Ini jelas akan memakan waktu yang sangat lama karena seluruh sistem file akan dipindai. Jika Anda menggunakan partisi yang berbeda untuk direktori sistem (seperti /usr
atau /var
), tentukan setelah partisi awal /
.
Peringatan: Itu tidak termasuk file yang dibuat oleh skrip paket. Misalnya:
/etc/hosts.allow
tidak terdaftar di mana pun tetapi mungkin berasal dari libwrap0
yang mungkin membuatnya, jika file itu tidak ada pada saat instalasi paket..pyc
file (dikompilasi perpustakaan Python), .elc
file (dikompilasi pustakawan Emacs Lisp), dll.
find: argument list too long
/var/lib/dpkg/info/*.list
- kueri di atas perlu ditulis ulang di bawah beberapa prinsip lain.Versi yang lebih efisien solusi @ Patrice , menggunakan shell dengan dukungan untuk substitusi proses (
bash
, AT&Tksh
,zsh
):Seperti solusi Patrice, ini mengasumsikan tidak ada jalur file yang berisi karakter baris baru.
sumber
locate
basis data lebih cepat daripada menjalankanfind
?locate \* | grep -v "^/home/"
- Juga memiliki manfaat melihat ke dalam/boot/
dan partisi sistem lainnya.Karena Anda menandai Anda, pertanyaan dengan
debian
pilihan yang jelas belum disebutkan adalah untuk digunakancruft-ng
jika Anda tidak memerlukan fleksibilitas ataucruft
jika Anda tidak ingin mencari melalui seluruh sistem / terletakb.sumber
Anda juga dapat menggunakan subtitusi proses &
grep
&find
. Perhatikan bahwagrep
digunakan dua kali untuk memfilter hanya jalur yang relevan dari/var/lib/dpkg/info
untuk menghemat beberapa detik jika Anda mencari file di direktori tertentu.sumber