如何获得有效安装的非LTS包列表?

我想看看我的系统在多大程度上受LTS支持,通​​过5年支持哪些包,哪些不支持。 我可以忽略一些非5yr支持的软件包,因为有些软件包很少使用或者不太可能涉及(安全性)问题。

我认为这很有用,因为人们可以得到报告并得出结论,例如“我的系统是100%LTS”“由于包X,Y,Z,我的系统只有99%LTS”“由于使用KDE,我的系统现在是50%LTS“

与我在问题中的答案相关12.04 LXDE是否有LTS? ,我发布了一种方法,看看Ubuntu的哪些软件包具有五年的支持。 例如:

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

我可以编写一个脚本来获取所有包的所有信息,但apt-cache命令非常慢:

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

安装了2700多个软件包,大约需要70分钟(!)。

如何加速处理并获取系统中所有非5yr支持的软件包的报告?

我更喜欢一个简单的apt-* shell命令,用于简单的shell脚本。 如果它需要更高级的脚本,比如进入Python,这也很好。 最后,我想发布一个(小)脚本,以便轻松快速地创建系统报告。

注意:我对Ubuntu的特定风格是否提供LTS的讨论不感兴趣 – 这实际上只是包。 您可以在系统上混合使用LTS和非LTS包。

我不知道你的系统,但这就是我做的:

 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 

好不好吧?

包裹总数:

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

我正在运行AMD E-350,这不是一个非常快速的CPU …

编辑:xargs的最大参数数量:

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

这里有一个快速的单行程序,可以使用grep-dctrl (1)为您提供低于5年的完整LTS周期的程序包列表:

 sudo apt-get install dctrl-tools dpkg -l | grep '^ii' | awk ' {print $2}' | xargs apt-cache show | grep-dctrl -v -FSupported --exact-match -nsPackage 5y | sort | uniq 

您可以轻松修改它以查找不同的支持期。