解决Canonical越来越差的质量检查的策略?


13

我的installed (local or obsolete)类别已满,因为Canonical最近一直在发布更新,然后将其撤回。最近发生了两个内核,cups今天早上又发生了。我已经使用Ubuntu大约三年了,我不记得这种情况像今年那样频繁。

那么,如何合理处理呢?

我考虑过每周仅安装一次更新,但是这并不能防止在我检查该周之前抓住它们发布的错误更新。

仅在周末安装更新的好策略吗?似乎周末很少发布系统更新。我想他们可以在星期五下午推送一个糟糕的更新,而在星期一早上删除它。

或者,以某种方式不安装更新,直到将它们推出某个时间段(例如两天)?有自动化的方法吗?

编辑:受影响的系统之一运行带有linux-generic内核的Lubuntu 16.04 ,另一个运行带有linux-generic-hwe-16.04内核的Lubuntu 16.04 。两者都受到cups2.13-4ubuntu0.2版本更新的影响,该更新已于2017年3月27日推出,然后撤回。该linux-generic计算机收到的内核更新版本4.4.0.67.12随后被撤回。此更新还孤立了snapd2.23.1版。linux-generic-hwe-16.04计算机收到了内核版本4.8.0.42.14,然后将其孤立了。


2
感谢您澄清版本。 我想知道您是否正在使用LTS版本,而中间版本(对我而言)主要是用于测试许多可能使其成为LTS的更改。就我所关注的LTS版本而言,我还没有足够注意观察到突出的错误。我定期更新。我不时注意到一些小问题,这些问题显然是开发人员一直在处理的问题。您可能会考虑将重点放在安全系统的安全更新上,并允许大胆的人处理日常更改。
LD詹姆斯

1
@fkraiem是的,在收到通知后不久,我已经看到两个最近的内核版本被撤消了。有趣的是,我决定稍后再进行更新,当我回来时,它们就消失了!
heynnema

我之所以使用关闭Windows自动更新,部分原因是您最近在Ubuntu中的经验。我注意到最近似乎每天都有更新。也许由于我现在没有错误,我应该关闭我的系统。
WinEunuuchs2Unix

他们是否跳过基本portons StableReleaseUpdates更加频繁,特别是对核心打包?AFAIK尚未宣布,将讨论放在ubuntu-devel邮件列表中将是一个适当的措施。
Gunnar Hjalmarsson

Answers:


2

激烈的选择是改用Debian Stable,而不是任何* buntu或其派生产品,因为Debian Stable已经完成了完整的QA流程,而Ubuntu衍生自Debian Testing,在变得稳定之前还有一段路要走。

几乎所有知识都是可以直接转让的,但是Debian不会为您提供所有最新的化妆品“风铃”。但是,它的存储库中有更多软件包...

在大约5年前,我从Kubuntu切换到Debian(就KDE而言),遇到了类似的问题。但这取决于个人选择。


1
那是很好的信息。我最终通过设置自己的本地镜像来处理它,该镜像实际上每天都会下载所有更新。我的家庭局域网PC是从本地镜像获取更新的,但是只能通过命令获取,而不能自动获取。因此,如果有什么令人恐惧的地方,我可以在上面呆几天。
有机大理石

这是解决该问题的很好的方法。出于类似的原因,许多企业网络都设置为对Windows更新执行相同的操作!
tiger99

0

将软件包更新回滚到旧版本

如果您具有版本号或目标发行版,则apt-get支持选择特定版本或目标发行版。

  1. 安装能力

    sudo apt-get install aptitude
    
  2. 显示软件包的旧版本。

    aptitude versions <package-name> | less # use less to display only the top of the list of versions
    
  3. 将选定的软件包回滚到旧版本。

    sudo apt-get -t=<target release> install <package-name>  # target release is old version
    
  4. 卸载所选软件包的错误更新。

    sudo apt-get -t=<target release> remove <package-name> # target release is new version
    
  5. 防止使用来自动更新回滚的软件包版本apt-mark holdapt-mark hold用于将软件包标记为已保留,这将阻止软件包被自动安装,升级或删除。

    sudo apt-mark hold <package-name>  
    

将内核更新回滚到旧版本

遵循与上一节相同的步骤,除了必须执行其他测试步骤,即仍然安装了可以在卸载损坏的内核程序包之前运行的内核版本。不幸的是,这需要重启系统。我为重新启动感到抱歉,因为我知道在维护多个系统时这既麻烦又费时。


aptitude versions <package-name> 不显示所有当前安装的内核版本,但是您可以使用以下命令显示所有当前安装的内核版本:

dpkg-query -W -f='${Package}\n' | grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3)  

该命令的结果将列出应卸载的所有非工作内核软件包的软件包名称。

卸载属于非工作内核版本的软件包后,您将收到以下消息:

The link /vmlinuz.old is a damaged link
Removing symbolic link vmlinuz.old 
 you may need to re-run your boot loader[grub]

显示此消息是因为vmlinuz.old链接到已删除的文件,因此您需要通过运行以下命令来更新grub:

sudo update-grub

1
嗯,如果您要维护多个系统,然后又不得不回过头将它们全部设置为从良好内核启动,那将是一个巨大的痛苦。然后处理坏内核的重新启动,然后重新启动以获得好内核。
有机大理石

1
我的家人需要启动计算机,而不必考虑要使用的内核。而且,一旦发生此问题,我知道如何解决。我正在寻找一种避免首先解决问题的策略。我没有拒绝您的回答,但是它没有回答我的问题。
有机大理石

2
@OrganicMarble对于您的孩子来说,他们可能不是最精通计算机或不关心内核和事项的孩子,您是否测试过仅配置其计算机进行安全更新?该配置会发生同样的问题吗?我无法想象这样一种情况,即一般的更新将是完美的,直到发布后在实验室中没有问题的情况下对经过测试的大量计算机和环境进行测试为止。至少当问题出现时,您的问题就是显示快速修复的方法。
LD詹姆斯

1
@LDJames是一个很好的建议。但是,我确实怀疑这些内核更新是安全更新。我不确定如何返回并进行检查。
有机大理石

1
@OrganicMarble您可以返回并通过检查unattended日志文件(/var/log/unattended-upgrades)进行检查。我相信该unattended-upgrades软件包用于安全更新。
LD詹姆斯

-1

与任何操作系统一样,最佳策略是每天至少检查一次更新。

从安全角度来看,让单个用户在分别测试和确定优先级时执行延迟的更新是不现实的。紧急更新始终比拉动更新更重要。

因此,除非有足够的时间调查每个更新,否则最好的策略是在发布更新时应用更新,即使这会导致许多拉动的更新。这些总是可以在以后清理。

作为备份策略,您应该始终...备份!经常备份,备份所有内容。错误的更新是造成这种情况的原因之一。如果将重要文档保存在云中,这将特别方便。

编辑:我的答案是基于您是一个人的个人家用计算机的假设。


1
我所追求的不是“咧嘴承担”的策略。
有机大理石

@OrganicMarble我从没说过。但是我假设您是单个用户,并且您正在谈论的是个人系统。否则,请扩展您的问题。作为一个人,您只能做很多事情来管理更新。在一个组织中,我管理着数十个服务器和数百个工作站的大型站点,这是我的站点的数百倍。我们所有人都以非常复杂的方式处理更新,这是一个人永远做不到的。
多利安

是的,我想我处在一个极端的情况下,我们是一个使用Ubuntu的家庭,拥有5台计算机,另外我还运行多个虚拟机。大约 我必须管理的10个系统。获得自动化管理系统的人很少,但足以制造出这种超级烦人的东西。
有机大理石

@OrganicMarble是的,这使一个人难以管理。老实说,您可以做的最好的事情就是保持尽可能多的更新。当您弹出多个内核选项时,向您的家庭成员进行快速演示可能会有所帮助。您只需要向他们展示一次或两次。您是否考虑过一个从cron作业运行以检查多个内核的简单脚本?主要关注多个内核吗?
多里安
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.