如何列出可用的反向移植升级

如何列出可用的反向移植升级

我刚刚关注Ubuntu 反向移植激活手动反向移植,我有几个问题。如何在命令行中(例如apt-cacheraptitude):

  1. 列出已安装的具有可用反向移植升级的软件包?(之前,我用于apt-show-versions -u可升级的软件包)
  2. 列出所有可用的反向移植软件包(无论是否安装)?

答案1

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

    aptitude search '?and(~i, ~Araring-backports)'
    
  2. 列出所有可用的反向移植包(无论是否安装)

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

答案2

编辑:经过一些试验,我找到了一个非常适合我的解决方案!它仅列出 -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

这将模拟升级并列出将要升级的软件包。但也包括对 backport 的升级(我认为也显示了正常升级)。

您还可以添加选项-V来显示软件包将升级到的版本。


要查看 backport 中软件包的更改日志,请使用:

apt-get changelog -t $(lsb_release -sc)-backports PACKAGE_NAME

答案3

此信息可在 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)

它列出了所有可用的反向移植包,以及已安装的版本(如果已安装)。

相关内容