我想通过支持5年的软件包来了解我的系统在多大程度上得到LTS支持,以及哪些软件包不受支持。我可以忽略一些不支持5年的软件包,因为有些很少使用或者很不可能出现(安全)问题。
我认为这很有用,因为人们可以得到一份报告并得出结论,例如:“我的系统是100%的LTS”,“由于X、Y、Z软件包,我的系统只有99%的LTS”,“由于使用了KDE,我的系统现在只有50%的LTS”。
与我在问题“12.04 LXDE是否具有LTS?”中的回答相关,我发布了一种查看Ubuntu哪些软件包拥有五年支持的方法。例如:
我可以编写一个脚本来获取所有软件包的信息,但是
有2700多个已安装的软件包,大约需要70分钟(!)。
我该如何加快速度并为系统上所有不再受支持五年的软件包生成报告?
我希望使用一个简单的apt-* shell命令来在简单的shell脚本中使用。如果需要更高级的脚本编程(比如使用Python),也可以。最终,我想发布一个(小型)脚本,以便轻松快速地创建一个系统报告。
注:我对于特定版本的Ubuntu是否提供LTS没有兴趣 - 这只是关于软件包。你可以在系统上混合使用LTS和非LTS软件包。
我认为这很有用,因为人们可以得到一份报告并得出结论,例如:“我的系统是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
<no output>
我可以编写一个脚本来获取所有软件包的信息,但是
apt-cache
命令非常慢。real 0m1.535s
user 0m1.484s
sys 0m0.036s
有2700多个已安装的软件包,大约需要70分钟(!)。
我该如何加快速度并为系统上所有不再受支持五年的软件包生成报告?
我希望使用一个简单的apt-* shell命令来在简单的shell脚本中使用。如果需要更高级的脚本编程(比如使用Python),也可以。最终,我想发布一个(小型)脚本,以便轻松快速地创建一个系统报告。
注:我对于特定版本的Ubuntu是否提供LTS没有兴趣 - 这只是关于软件包。你可以在系统上混合使用LTS和非LTS软件包。
xargs
将软件包作为参数传递给apt-cache
在这里起到了关键作用。谢谢!为了确保不会超过xargs
的参数限制,我会在我的脚本中使用Bash参数限制检查。 - gertvdijkSupported:
字段的软件包。对我来说不起作用。 - ignisxargs
使得原问题中给出的解决方案变得更快。如果你想列出单独的软件包,你需要一个更复杂的脚本。 - Gerhard Burgerdpkg -l | grep 'ii' | awk ' {print $2}' | xargs apt-cache show | grep 'Package:\|Supported:' | awk 'BEGIN{lts=false;p="Non-LTS packages:"} {if ($1 == "Package:"){ if (lts == false){print p}; p=$2 } else if ($0 == "Supported: 5y"){lts=true}} END {if (lts == false) print p}'
- Gerhard Burger