Thursday, March 17, 2016

scripts - How do I get a list of non-LTS packages installed efficiently?


I'd like to see to what extent my system is LTS-supported by means of what packages are supported for 5 years and which are not. I could disregard some non-5yr-supported packages, as some are rarely used or very unlikely to get into (security) issues.


I think this is useful as one can get a report and draw a conclusion, e.g. "my system is 100% LTS", "due to packages X,Y,Z, my system is just 99% LTS", "due to the use of KDE, my system is now 50% LTS".


As related to my answer in the question Does 12.04 LXDE have LTS?, I posted a way to see which packages of Ubuntu feature five years of support. E.g.:


$ apt-cache show unity | grep ^Supported
Supported: 5y
$ apt-cache show lxde-core | grep ^Supported


I could write a script to get all information for all the packages, however, the apt-cache commands are horribly slow:


real    0m1.535s
user 0m1.484s
sys 0m0.036s

With 2700+ packages installed, this would take roughly 70 minutes (!).


How can I speed up things and get a report for all non-5yr-supported packages on my system?


I'd prefer a simple apt-* shell command for the use in a simple shell script. If it would require more advanced scripting like going into Python, this is fine too. Eventually, I would like to release a (small) script to create a report on a system easily and quickly.


Note: I'm not interested in the discussion about whether or not a specific flavour of Ubuntu provides LTS or not - this is really just packages. You can just mix LTS and non-LTS packages on a system.



I don't know about your system, but this is what I did:


time dpkg -l | grep 'ii' |  awk ' {print $2}' | xargs apt-cache show | grep '^Supported:' | grep -v '5y' | wc -l
158
real 0m27.549s
user 0m5.580s
sys 0m21.701s

doesn't seem so bad right?


The total number of packages:


dpkg -l | grep 'ii' | wc -l
2602

I am running a AMD E-350 which isn't exactly a blazing fast cpu...


Edit: maximum number of arguments to xargs:


xargs --show-limits
...
POSIX upper limit on argument length (this system): 2091826
...

No comments:

Post a Comment

11.10 - Can't boot from USB after installing Ubuntu

I bought a Samsung series 5 notebook and a very strange thing happened: I installed Ubuntu 11.10 from a usb pen drive but when I restarted (...