我刚刚按照Ubuntu Backports激活了手动反向移植,但我有两个问题。如何在命令行中(例如apt-cacher
或aptitude
):
- 列出具有可用反向升级的已安装软件包?(以前,我使用
apt-show-versions -u
过可升级的软件包) - 列出所有可用的backport软件包(是否已安装)?
我刚刚按照Ubuntu Backports激活了手动反向移植,但我有两个问题。如何在命令行中(例如apt-cacher
或aptitude
):
apt-show-versions -u
过可升级的软件包)Answers:
该信息在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软件包,以及已安装的版本(如果已安装)。
aptitude search '~i ~Abackports ?not(~S ~i ~Abackports)'
。这解决了1(假设反向端口版本总是更高)。如果没有您的帮助,我也不会得到它,因此,如果您想让它成为答案,我会选择它
编辑:经过一番试验,我找到了一个对我来说完美的解决方案!它仅列出-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