How can I get a list of files on my computer that are not "owned" by any package?
I'm contemplating writing a script that does this:
- Goes through each file in /usr/lib
- Does a
dpkg -s
search on each file. - Reports a list of "orphan" files not belonging to any .deb package.
The idea is that over time, I've installed a lot of make install
software and I'd like to get a list of leftover files from manually installed software I've since deleted.
Solution 1:
find /usr/lib -type f -exec dpkg -S {} + 2>&1 >/dev/null | sed -r 's/^[^/]+//'
I'll warn you now: it's slow.
Solution 2:
You can run the following command
join -t '' -v1 <(find /usr/lib | sort) \
<(grep -h /usr/lib /var/lib/dpkg/info/*.list | sort -u)
that compare the list of files in /usr/lib
with the list of files present in at least a file in /var/lib/dpkg/info/<NAME>.list
(the files used by dpkg -S
). The -v1
option would report files present in the first list but not in the second one.
On my machine this difference list gives more than 5000 hits, so I doubt it could be of any help.
Solution 3:
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