Bilgisayarımdaki herhangi bir pakete “sahip olmayan” dosyaların listesini nasıl alabilirim?


9

Bunu yapan bir komut dosyası yazmayı düşünüyorum:

  • / Usr / lib içindeki her dosyayı inceler
  • Bir Does dpkg -sher dosya üzerinde arama.
  • Herhangi bir .deb paketine ait olmayan "yetim" dosyaların listesini bildirir.

Fikir, zamanla, çok fazla make installyazılım yükledim ve o zamandan beri sildiğim manuel olarak yüklenen yazılımdan kalan dosyaların bir listesini almak istiyorum.


Gelecekte, paketleme sistemi dışında kurduğunuz her şeyin / usr / local veya / opt dizinine yüklendiğinden emin olun. O zaman net bir ayrılığa sahip olacaksınız.
geirha

Yanıtlar:


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

Seni şimdi uyaracağım: yavaş.


3
Daha hızlı:find /usr/lib -type f -exec dpkg -S {} + | grep 'no path found'
αғsнιη

1
Orada anlaşmazlık yok. 2012'nin Oli'si 2015'inki kadar iyi değildi. Bunu güncelledim, bu yüzden sadece bir dosya listesi döndürüyor.
Oli

3

Aşağıdaki komutu çalıştırabilirsiniz

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

dosya /usr/liblistesini en az bir dosyada /var/lib/dpkg/info/<NAME>.list(tarafından kullanılan dosyalar dpkg -S) bulunan dosyaların listesiyle karşılaştıran . Bu -v1seçenek, ilk listede bulunan ancak ikinci listede olmayan dosyaları bildirir.

Makinemde bu fark listesi 5000'den fazla isabet veriyor, bu yüzden herhangi bir yardımcı olabileceğinden şüpheliyim.


Benim için gerçekten hızlı çalışıyor.
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

1
Ben man cruftorada gibi , ama cruft biraz daha fazla açıklama ve neden tavsiye ederim güzel olurdu! : P ;-)
Fabby

Bu işe yaramayacak, daha kesin: (1) "chown:" root: cruft "den sonra işlenen eksik." Yazılması gerekenler: "sudo chown root: cruft / var / spool / cruft" yerine (2) "sudo addgroup $ USER cruft" yeni kabuğun kapatılmasını / açılmasını gerektirecek (yeniden giriş). (3) Tüm direkleri incelemek istiyorsanız, kaba arama yapmak için "sudo cruft" gerekir.
muenalan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.