如何列出可用的后移升级

我刚刚按照Ubuntu Backports的步骤激活了手动后备端口,并且有几个问题。我如何在命令行中(例如apt-cacheraptitude):

  1. 列出已安装的可用后备升级程序包?(之前,我使用apt-show-versions -u查看可升级的软件包)
  2. 列出所有可用的后备程序包(已安装或未安装)?
3个回答

列出已安装的有可用后移升级的软件包。
aptitude search '?and(~i, ~Araring-backports)'
列出所有可用的后移软件包(无论是否已安装)。
aptitude search '~Abackports ?not(~S ~i ~Abackports)'

cat /dev/null 是更快的方式 /s - CervEd

编辑:经过一些尝试,我找到了一个完美适合我的解决方案!它只列出在“后备”存储库中有更新版本的软件包,而不多列出其他解决方案所列出的额外软件包。
要列出可用的后备更新,请运行以下命令:
aptitude search -t $(lsb_release -sc)-backports '~U ~Abackports'

如果你想让列表显示当前和更新的版本,那么请运行以下命令:
aptitude search -t $(lsb_release -sc)-backports -F '%p %v -> %V' '~U ~Abackports'

这将显示类似于这样的内容:

nvidia-settings               331.20-0ubuntu -> 346.59-0ubuntu
screen                        4.1.0~20120320 -> 4.2.1-2~ubuntu
yelp-xsl                      3.10.1-1       -> 3.12.0-1~ubunt

如果你不想记住这个命令,可以将以下内容添加到你的~/.bashrc文件中:
alias apt-list-backports="aptitude search -t $(lsb_release -sc)-backports -F '%p %v -> %V' '~U ~Abackports'"

现在你只需要写 apt-list-backports

原始答案

刚刚找到另一种方法:

apt-get upgrade -s -t $(lsb_release -sc)-backports

这将模拟一个升级并列出将要升级的软件包。 但是,此处也包括针对后备库的升级(我认为普通升级也会显示)。
您还可以添加选项-V来显示软件包将要升级到的版本。
要查看后端口的软件包变更日志,请使用以下命令:
apt-get changelog -t $(lsb_release -sc)-backports PACKAGE_NAME

这些信息可以在Synaptic中找到,它不是默认安装的,但可以通过以下方式获取:
sudo apt-get install synaptic

在左侧边栏中选择,可以按照软件包的来源进行浏览,例如raring-backports/universe,以及本地安装的软件包。
如果您对命令行解决方案感兴趣,我拼凑了一个简单粗暴的Python脚本来列出后备软件包,但不幸的是它运行速度相对较慢。
from __future__ import print_function

import apt

def backport_version(package):
  if package.versions is None:
    return False
  for version in package.versions:
    for origin in version.origins:
      if origin.archive.endswith("backports"):
        return version.version
  return None

with apt.Cache() as cache:
  for package in cache:
    version = backport_version(package)
    if version is not None:
      print(package.fullname, version)
      if package.is_installed:
        print("    Installed:", package.installed.version)

它列出了所有可用的后移软件包,并显示已安装的版本(如果已安装)。

谢谢,你让我意识到在Python中使用apt是非常有用的。对此,如果我的声望允许的话,我会给你点赞...但我更希望找到一些内置的方法。当官方建议手动回溯时,我想肯定还有其他更自然的获取这些信息的方式。 - ricab
神经元方法可以回答这个问题,但我更希望得到基于apt-cache/aptitude的解决方案(命令行)。 - ricab
你可以尝试使用aptitude来搜索Araring-backports这样的内容。你可以查看http://www.algebraicthunk.net/dburrows/projects/aptitude/doc/en/ch02s03s05.html#tableSearchTermQuickGuide并尝试不同的选项。 - Jason Conti
1或者:使用aptitude search '?and(~i, ~Araring-backports)'; 命令来获取已安装的后向端口包。 - Jason Conti
3非常感谢所有的回复。你提供的解决方案解决了第二个问题。至于第一个问题,我不得不再进行一些研究才找到答案:aptitude search '~i ~Abackports ?not(~S ~i ~Abackports)'。这个解决方案解决了第一个问题(假设后备版本总是更高)。没有你的帮助,我可能无法找到答案,所以如果你愿意,可以将它作为答案,我会选择它。 - ricab
1可能想要添加自己的答案并选择它。我主要只是指出了适应能力文档。 - Jason Conti