Bagaimana saya bisa mendapatkan daftar file di komputer saya yang tidak "dimiliki" oleh paket apa pun?

9

Saya sedang merenungkan menulis skrip yang melakukan ini:

  • Melewati setiap file di / usr / lib
  • Lakukan dpkg -spencarian pada setiap file.
  • Melaporkan daftar file "yatim" yang tidak termasuk dalam paket .deb.

Idenya adalah bahwa seiring waktu, saya telah menginstal banyak make installperangkat lunak dan saya ingin mendapatkan daftar file sisa dari perangkat lunak yang diinstal secara manual yang sejak itu saya hapus.

Ken Kinder
sumber
Di masa depan, pastikan semua yang Anda instal di luar sistem pengemasan terinstal ke / usr / local atau / opt. Maka Anda akan memiliki pemisahan yang jelas.
geirha

Jawaban:

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

Saya akan memperingatkan Anda sekarang: lambat.

Oli
sumber
3
Lebih cepat:find /usr/lib -type f -exec dpkg -S {} + | grep 'no path found'
αғsнιη
1
Tidak ada perbedaan pendapat di sana. Oli tahun 2012 tidak sebagus tahun 2015. Saya telah memperbaruinya sehingga hanya mengembalikan daftar file.
Oli
3

Anda dapat menjalankan perintah berikut

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

yang membandingkan daftar file /usr/libdengan daftar file yang ada di setidaknya file dalam /var/lib/dpkg/info/<NAME>.list(file yang digunakan oleh dpkg -S). The -v1pilihan akan melaporkan file ada dalam daftar pertama tetapi tidak dalam satu detik.

Di komputer saya daftar perbedaan ini memberikan lebih dari 5000 hit, jadi saya ragu itu bisa membantu.

enzotib
sumber
Bekerja sangat cepat untukku.
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
pengguna2697383
sumber
1
Saya suka man cruftdi sana, tetapi sedikit penjelasan lebih lanjut tentang cruft dan mengapa Anda merekomendasikannya akan menyenangkan! : P ;-)
Fabby
Ini tidak akan berfungsi, lebih tepat: (1) "chown: missing operand setelah 'root: cruft'". Perlu menulis: "sudo chown root: cruft / var / spool / cruft" sebagai gantinya (2) "sudo addgroup $ USER cruft" akan membutuhkan penutupan / pembukaan shell baru (relogin). (3) Memanggil cruft akan membutuhkan "sudo cruft" jika Anda ingin memeriksa semua dir.
muenalan