处理Canonical越来越差的QA的策略?

installed (local or obsolete)类别正在填补,因为Canonical最近推出了更新然后将它们拉回来。 在最近的过去发生了两个内核,今天早上再次发生了cups 。 我已经使用Ubuntu大约三年了,我不记得这种情况经常发生在今年。

那么,如何理性地处理这个呢?

我想过每周只安装一次更新,但这不能防止在我检查那周之前抓住他们推出的那个糟糕的更新。

是一个只在周末安装更新的好策略吗? 似乎系统更新通常不会在周末推出。 我想他们可以在星期五下午推出一个糟糕的更新,并在星期一早上拉出来。

或者,不知何故不安装更新,直到它们被推出一段时间 – 比如两天? 有自动化方法吗?

编辑:其中一个受影响的系统使用linux-generic内核运行Lubuntu 16.04,另一个使用linux-generic-hwe-16.04内核运行Lubuntu 16.04。 两者都受到了版本2.13-4ubuntu0.2更新的影响,该更新在2017年3月27日被推出然后撤回.linux linux-generic机器收到内核更新版本4.4.0.67.12,随后被撤回。 此更新也是孤立的snapd版本2.23.1 linux-generic-hwe-16.04机器收到了一个内核版本4.8.0.42.14,然后被孤立。

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

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

  1. 安装aptitude

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

     aptitude versions  | less # use less to display only the top of the list of versions 
  3. 将选定的包回滚到旧版本。

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

     sudo apt-get -t= remove  # target release is new version 
  5. 使用apt-mark hold防止回滚包版本自动更新。 apt-mark hold用于将包标记为后退,这将阻止自动安装,升级或删除包。

     sudo apt-mark hold  

将内核更新回滚到旧版本

按照与上一节相同的步骤进行操作,只是必须按照测试的其他步骤进行操作,即在卸载损坏的内核包之前仍然安装了内核版本。 不幸的是,这需要重启系统。 我很抱歉重新启动,因为我知道当你维护多个系统时这会很麻烦和耗时。


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

 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 

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

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

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

作为备份策略,您应该始终……备份! 经常备份,备份一切。 不良更新是其中一个原因。 如果您将重要文档保存在云中,这将特别方便。

编辑:我的答案是基于你是一个家庭个人电脑的人的假设。