Ubuntu LTS 稳定性

Ubuntu LTS 稳定性

tl;dr:Ubuntu LTS 是否会将库更新为可能更改/删除 API 元素的版本?

由于 Debian 稳定版没有修补内核以支持新硬件,我遇到了一个问题,即我组织中的新笔记本电脑太新,无法运行 Debian 稳定版。我聘请了一位 Debian 承包商制作带有反向移植内核的安装 CD,但一周后,他仍未制作完成。

现在我不得不考虑将公司迁移到 Ubuntu LTS。但以下噩梦让我彻夜难眠:

  • 在为客户举办大型演示活动的前几天,一天早上我早早地来到工作地点。
  • 我还有一些时间,所以我apt upgrade
  • Y我注意到已经qt5-default5.9.5增加到5.10.0
  • 我编译我们的项目才发现 API 已经改变了。
  • 我们的团队需要大约2周的时间来重新编写代码以进行适应。
  • 我们错过了演示并失去了投标。
  • 公司破产了,我们都失业了。

使用 Debian,我不用担心,因为它根本不会更新。我们只获得安全补丁。令人心碎的是,新硬件不受支持。由于我没有那种说服 OEM 只订购 Debian 稳定版发布前生产的笔记本电脑的能力,所以我需要另一种解决方案。

Ubuntu LTS 声明他们只执行“点发布”。当我看到16.04 内核历史为了弄清楚这意味着什么,我看到他们确实将内核从 更新到4.44.15。这告诉我 Ubuntu 可能不愿意增加主要修订版本,但他们愿意增加小修改。

libboost我对从1.67.0到 的更新没意见1.67.1,但我对从 到 的更新感到害怕1.68.0

我能确信 Ubuntu LTS 不会升级不向后兼容的软件包吗?

如果我对 Ubuntu 的稳定性没有信心,那么以下是可能的解决方法,但欢迎提出建议:

  1. apt-mark hold <package>将阻止特定软件包的升级,但是:
    1. 手动管理依赖关系将非常耗时
    2. 我需要在整个公司范围内控制此事。
  2. 开发可以在运行 debian stable 的 chroot 环境中进行,将开发环境与桌面环境隔离。

答案1

更新 Ubuntu LTS 不会升级内核版本。仅应用安全补丁。
当前 LTS 版本是仿生的.Ubuntu
18.4.1(2018.4.26)

LTS 版本中的自动内核更新通过以下方式启用:硬件支持堆栈仅有的。


Ubuntu 内核发布时间表
在这里您可以看到,除非启用 HWE,否则 LTS 中的内核不会升级。

Ubuntu 内核发布时间表

Ubuntu LTS 内核支持时间表
在这里您可以看到仅实施了安全补丁。

Ubuntu 内核支持时间表

Ubuntu LTS 是否会将库更新为可能更改/删除 API 元素的版本?
答案是不。

我能确信 Ubuntu LTS 不会升级不向后兼容的软件包吗?
答案是可以的。


Debian 稳定版也是如此。
当前稳定版本是拉紧
Debian 9.5(2018 年 7 月 14 日发布,支持至 2022 年)


Linux 上的开发
在企业环境中进行软件开发的最佳实践是运行虚拟机,这样你就可以轻松地保护你的工作快照

例子
Qubes 操作系统是一个面向安全的操作系统,它允许您运行虚拟机(和模板包括 Debian) 使用 XEN 虚拟机管理程序 (反而KVM 虚拟化)


如果你正在使用 Qt 并且需要阻止其更新,请尝试setUpdatesEnabled(false);启用更新setUpdatesEnabled(true);

答案2

Ubuntu 内核编号与 Linux 不同

搜索询问 Ubuntu使用4.13.0-26,您将找到自 2018 年 1 月以来的 101 个问题和答案。当时发布的 Linux 内核版本适用于 LTS 内核4.14链。

看着Ubuntu 主线内核下载我们看到4.14.11Linux4.14.17内核团队于 2018 年 1 月发布了 7 个内核更新。我们还看到 2018 年 1 月的候选版本内核已4.15.rc6发布4.15.rc9(4 个内核更新)。

2018 年 1 月,Linux 内核团队针对 Spectre 和 Meltdown 预测分支理论内存泄漏问题对内核进行了重大修订。Ubuntu 内核团队迅速将代码移植到 Ubuntu 内核 4.13.0-xx 链。


跟踪 ABI/API 变化

来自ABI实验室我们可以看到最后的更改是在2018年6月4日、5日和6日:

Linux ABI 更改.png

我们可以看到Linux 内核2018 年 6 月修订的数字如下:

  • 4.14.48以及4.9.107所有4.4.1366 年 LTS 内核

相应的Ubuntu 内核版本号大概

当发布新的硬件支持或现有硬件的错误修复时,我们需要升级 Linux 内核。当涉及 ABI/API 更改时,Ubuntu 内核可能会或可能不会工作。即使没有发生 ABI/API 更改,Ubuntu 内核仍可能因其他原因而对某些人造成影响。

对于局外人来说,找到新 Linux 内核版本号和 Ubuntu 内核版本号之间的关联极其困难。最近的来自 Ubuntu 内核团队的新闻通讯 2017 年 6 月 6 日新闻通讯这是上述 ABI/API 更改的一年前:

Kernel Versions
====================================================================
         precise  3.2.0-126.169
          trusty  3.13.0-119.166
           vivid  3.19.0-84.92
          xenial  4.4.0-78.99
         yakkety  4.8.0-53.56

linux-lts-trusty  3.13.0-117.164~precise1
 linux-lts-vivid  3.19.0-80.88~14.04.1
linux-lts-xenial  4.4.0-78.99~14.04.1

我们看到对应的 Linux 内核版本号该时间段( 2017年6月7 日)的业绩为:3.2.89、、、、、、、和。3.10.1053.16.443.18.564.1.404.4.714.9.314.11.44.12-rc4


克隆和功能测试

sudo apt upgrade您可以考虑自动克隆、升级和功能测试,而不是在昏昏欲睡的星期一早上临时进行:

  1. 午夜运行的任务克隆您的16.04或者18.04到测试分区:Bash 脚本将 Ubuntu 克隆到新分区以测试 18.04 LTS 升级
  2. cron克隆后,将创建一个小型重启脚本来运行sudo apt upgrade并运行您的测试功能。
  3. 克隆 grub 后重新启动并进入克隆版本:Grub:重新启动到特定内核
  4. 当克隆重新启动时,cron重新启动脚本将运行以进行无人值守升级和单元测试。
  5. 您的单元测试应该将所有库版本号与已知数字进行比较,如果版本号已更新为未经测试的数字,则向您发送电子邮件。
  6. 您的单元测试将调用所有已知函数,传递测试参数并将返回值与预期结果进行比较。任何差异都将通过电子邮件发送给您。
  7. 完成后,您的单元测试脚本将通过电子邮件向您发送最终结果,设置grub为重新启动到实时环境,然后关闭。

相关内容