为什么我有这么多“比存档中的版本更新”的软件包,我该如何降级它们?

为什么我有这么多“比存档中的版本更新”的软件包,我该如何降级它们?

问题分为两部分:为什么我有这么多软件包显示“比档案中的版本更新”,以及如何将它们全部降级为档案中的当前版本?

背景:我运行更新程序 ( update-manager-core) 将我的 Ubuntu 14.04 服务器升级到 16.04.1,现在我有大量软件包显示“比存档中的版本更新”。我现在在安装新软件时遇到问题,需要降级所有这些软件包。

我的内容sources.list如下:

deb http://archive.ubuntu.com/ubuntu xenial main multiverse universe restricted
deb http://archive.ubuntu.com/ubuntu xenial-security main multiverse universe restricted

在我的系统上,可以找到比存档中的版本更新的完整软件包列表这里. 这是用 生成的apt-show-versions | grep "newer than version in archive"

答案1

想要降级这些软件包。

你的/etc/apt/sources.list或您的/etc/apt/sources.list.d文件夹,指向旧的 Ubuntu 版本。

首次检查,打开软件与更新,从 Unity dash,转到其他软件标签。我的看起来像这样:

在此处输入图片描述

编辑前两个条目并查看分布字段。它应该显示 xenial。如果没有,请进行编辑以显示。

在此处输入图片描述

如果这不能解决您的问题,您需要编辑您的问题并附上软件和更新/其他软件窗口的屏幕截图供我查看,因为可能还有其他条目需要检查。

答案2

有一个脚本用于降级标记为 的 Ubuntu 软件包newer than version in archive。此脚本要求您安装apt-show-versions

sudo apt-get install apt-show-versions

脚本 :

!/bin/sh

TMP=/tmp/downgrade.$$

if [ $USER != "root" ]; then
         echo "downgrade: Only root can do this"
         exit 1
fi
apt-show-versions -i
apt-show-versions |
         fgrep 'newer than version in archive' |
         cut -d' ' -f 1 >$TMP
if [ -s $TMP ]; then
         apt-show-versions -a |
         fgrep -f $TMP |
         cut -d' ' -f 1-3 |
         grep quantal$ |
         cut -d' ' -f 1-2 |
         sed -e 's/ /=/' |
         xargs aptitude -y install
fi
rm $TMP

来源

相关内容