![如何列出可用的反向移植升级](https://linux22.com/image/968071/%E5%A6%82%E4%BD%95%E5%88%97%E5%87%BA%E5%8F%AF%E7%94%A8%E7%9A%84%E5%8F%8D%E5%90%91%E7%A7%BB%E6%A4%8D%E5%8D%87%E7%BA%A7.png)
我刚刚关注Ubuntu 反向移植激活手动反向移植,我有几个问题。如何在命令行中(例如apt-cacher
或aptitude
):
- 列出已安装的具有可用反向移植升级的软件包?(之前,我用于
apt-show-versions -u
可升级的软件包) - 列出所有可用的反向移植软件包(无论是否安装)?
答案1
列出已安装的具有可用反向移植升级的软件包
aptitude search '?and(~i, ~Araring-backports)'
列出所有可用的反向移植包(无论是否安装)
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)
它列出了所有可用的反向移植包,以及已安装的版本(如果已安装)。