मैं अपने कंप्यूटर पर उन फ़ाइलों की सूची कैसे प्राप्त कर सकता हूं जो किसी भी पैकेज के "स्वामित्व" में नहीं हैं?


9

मैं एक स्क्रिप्ट लिखने पर विचार कर रहा हूं जो ऐसा करती है:

  • / Usr / lib में प्रत्येक फ़ाइल के माध्यम से जाता है
  • dpkg -sप्रत्येक फ़ाइल पर एक खोज करता है ।
  • किसी भी .deb पैकेज से संबंधित "अनाथ" फ़ाइलों की सूची की रिपोर्ट नहीं करता है।

विचार यह है कि समय के साथ, मैंने बहुत सारे make installसॉफ़्टवेयर स्थापित किए हैं और मैं मैन्युअल रूप से इंस्टॉल किए गए सॉफ़्टवेयर से बचे हुए फ़ाइलों की एक सूची प्राप्त करना चाहता हूं।


भविष्य में, सुनिश्चित करें कि आपके द्वारा पैकेजिंग सिस्टम के बाहर जो कुछ भी इंस्टॉल किया गया है, वह / usr / लोकल या ऑप्ट में इंस्टॉल हो जाता है। तब आपके पास एक स्पष्ट अलगाव होगा।
जियरा

जवाबों:


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

मैं आपको अभी चेतावनी देता हूँ: यह धीमा है।


3
यह तेज़ है:find /usr/lib -type f -exec dpkg -S {} + | grep 'no path found'
αғsнιη

1
वहां कोई असहमति नहीं। 2012 की ओली 2015 की तरह अच्छी नहीं थी। मैंने इसे अपडेट किया है इसलिए यह केवल फाइलों की सूची देता है।
ओली

3

आप निम्न कमांड चला सकते हैं

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

फ़ाइलों की सूची की तुलना /usr/libकम से कम एक फ़ाइल /var/lib/dpkg/info/<NAME>.list(द्वारा उपयोग की जाने वाली फ़ाइलें dpkg -S) में मौजूद फ़ाइलों की सूची से करें । -v1विकल्प पहली सूची में मौजूद है, लेकिन दूसरा एक में नहीं फ़ाइलों रिपोर्ट करेंगे।

मेरी मशीन पर यह अंतर सूची 5000 से अधिक हिट देती है, इसलिए मुझे संदेह है कि यह किसी भी मदद का हो सकता है।


मेरे लिए वास्तव में उपवास करता है।
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
मुझे man cruftवहाँ पसंद है , लेकिन cruft पर एक छोटे से अधिक स्पष्टीकरण और आप इसे क्यों अच्छा होगा की सलाह देते हैं! : P ;-)
Fabby

यह काम नहीं करेगा, अधिक सटीक: (1) "चाउन: लापता ऑपरेंड '' रूट: क्रॉफ्ट 'के बाद"। लिखने की आवश्यकता है: "sudo chown root: cruft / var / spool / cruft" के बजाय (2) "sudo addgroup $ USER cruft" को नए शेल (relogin) को बंद करने / खोलने की आवश्यकता होगी। (3) यदि आप सभी डायरियों का निरीक्षण करना चाहते हैं, तो क्रूफ को कॉल करने के लिए "सुडो क्रॉफ्ट" की आवश्यकता होगी।
मूएनालन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.