如何列出可用的反向升级


12

我刚刚按照Ubuntu Backports激活了手动反向移植,但我有两个问题。如何在命令行中(例如apt-cacheraptitude):

  1. 列出具有可用反向升级的已安装软件包?(以前,我使用apt-show-versions -u过可升级的软件包)
  2. 列出所有可用的backport软件包(是否已安装)?

Answers:


14
  1. 列出具有可用反向升级的已安装软件包

    aptitude search '?and(~i, ~Araring-backports)'
    
  2. 列出所有可用的backport软件包(是否安装)

    aptitude search '~Abackports ?not(~S ~i ~Abackports)'
    

6

该信息在Synaptic中可用,默认情况下未安装,但可以通过以下方式获得:

sudo apt-get install synaptic

在左侧边栏中选择Origin将允许按软件包的来源(例如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)

它列出了所有可用的backport软件包,以及已安装的版本(如果已安装)。


谢谢,您提高了我使用python的意识,这绝对是非常有用的。为此,如果我的代表允许,我会投票赞成你……但是我宁愿寻找内置的东西。当官方线路要进行手动反向移植时,我想肯定会有一些更自然的方式来获取此信息
ricab

突触法会回答这个问题,但是我想寻找更多基于apt-cache / aptitude解决方案(cmd行)
ricab

1
或者:才能搜索'?and(〜i,〜Araring-backports)'; 获得安装的反向移植软件包
Jason Conti

3
感谢所有的答复。你的才能解决方案解决了2。1,我不得不研究多一点去:aptitude search '~i ~Abackports ?not(~S ~i ~Abackports)'。这解决了1(假设反向端口版本总是更高)。如果没有您的帮助,我也不会得到它,因此,如果您想让它成为答案,我会选择它
ricab

1
可能想添加您自己的答案并选择它。我主要只是指出了aptitude文档。
詹森·孔蒂2013年

4

编辑:经过一番试验,我找到了一个对我来说完美的解决方案!它仅列出-backports存储库中具有较新版本的软件包,仅此而已(其他解决方案列出了其他软件包。

要列出可用的反向端口更新,请运行以下命令:

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.