My main system was running low on disk space in the root partition and I wanted to clean out some of the unused software from the system. In order to do that I thought that I should find out what the least used applications on my system were and then remove them. Unfortunately I couldn’t find any existing way of doing this so it was a dead end. However, the problem remained stuck in my head and I came up with a quick and dirty way of identifying the packages and when they were last used.
The way it works is:
- Get a list of all files on the system (using locate, since its already there so why duplicate effort)
- For each file figure out what package it belongs to using dpkg-query -S
- If the file belongs to a package, get the last access time (using stat) and log it
- Once we do this for all files, sort the results.
This gives us a list of packages and the latest access date for each package (based on the latest access date for any of the files in it). Since this is a quick and dirty implementation, it is slow as molasses, doesn’t have any error checking or anything but still gets the job done. Would love to get some feedback. The code is available at: https://github.com/suramyatomar/leastUsedPackage.
The output of the script looks like:
... ... xz-utils | 2022-07-18 yelp-xsl | 2022-04-05 yelp-xsl | 2022-04-05 youtube-dl | 2022-07-17 zim | 2022-07-17 zip | 2022-07-17 zlib1g-dev | 2022-07-17 zlib1g-dev | 2022-07-17 zlib1g-dev | 2022-07-17 zstd | 2022-07-18
Feel free to try it out if you have a similar usecase. Let me know if you have any suggestions on improving the script or if you found it useful.
– Suramya