如何以编程方式确定哪些Ubuntu版本仍在受支持?

我正在编写一个脚本,需要列出所有当前支持的Ubuntu版本的列表。 如果你们中有人知道可下载的包含所有版本及其日期的文件或一个简单的列表,那就太好了。显然,它们必须是Canonical保持最新以确保脚本在未来继续工作的位置。 这应该是适用于旧版本Ubuntu的东西,比如任何支持的版本(lucid+)等。
4个回答

你可以使用launchpadlib来实现这个功能。例如,在Python中:
#!/usr/bin/env python

from launchpadlib.launchpad import Launchpad

lp = Launchpad.login_anonymously('series-support-check')
for series in lp.projects['ubuntu'].series:
    print series.name, series.supported
有关launchpad API的更多信息,请查看web services API帮助API参考文档

此外,对于需要离线获取这些信息的情况,可以使用distro-info软件包。(在lucid中,distro-info命令位于ubuntu-dev-tools软件包中。) - tumbleweed

您可以使用解析来自ubuntu-support-status的输出。这将列出哪些软件不受支持,以及其他软件的支持时间。例如,在LTS桌面上,即使桌面本身只支持三年,LAMP服务也会得到五年的支持。该命令将反映这一点。它还会向您显示宇宙、多元宇宙等软件包根本没有得到支持。 以下是一个示例:
you@ubuntu:~$ ubuntu-support-status
Support status summary of 'ubuntu':

You have 1873 packages (89.5%) supported until October 2014 (18m)

You have 14 packages (0.7%) that can not/no-longer be downloaded
You have 206 packages (9.8%) that are unsupported

Run with --show-unsupported, --show-supported or --show-all to see more details

将所有支持的名称以列表形式放置,而不是打印它们。
from launchpadlib.launchpad import Launchpad

launchpad = Launchpad.login_anonymously('series-support-check')
names = [ s.name for s in launchpad.distributions["ubuntu"].series if s.active ]

我不是Python专家,但是这个回答有什么重要的补充吗? - Caesium
筛选后跟着映射?听起来列表推导会更好:names = [ s.name for s in series_all if s.supported ] :) - Jeremy Kerr
嗯,它将名字存储在一个变量中而不是打印出来,我觉得值得一提,因为我自己也曾困惑了一段时间 :) 是的,JK的版本看起来更简洁 :) - arand

发布日期的模式并不难看出。如果你去维基百科,你会发现正常版本的支持时间为1年半,而LTS(长期支持版,每两年的四月发布)的支持时间为3年。由于每6个月就有一个新版本发布(分别在四月和十月),所以很容易根据这些信息编写一个脚本。

3不是,Ubuntu只是一个操作系统,但不同的软件包有不同的支持时间。即使在Ubuntu桌面上安装了Ubuntu Server中使用的软件包,它们也会获得更长时间的支持。这意味着你需要知道,例如,在桌面上,Python会得到5年的支持。这并不容易通过阅读维基百科来发现。 - Jo-Erlend Schinstad
此外,从Ubuntu 13.04开始,所有非LTS版本的支持期限缩短至9个月,而不再是18个月。基于当前状态的任何信息都不能保证未来的有效性。 - MestreLion