跳到内容
documentation.suse.com / 升级指南
SUSE Linux Enterprise Server 15 SP4

升级指南

本书将引导您完成 SUSE Linux Enterprise Server 的升级。如果您使用 SUSE Linux Enterprise Server 作为其他 SLE 产品或扩展的基础系统,另请参见这些产品的文档,以了解此产品或扩展特定的升级信息。

出版日期:2023 年 12 月 11 日

版权所有 © 2006–2023 SUSE LLC 和贡献者。保留所有权利。

根据 GNU 自由文档许可 (GNU Free Documentation License) 版本 1.2 或(根据您的选择)版本 1.3 中的条款,在此授予您复制、分发和/或修改本文档的权限;本版权声明和许可附带不可变部分。许可版本 1.2 的副本包含在题为GNU Free Documentation License的部分。

有关 SUSE 商标,请参见 https://www.suse.com/company/legal/。所有其他第三方商标分别为相应所有者的财产。商标符号(®、™ 等)代表 SUSE 及其关联公司的商标。星号 (*) 代表第三方商标。

本指南力求涵盖所有细节,但这不能确保本指南准确无误。SUSE LLC 及其关联公司、作者和译者对于可能出现的错误或由此造成的后果皆不承担责任。

前言

1 可用文档

联机文档

https://documentation.suse.com/#sles 上提供了此产品的相关联机文档。您可浏览或下载各种格式的文档。

https://documentation.suse.com/ 上提供了其他产品的相关联机文档。

注意
注意:最新更新

最新的文档更新通常会在文档的英文版中提供。

发行说明

有关发行说明,请参见 https://www.suse.com/releasenotes/

在您的系统中

要以脱机方式使用,请参见安装的系统中 /usr/share/doc 下的文档。许多命令的手册页中也对相应命令进行了详细说明。要查看手册页,请运行 man 后跟特定的命令名。如果系统上未安装 man 命令,请使用 sudo zypper install man 加以安装。

2 改进文档

欢迎您提供针对本文档的反馈及改进建议。您可以通过以下渠道提供反馈:

服务请求和支持

有关产品可用的服务和支持选项,请参见 https://www.suse.com/support/

要创建服务请求,需在 SUSE Customer Center 中注册订阅的 SUSE 产品。请转到 https://scc.suse.com/support/requests 并登录,然后点击新建

Bug 报告

https://bugzilla.suse.com/ 中报告文档问题。要简化此过程,可以使用本文档 HTML 版本中的报告问题链接。将光标置于受影响的句子中,然后在右侧导航面板的提供反馈部分单击报告问题。这样会在 Bugzilla 中预先选择正确的产品和类别,并添加当前章节的链接。然后,您便可以立即开始键入 Bug 报告。需要一个 Bugzilla 帐户。

贡献

要帮助改进本文档,请使用本文档 HTML 版本中的 Edit source document(编辑源文档)链接。将光标置于受影响的句子中,然后在右侧导航面板的提供反馈部分单击 Edit source document(编辑源文档)。这样您将会转到 GitHub 上的源代码,可以在其中提出拉取请求。需要一个 GitHub 帐户。

注意
注意:Edit source document(编辑源文档)仅适用于英语版本

Edit source document(编辑源文档)链接仅适用于每个文档的英语版本。对于其他所有语言,请按上文所述使用报告问题链接。

有关本文档使用的文档环境的详细信息,请参见软件源的自述文件(网址:https://github.com/SUSE/doc-sle/blob/main/README.adoc

邮件

您也可以将有关本文档中的错误以及相关反馈发送至:<>。请在其中包含文档标题、产品版本和文档发布日期。此外,请包含相关的章节号和标题(或者提供 URL),并提供问题的简要说明。

3 文档约定

本文档中使用了以下通知和排版约定:

  • /etc/passwd:目录名称和文件名

  • PLACEHOLDERPLACEHOLDER 将会替换为实际的值

  • PATH:环境变量 PATH

  • ls--help:命令、选项和参数

  • user:用户或组

  • package name:软件包的名称

  • AltAltF1:按键或组合键;这些键以大写形式显示,如在键盘上一样

  • 文件 文件 ›  另存为:菜单项,按钮

  • AMD/Intel 本段内容仅与 AMD64/Intel 64 体系结构相关。箭头标记文本块的开始位置和结束位置。

    IBM Z, POWER 本段内容仅与 IBM ZPOWER 体系结构相关。箭头标记文本块的开始位置和结束位置。

  • 跳舞的企鹅企鹅一章,↑其他手册):此内容参见自其他手册中的一章。

  • 必须使用 root 特权运行的命令。您往往还可以在这些命令前加上 sudo 命令,以非特权用户身份来运行它们。

    # command
    > sudo command
  • 可以由非特权用户运行的命令。

    > command
  • 注意

    警告
    警告:警报通知

    在继续操作之前,您必须了解的不可或缺的信息。向您指出有关安全问题、潜在数据丢失、硬件损害或物理危害的警告。

    重要
    重要:重要通知

    在继续操作之前,您必须了解的重要信息。

    注意
    注意:注意通知

    额外信息,例如有关软件版本差异的信息。

    提示
    提示:提示通知

    有用信息,例如指导方针或实用性建议。

4 支持

下面提供了 SUSE Linux Enterprise Server 的支持声明和有关技术预览的一般信息。有关产品生命周期的细节,请参见第 2 章 “生命周期和支持

如果您有权获享支持,可在Book “管理指南”, Chapter 47 “收集系统信息以供支持所用”中查找有关如何收集支持票据所需信息的细节。

4.1 SUSE Linux Enterprise Server 支持声明

要获得支持,您需要一个适当的 SUSE 订阅。要查看为您提供的具体支持服务,请转到 https://www.suse.com/support/ 并选择您的产品。

支持级别的定义如下:

L1

问题判定,该技术支持级别旨在提供兼容性信息、使用支持、持续维护、信息收集,以及使用可用文档进行基本查错。

L2

问题隔离,该技术支持级别旨在分析数据、重现客户问题、隔离问题区域,并针对级别 1 不能解决的问题提供解决方法,或作为级别 3 的准备级别。

L3

问题解决,该技术支持级别旨在借助工程方法解决级别 2 支持所确定的产品缺陷。

对于签约的客户与合作伙伴,SUSE Linux Enterprise Server 将为除以下软件包外的其他所有软件包提供 L3 支持:

  • 技术预览。

  • 声音、图形、字体和作品。

  • 需要额外客户合同的软件包。

  • Workstation Extension 模块随附的某些软件包仅享受 L2 支持。

  • 名称以 -devel 结尾的软件包(包含头文件和类似的开发人员资源)只能与其主软件包一起获得支持。

SUSE 仅支持使用原始软件包,即,未发生更改且未重新编译的软件包。

4.2 技术预览

技术预览是 SUSE 提供的旨在让用户大致体验未来创新的各种软件包、堆栈或功能。随附这些预览只是为了提供方便,让您有机会在自己的环境中测试新的技术。非常希望您能提供反馈!如果您测试了技术预览,请联系 SUSE 代表,将您的体验和用例告知他们。您的反馈对于我们的未来开发非常有帮助。

但是,技术预览存在以下限制:

  • 技术预览仍处于开发阶段。因此,它们的功能可能不完备、不稳定,或者在其他方面适合用于生产。

  • 技术预览受支持。

  • 技术预览可能仅适用于特定的硬件体系结构。

  • 技术预览的细节和功能可能随时会发生变化。因此,可能无法升级到技术预览的后续版本,而只能进行全新安装。

  • 我们随时可能会放弃技术预览。例如,如果 SUSE 发现某个预览不符合客户或市场的需求,或者不能证明它符合企业标准,则可能会放弃该预览。SUSE 不承诺未来将提供此类技术的受支持版本。

有关产品随附的技术预览的概述,请参见 https://www.suse.com/releasenotes/ 上的发行说明。

1 升级路径和方法

SUSE® Linux Enterprise (SLE) 允许您将现有系统升级到新版本,例如,从 SLE 12 SP4 升级到最新的 SLE 15 服务包。不需新安装。主目录和数据目录以及系统配置等现有数据将保持不变。您可以从本地 CD 或 DVD 驱动器或从中央网络安装源进行更新。

本章介绍如何通过 DVD、网络、自动化过程或 SUSE Manager 手动升级 SUSE Linux Enterprise 系统。

1.1 升级与全新安装

SUSE 支持在两个 SUSE Linux Enterprise Server 主要版本之间进行升级。是进行升级还是执行全新安装更好,这取决于特定的场景。虽然升级所涉及的工作较少,但全新安装可以确保您能够使用版本的所有新功能,例如磁盘布局更改、特定文件系统功能和其他改进。因此,为了充分利用您的系统,SUSE 建议在大多数情况下都执行全新安装。

无论是执行升级还是全新安装,客户都需要检查系统设置和默认值是否仍然满足其要求。

如果要从特定版本的某个服务包更新到相同代码流的另一个服务包,SUSE 建议进行就地更新,而不是全新安装。虽然如此,在这种情况下,客户也可能会出于某些原因和情形而执行全新安装。只能由客户来决定哪种方式更合适。

1.2 支持的 SLES 15 SP4 升级路径

在执行任何迁移操作之前,请阅读第 3 章 “准备升级

重要
重要:不支持跨体系结构升级

支持跨体系结构升级!例如从 32 位版本的 SUSE Linux Enterprise Server 升级到 64 位版本,或者从大字节序升级到小字节序。

具体而言,从 SLE 11 on POWER(大字节序)升级到 SLE 15 SP4 on POWER(新增:小字节序)受支持。

另外,由于 SUSE Linux Enterprise 15 只有 64 位版本,因此支持从任何 32 位 SUSE Linux Enterprise 11 系统升级到 SUSE Linux Enterprise 15 和更高版本。

要跨体系结构升级,需执行全新安装。

注意
注意:跳过服务包

最简单的升级路径是按顺序安装所有服务包。对于 SUSE Linux Enterprise 15 产品系列(GA 和后续服务包),还支持在升级时跳过最多两个服务包。例如,支持从 SLE 15 GA 升级到 15 SP3(前提是支持 SLE 15 GA)。

支持的升级路径概述
图 1.1︰ 支持的升级路径概述
警告
警告:升级数据库

此处所述的升级路径只适用于作为计算机操作系统的 SUSE Linux Enterprise,而不适用于其运行的所有应用程序。如果您使用了 PostgreSQL 或 MariaDB 数据库等工作负载,则可能需要进行中间操作系统升级以升级您的数据库。

升级操作系统之前,请参见发行说明以了解有关数据库版本的信息。如果提供了新的主要版本,请参见第 3 章 “准备升级以了解升级说明。

每个版本支持的升级路径
SUSE Linux Enterprise Server 11 升级

不支持直接从 SLES 11  升级。您的版本至少需为 SLES 11 SP4,并且您只能先升级到 SLES 15 SP3,然后才能升级到 SLES 15 SP4

如果您无法执行全新安装,请先将已安装的 SLES 11 服务包升级到 SLES 11 SP4。《SLES 11 SP4 部署指南》中介绍了此升级过程。接下来,以脱机升级方式升级到 SLES 15 SP3。《SLES 15 SP3 部署指南》中介绍了此升级过程。然后按照本指南中的说明升级到 SLES 15 SP4

SUSE Linux Enterprise Server 12 GA/SP1/SP2/SP3/SP4 升级

不支持从 SLES 12 SP4 或更早的服务包直接升级。您的版本至少需为 SLES 12 SP5,才能升级到 SLES 15 SP4

如果您无法执行全新安装,请先将已安装的 SLES 12 服务包升级到 SLES 12 SP5。《SLES 12 SP5 部署指南》中介绍了此升级。

SUSE Linux Enterprise Server 12 SP3 LTSS 升级

不再支持直接从 SLES 12 SP3 LTSS 升级。您的版本至少需为 SLES 12 SP4 LTSS,才能升级到 SLES 15 SP4

SUSE Linux Enterprise Server 12 SP4 LTSS 升级

仅支持采用脱机升级方式从 SLES 12 SP4 LTSS 升级。有关细节,请参见 第 4 章 “脱机升级

SUSE Linux Enterprise Server 12 SP5 升级

要从 SLES 12 SP5 升级,仅支持采用脱机升级方式。有关细节,请参见 第 4 章 “脱机升级

SUSE Linux Enterprise Server 15 GA/SP1/SP2 升级

不再支持直接从 SLES 15 GA、SP1 或 SP2 升级。您的版本至少需为 SLES 15 SP3,才能升级到 SLES 15 SP4

SUSE Linux Enterprise Server 15 GA LTSS / SP1 LTSS / SP2 LTSS 升级

支持采用联机和脱机升级方式从 SLES 15 GA LTSS、SP1 LTSS 或 SP2 LTSS 升级。有关细节,请参见 第 1.3 节 “联机和脱机升级”

SUSE Linux Enterprise Server 15 SP3 升级

支持采用联机和脱机方式从 SLES 15 SP1 或 SP2 升级。有关细节,请参见 第 1.3 节 “联机和脱机升级”

升级 SUSE Linux Enterprise 公有云 Guest

有关升级公有云中 SLE Guest 的指导,请参见“Using the SUSE Distribution Migration System”(使用 SUSE 发行套件迁移系统)

从 openSUSE Leap 15.0 / 15.1 / 15.2 升级

不再支持直接从 openSUSE Leap 15.0、15.1 或 15.2 升级。您的版本至少需为 openSUSE Leap 15.3,才能升级到 SLES 15 SP4

从 openSUSE Leap 15.3 / 15.4 升级

支持从 openSUSE Leap 15.3 或 15.4. 升级。请参见第 5.9 节 “从 openSUSE Leap 升级到 SUSE Linux Enterprise Server。仅支持升级安装的 Leap 服务器。

1.3 联机和脱机升级

SUSE 支持以下升级和迁移方法。有关术语的详细信息,请参见第 2.1 节 “术语”。这些方法是:

联机

从正在运行的操作系统本身(系统处于启动和正在运行的状态)执行升级。示例:在通过 SUSE Customer Center 或软件源镜像工具 (RMT)、经由 SUSE Manager 的 Salt 策略建立连接后,使用 Zypper 或 YaST 进行联机更新。

有关详细信息,请参见第 5 章 “联机升级

在同一主要版本的服务包之间迁移时,建议使用下面两种方法:第 5.4 节 “使用联机迁移工具 (YaST) 升级”第 5.5 节 “使用 Zypper 升级”

脱机

脱机升级意味着要升级的操作系统运行(系统处于关闭状态)。将会引导目标操作系统的安装程序(例如,通过安装媒体、网络或本地引导加载程序)并执行升级。

有关详细信息,请参见第 4 章 “脱机升级

重要
重要:SUSE Manager 客户端

如果您的计算机由 SUSE Manager 管理,请根据 SUSE Manager 文档中所述更新计算机。https://documentation.suse.com/suma/ 上的《SUSE Manager Upgrade Guide》(SUSE Manager 升级指南)中介绍了客户端迁移过程。

2 生命周期和支持

本章提供有关术语、SUSE 产品生命周期和服务包版本,以及建议的升级策略的背景信息。

2.1 术语

本节使用了一些术语。要理解这些信息,请阅读以下定义:

向后移植

向后移植是指通过较新版本的软件采取特定的更改,然后将这些更改应用到较旧版本的做法。最常见的用例是修复较旧软件组件中的安全漏洞。通常,它也是用于提供增强或新功能(不太常见)的维护模型的一部分。

增量 RPM

增量 RPM 仅包含某个软件包的两个已定义版本之间的有区别二进制文件,因此其下载大小最小。安装前,需要在本地计算机上重构建完整 rpm 软件包。

下游

开放源代码领域中的软件开发方式的形象说法(与上游相对)。下游一词指从上游将源代码与其他软件集成,从而构建供最终用户使用的发行套件的人员或组织,例如 SUSE。因此,软件将从其开发者开始,通过集成者向下游流向最终用户。

扩展, 附加产品

扩展和第三方附加产品为 SUSE Linux Enterprise Server 的产品价值提供附加功能。它们由 SUSE 及 SUSE 的合作伙伴提供,并且在基本产品 SUSE Linux Enterprise Server 的基础上注册和安装。

LTSS

LTSS 是 Long Term Service Pack Support 的缩写,它以 SUSE Linux Enterprise Server 扩展的形式提供。

主要版本, 正式发布 (GA) 版本

SUSE Linux Enterprise(或任何软件产品)的主要版本是一个新版本,其中会引入新功能和工具、停用先前弃用的组件,并加入一些不向后兼容的更改。例如,SUSE Linux Enterprise 12 或 15 是主要版本。

迁移

使用联机更新工具或安装媒体更新到某个服务包 (SP),以安装相应的补丁。它会将安装的系统的所有软件包更新到最新状态。

迁移目标

系统可迁移到的一组兼容产品,包含产品/扩展的版本以及软件源的 URL。迁移目标随时间而变化,并依赖于安装的扩展。可以选择多个迁移目标。

模块

模块是 SUSE Linux Enterprise Server 中受到完全支持的组件,具有不同的生命周期。它们都有明确定义的范围,只通过联机通道提供。要订阅 SUSE Customer Center、RMT(软件源镜像工具)或 SUSE Manager,必须先在这些通道中注册。

软件包

软件包是 rpm 格式的压缩文件,其中包含特定程序的所有文件,包括配置、示例和文档等可选组件。

补丁

补丁由一个或多个软件包组成,可通过增量 RPM 方式应用。它也可能带来尚未安装的软件包的依赖项。

服务包 (SP)

将几个补丁合并到便于安装或部署的一个组织体中。服务包是有编号的并通常包含安全性修复、更新、升级或程序增强。

上游

开放源代码领域中的软件开发方式的形象说法(与下游相对)。术语上游表示以源代码形式分发的软件的原始项目、作者或维护者。反馈、补丁、功能增强或其他改进措施将从最终用户或贡献者流向上游开发者。开发者决定是要集成还是拒绝请求。

如果项目成员决定集成请求,则会在更新版本的软件中显示这一点。接受的请求将为所有相关方带来好处。

如果某个请求未被接受,则可能是因其他原因而遭到拒绝。可能是请求处于不符合项目准则的状态、请求无效或已集成,或者不符合项目的利益或路线图。未被接受的请求会给上游开发者带来不利,因为他们需要将其补丁与上游代码同步。通常会避免这种做法,但有时仍有必要予以采取。

更新

安装某个软件包的较新次要版本,其中通常包含安全修复或 Bug 修复。

升级

安装软件包或分发包的更新主要版本,引入新功能有关各升级选项之间的区别的信息,请参见第 1.3 节 “联机和脱机升级”

2.2 产品生命周期

SUSE 的产品生命周期如下:

  • SUSE Linux Enterprise Server 的生命周期为 13 年:10 年的标准支持,3 年的扩展支持。

  • SUSE Linux Enterprise Desktop 的生命周期为 10 年:7 年的标准支持,3 年的扩展支持。

  • 主要版本每 4 年发行一次。服务包每 12-14 个月发行一次。

新服务包发行后,SUSE 对以前的服务包的支持会延续 6 个月。图 2.1 “主要版本和服务包”描述了以上某些方面。

主要版本和服务包
图 2.1︰ 主要版本和服务包

如果您需要更多的时间来设计、验证和测试您的升级计划,长期服务包支持可以延长支持期,让您额外获得以 12 个月为增量的 12 到 36 个月的支持。如此,对于任何服务包,您一共可以得到 2 到 5 年的支持。有关详细信息,请参见图 2.2 “长期服务包支持”

长期服务包支持
图 2.2︰ 长期服务包支持

有关详细信息,请参见https://www.suse.com/products/long-term-service-pack-support/

有关生命周期、发行频率和更迭期支持期限的详细信息,请参见 https://www.suse.com/lifecycle

2.3 模块依赖项和生命周期

有关模块、其依赖项和生命周期的列表,请参见Article “模块和扩展快速入门

2.4 生成定期生命周期报告

SUSE Linux Enterprise Server 可定期检查所有已安装产品的支持状态更改,如有更改,则会通过电子邮件发送报告。要生成报告,请使用 zypper in zypper-lifecycle-plugin 安装 zypper-lifecycle-plugin

使用 systemctl 命令在系统上启用报告生成功能:

> sudo systemctl enable lifecycle-report.timer

可使用任何文本编辑器,在 /etc/sysconfig/lifecycle-report 文件中配置报告电子邮件的收件人和主题,以及生成报告的时间段。MAIL_TOMAIL_SUBJ 设置分别定义邮件收件人和主题,而 DAYS 则设置生成报告的间隔。

报告显示的是更改发生之后(而不是之前)的支持状态更改。如果更改是在最后一份报告生成之后立即发生的,则您最长可能需要 14 天才会收到更改通知。在设置 DAYS 选项时,需考虑到这一点。更改以下配置项可满足您的需要:

MAIL_TO='root@localhost'
MAIL_SUBJ='Lifecycle report'
DAYS=14

最新报告可在文件 /var/lib/lifecycle/report 中获得。该文件包含两个部分。第一段告知对所使用产品的支持已结束。第二部分列出软件包以及它们的支持结束日期和更新可用性。

2.5 支持级别

扩展支持级别的范围从第 10 年开始直至第 13 年。这些包含持续的 L3 工程级别诊断和反应性关键 bug 修复。具有这些支持级别,您将接收到针对以下漏洞的更新:内核中可被轻易利用的 root 漏洞,以及其他无需用户交互即可直接执行的 root 漏洞。此外,它们还支持现有的工作负载、软件堆栈和硬件,其中只对少数软件包不提供支持。表 2.1 “安全更新和 bug 修复”中提供了概览。

表 2.1︰ 安全更新和 bug 修复
 

最新服务包 (SP) 的标准支持

上个 SP 的标准支持,含 LTSS

含 LTSS 的扩展支持

功能

第 1-5 年

第 6-7 年

第 8-10 年

第 4-10 年

第 10-13 年

技术服务

可访问补丁和修复

可访问文档和知识库

支持现有堆栈和工作负载

支持新部署

受限制(根据合作伙伴和客户要求)

受限制(根据合作伙伴和客户要求)

增强请求

受限制(根据合作伙伴和客户要求)

受限制(根据合作伙伴和客户要求)

硬件支持与优化

受限制(根据合作伙伴和客户要求)

受限制(根据合作伙伴和客户要求)

通过 SUSE SolidDriver 程序(前身为 PLDP)进行驱动程序更新

受限制(根据合作伙伴和客户要求)

受限制(根据合作伙伴和客户要求)

从最新 SP 向后移植修复

受限制(根据合作伙伴和客户要求)

安全性更新 1

所有

所有

所有

仅关键

仅关键

缺陷解决方法

受限制(仅限严重性级别 1 和 2 缺陷)

受限制(仅限严重性级别 1 和 2 缺陷)

受限制(仅限严重性级别 1 和 2 缺陷)

1 有关 SUSE Linux Enterprise 更新政策的更多信息,请参见下面的知识库文章

2.6 使用 SUSEConnect 注册和取消注册计算机

注册时,系统将从 SUSE Customer Center(请参见 https://scc.suse.com/)或本地注册代理(如 SMT)接收软件源。软件源名称会映射到该客户中心内的特定 URI。要列出系统上所有可用的软件源,请按如下方式使用 zypper

# zypper repos -u

这会显示系统上所有可用软件源的列表。每个软件源的别名、名称都会列出,并会指出它是否已启用且会刷新。使用选项 -u 也可以从 URI 的来源处获取该 URI。

要注册您的计算机,请运行 SUSEConnect,例如:

# SUSEConnect -r REGCODE

要取消注册计算机,也可以使用 SUSEConnect:

# SUSEConnect --de-register

要查看本地安装的产品及其状态,请使用以下命令:

# SUSEConnect -s

2.7 启用 LTSS 支持

长期服务包支持 (LTSS) 可延长 SUSE Linux Enterprise Server 的生命周期。此支持以扩展的形式提供。有关 LTSS 的详细信息,请参见 https://www.suse.com/products/long-term-service-pack-support/

要启用 LTSS 扩展,请执行以下步骤:

  1. 确保已通过订阅满足 LTSS 条件的产品注册您的系统。如果尚未注册系统,请运行以下命令:

    > sudo SUSEConnect -r REGISTRATION_CODE -e EMAIL_ADDRESS
  2. 确保 LTSS 扩展可用于您的系统:

    > sudo SUSEConnect --list-extensions | grep LTSS
    SUSE Linux Enterprise Server LTSS 15 SP4 x86_64
    Activate with: SUSEConnect -p SLES-LTSS/15.4/x86_64 -r ADDITIONAL REGCODE
  3. 按指示激活该模块:

    > sudo SUSEConnect -p SLES-LTSS/15.4/x86_64 -r REGISTRATION_CODE

2.8 识别 SLE 版本

如果需要识别所安装 SLE 的版本,请查看 /etc/os-release 文件的内容。

可以使用 zypper 获取计算机可读的 XML 输出:

> zypper --no-remote --no-refresh --xmlout --non-interactive products -i
<?xml version='1.0'?>
<stream>
<product-list>
<product name="SLES" version="15" release="0" epoch="0" arch="x86_64" vendor="SUSE" summary="SUSE Linux Enterprise Server 15" repo="@System" productline="sles" registerrelease="" shortname="SLES15" flavor="" isbase="true" installed="true"><endoflife time_t="0" text="0"/><registerflavor/><description>SUSE Linux Enterprise offers [...]</description></product>
</product-list>
</stream>

3 准备升级

在开始升级过程之前,请确保您的系统已准备妥当。除了其他工作以外,准备工作还包括备份数据和查看发行说明。下一章将指导您完成这些步骤。

3.1 确保系统是最新的

仅支持从最新的增补级别升级系统。运行 zypper patch 或启动 YaST 模块 Online-Update,以确保已安装最新的系统更新。

3.2 阅读发行说明

有关所有更改、新功能和已知问题的列表,请参见发行说明。安装媒体上的 docu 目录中也提供了发行说明。

发行说明通常只包含两个连续的版本之间的更改。如果您跳过了一个或多个服务包,另请检查所跳过服务包的发行说明。

查看发行说明以确定:

  • 您的硬件是否有特殊注意事项

  • 当前所使用的任何软件包是否发生了重大更改

  • 您的安装是否需要特殊预防措施

3.3 创建备份

升级前,将现有配置文件复制到另一个媒体(例如磁带设备、可卸硬盘等)以备份数据。这主要适用于储存在 /etc 中的文件以及 /var/opt 中的一些目录和文件。最好将 /homeHOME 目录)中的用户数据也写入备份媒体。

root 身份备份所有数据。只有 root 对所有本地文件具有足够的权限。

如果您已在 YaST 中选择更新现有系统作为安装模式,则可以选择在以后的某个时间执行(系统)备份。您可以选择包含所有已修改的文件以及 /etc/sysconfig 目录中的文件。但是,此备份尚不完整,因为缺少了上述所有其他重要目录。在 /var/adm/backup 目录中查找备份。

3.4 检查可用磁盘空间

从旧版本到新版本,软件的大小有增长的趋势。因此,在进行更新之前,请查看可用分区空间。如果您怀疑磁盘空间不足,请先备份数据,再通过调整分区大小等方法来增大可用空间。对于每个分区应该具有多少空间,没有一般的经验可以借鉴。空间要求取决于特定的分区配置文件和选定的软件。

注意
注意:在 YaST 中自动检查是否有足够空间

在更新过程中,YaST 会检查可用磁盘空间的容量,并在安装大小可能超出可用空间时向用户显示警告。在该情况下,执行更新会导致系统不可用!只有在您完全了解自己要进行的操作的情况下(通过事先测试),才能跳过警告继续更新。

3.4.1 检查非 Btrfs 文件系统上的磁盘空间

使用 df 命令可列出可用磁盘空间。例如,在例 3.1 “使用 df -h 列示信息”中,根分区为 /dev/sda3(作为 / 挂载)。

例 3.1︰ 使用 df -h 列示信息
Filesystem     Size  Used Avail Use% Mounted on
     /dev/sda3       74G   22G   53G  29% /
     tmpfs          506M     0  506M   0% /dev/shm
     /dev/sda5      116G  5.8G  111G   5% /home
     /dev/sda1       44G    4G   40G   9% /data

3.4.2 检查 Btrfs 根文件系统上的磁盘空间

在 Btrfs 文件系统上,df 的输出可能有误导性,因为除了原始数据分配的空间以外,Btrfs 文件系统还会为元数据分配并使用空间。

因此,即使看上去仍有大量的可用空间,Btrfs 文件系统也可能会报告空间不足。发生这种情况时,为元数据分配的全部空间都已用尽。有关如何检查 Btrfs 文件系统上已用和可用空间的细节,请参见Book “储存管理指南”, Chapter 1 “Linux 中文件系统的概述”, Section 1.2.2.3 “检查可用空间”有关详细信息,请参见 man 8 btrfs-filesystemhttps://btrfs.wiki.kernel.org/index.php/FAQ

如果在计算机上使用 Btrfs 作为根文件系统,请确保有足够的可用空间。检查所有挂载分区上的可用空间。在最坏的情况下,升级进程需要将当前根文件系统的所有磁盘空间(不含 /.snapshot)用于存放新快照。

下列建议已证实值得采纳:

  • 包括 Btrfs 在内的所有文件系统都需要有足够的可用磁盘空间来下载和安装大型 RPM。只有在安装新 RPM 之后,旧 RPM 的空间才会释放。

  • 对于包含快照的 Btrfs,至少需要有当前安装所需的可用空间。建议提供两倍于当前安装大小的可用空间。

    如果没有足够的可用空间,您可以尝试使用 snapper 删除旧快照:

    # snapper list
          # snapper delete NUMBER

    但这种做法并不总是有用。在迁移之前,大多数快照只会占用极少的空间。

3.5 列出已安装的软件包和软件源

在全新安装某个新的主要 SLE 版本或还原到旧版本时(举例而言),您可以保存已安装软件包的列表。

注意
注意

请注意,并非所有已安装的软件包或使用的软件源在 SUSE Linux Enterprise 的较新版本中都可用。有些软件包或软件源可能已被重命名,有些可能已被取代。还有可能提供的一些软件包只是用于旧版,而默认会使用另一个替代它的软件包。因此,可能需要手动编辑一些文件。您可使用任何文本编辑器进行编辑。

  1. 创建包含全部所用软件源列表的文件 repositories.bak.repo

    # zypper lr -e repositories.bak
  2. 另外,创建包含所有已安装软件包的列表的文件 installed-software.bak

    # rpm -qa --queryformat '%{NAME}\n' >
         installed-software.bak
  3. 备份这两个文件。使用以下命令可恢复软件源和已安装的软件包:

    # zypper ar repositories.bak.repo
    # zypper install $(cat installed-software.bak)
    注意
    注意:更新到新的主要版本后,软件包数量会相应增加

    升级到新主要版本的系统 (SLE X+1) 包含的软件包可能会比初始系统 (SLE X) 的多,也会比选择相同软件集执行的 SLE X+1 全新安装所包含的软件包多。原因如下:

    • 软件包经过拆分,以便用户能以更高的粒度选择软件包。例如,SLE 11 上的 37 个 texlive 软件包已拆分成 SLE 15 上的 3000 多个软件包。

    • 拆分某个软件包后,在升级过程中会安装所有新软件包,以与旧版本保持相同的功能。但是,SLE X+1 全新安装的新默认设置可能不会安装所有软件包。

    • 出于兼容原因,可能会保留 SLE X 中的旧软件包。

    • 软件包依赖项和软件集范围可能已发生变化。

3.6 禁用 LTSS 扩展

如果您将具有长期服务包支持 (LTSS) 的 SUSE Linux Enterprise Server 系统升级到只提供标准支持的版本,升级将会失败,并显示错误没有适用的迁移。之所以发生此情况,是因为 zypper migration 会尝试迁移所有软件源,但新版本尚无 LTSS 软件源。

要解决该问题,请在升级前先禁用 LTSS 扩展。

  1. 检查是否启用了 LTSS 扩展:

    > sudo SUSEConnect --list-extensions | grep LTSS
    SUSE Linux Enterprise Server LTSS 12 SP4 x86_64 (Installed)
    Deactivate with: SUSEConnect -d -p SLES-LTSS/12.4/x86_64
  2. 运行上方 SUSEConnect 输出中显示的命令禁用 LTSS 扩展:

    > sudo SUSEConnect -d -p SLES-LTSS/12.4/x86_64
    Deregistered SUSE Linux Enterprise Server LTSS 12 SP4 x86_64
    To server: https://scc.suse.com/
  3. 使用 zypper lr 校验 LTSS 软件源已不存在。

3.7 迁移 PostgreSQL 数据库

SUSE Linux Enterprise Server 15 SP4 随附 PostgreSQL 数据库版本 13 和 14。虽然默认版本是 14,但我们仍会通过 Legacy 模块提供版本 13,以便您可以从 SUSE Linux Enterprise Server 的早期版本升级。

由于需要完成数据库的迁移工作,因此无法使用自动升级过程。您需要手动执行从一个版本到另一个版本的迁移。

迁移过程通过使用 pg_upgrade 命令执行,这种方法可替代传统的转储和重新装载。与转储和重新装载方法相比,pg_upgrade 可缩短迁移所需的时间。

每个 PostgreSQL 版本的程序文件储存在不同版本的相关目录中。例如,版本 9.6 的程序文件储存在 /usr/lib/postgresql96/ 中;版本 10 的储存在 /usr/lib/postgresql10/ 中;版本 13 的储存在 /usr/lib/postgres13/ 中。请注意,PostgreSQL 主要版本 9.6 与 10 的版本控制策略有所不同。有关详细信息,请参见https://www.postgresql.org/support/versioning/

重要
重要:从 SLE 11 升级

从 SLE 11 升级时,postgresql94 将被卸装,不可用于将数据库迁移到更高的 PostgreSQL 版本。因此,在这种情况下,请确保先迁移 PostgreSQL 数据库,然后再升级系统。

以下过程描述如何将数据库从版本 12 迁移到版本 13。使用不同的版本作为起始或目标时,请相应地替换版本号。

要进行数据库迁移,请执行以下操作:

  1. 确保满足以下先决条件:

    • 如果尚未通过维护更新将旧 PostgreSQL 版本的任何软件包升级到最新版本,请执行该操作。

    • 创建现有数据库的备份。

    • 安装新 PostgreSQL 主要版本的软件包。对于 SLE 15 SP4,这意味着需要安装 postgresql13-server 及其依赖的所有软件包。

    • 安装包含 pg_upgrade 命令的 postgresql13-contrib 软件包。

    • 确保 PostgreSQL 数据区域(默认为 /var/lib/pgsql/data)中有足够的可用空间。如果空间不足,请对每个数据库使用以下 SQL 命令,以尝试减少大小(这可能需要花费很长时间!):

      VACUUM FULL
  2. 使用以下任一命令停止 PostgreSQL 服务器:

    # /usr/sbin/rcpostgresql stop

    # systemctl stop postgresql.service

    (取决于要用作升级起始版本的 SLE 版本)。

  3. 重命名旧数据目录:

    # mv /var/lib/pgsql/data /var/lib/pgsql/data.old
  4. 使用 initdb 手动初始化新的数据库实例,或者启动再停止 PostgreSQL 让数据库实例自动初始化:

    # /usr/sbin/rcpostgresql start
    # /usr/sbin/rcpostgresql stop

    # systemctl start postgresql.service
    # systemctl stop postgresql.service

    (取决于要用作升级起始版本的 SLE 版本)。

  5. 如果您在旧版本中更改了配置文件,请考虑将这些更改转移到新配置文件。可能受影响的文件包括 postgresql.auto.confpostgresql.confpg_hba.confpg_ident.conf。这些文件的旧版本位于 /var/lib/pgsql/data.old/ 中,新版本可在 /var/lib/pgsql/data 中找到。

    请注意,不建议复制旧配置文件,因为这可能会重写新选项、新默认值和更改的注释。

  6. postgres 用户身份启动迁移过程:

    # su - postgres
    postgres > pg_upgrade \
     --old-datadir "/var/lib/pgsql/data.old" \
     --new-datadir "/var/lib/pgsql/data" \
     --old-bindir "/usr/lib/postgresql12/bin/" \
     --new-bindir "/usr/lib/postgresql13/bin/"
  7. 使用以下任一命令启动新数据库实例:

    # /usr/sbin/rcpostgresql start

    # systemctl start postgresql.service

    (取决于要用作升级起始版本的 SLE 版本)。

  8. 检查迁移是否成功。测试范围取决于用例,没有任何普通的工具可以自动完成此步骤。

  9. 去除所有旧 PostgreSQL 软件包和旧数据目录:

    # zypper search -s postgresql12| xargs zypper rm -u
    # rm -rf /var/lib/pgsql/data.old

有关升级数据库或使用逻辑复制等替代方法的详细信息,请参见 https://www.postgresql.org/docs/13/upgrading.html 上的官方 PostgreSQL 文档。

3.8 迁移 MySQL 或 MariaDB 数据库

从 SUSE Linux Enterprise 12 开始,SUSE 已从 MySQL 转移到 MariaDB。在开始任何升级操作之前,强烈建议您备份数据库。

要进行数据库迁移,请执行以下操作:

  1. 创建转储文件:

    # mysqldump -u root -p --all-databases --add-drop-database > mysql_backup.sql

    默认情况下,mysqldump 不会转储 INFORMATION_SCHEMAperformance_schema 数据库。有关详细信息,请参见 https://mariadb.com/kb/en/mariadb-dumpmysqldump/

  2. 将您的转储文件、配置文件 /etc/my.cnf 以及 /etc/mysql/ 目录储存在安全位置,以供日后调查(不要用于安装!)。

  3. 执行 SUSE Linux Enterprise Server 升级。升级后,以前的配置文件 /etc/my.cnf 仍将保持不变。新配置保存在 /etc/my.cnf.rpmnew 文件中。

  4. 根据需要配置 MariaDB 数据库。不要使用以前的配置文件和目录,只是将其用作提醒,并对其进行改编。

  5. 确保启动 MariaDB 服务器:

    # systemctl start mariadb

    如果您希望每次引导时都启动 MariaDB 服务器,请启用以下服务:

    # systemctl enable mariadb
  6. 通过连接数据库来校验 MariaDB 是否正常运行:

    # mariadb -u root -p

3.9 创建用于 Java 应用程序的非 MD5 服务器证书

作为安全措施,Java 中不再支持基于 MD5 的证书。如果您之前创建的证书是 MD5 证书,请执行以下步骤重新创建证书:

  1. 打开终端窗口并以 root 身份登录。

  2. 创建一个私用密钥:

    # openssl genrsa -out server.key 1024

    如果需要强度更高的密钥,请将 1024 替换为更大的数字,例如 4096

  3. 创建证书签名请求 (CSR):

    # openssl req -new -key server.key -out server.csr
  4. 对证书自我签名:

    # openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
  5. 创建 PEM 文件:

    # cat server.key server.crt > server.pem
  6. server.crtserver.csrserver.keyserver.pem 文件放在可在其中找到密钥的相应目录中。例如,对于 Tomcat,此目录为 /etc/tomcat/ssl/

3.10 关闭虚拟机 Guest

如果您的计算机充当 KVM 或 Xen 的 VM 主机服务器,请确保在更新前正常关闭所有正在运行的 VM Guest。否则,更新后您可能无法访问 guest。

3.11 调整 SMT 客户端设置

如果您要升级的计算机已注册为 SMT 服务器的客户端,请注意以下事项:

检查主机上的 clientSetup4SMT.sh 脚本版本是否是最新的。较旧版 SMT 的 clientSetup4SMT.sh 无法管理 SMT 12 客户端。如果您在 SMT 服务器上定期应用软件补丁,那么位于 <SMT 主机名>/repo/tools/clientSetup4SMT.sh 处的 clientSetup4SMT.sh 始终都是最新版本。

如果将计算机升级到更高版本的 SUSE Linux Enterprise Server 失败,请按过程 3.1中所述从 SMT 服务器中取消注册该计算机。然后重启动升级过程。

过程 3.1︰ 从 SMT 服务器中取消注册 SUSE Linux Enterprise 客户端
  1. 登录客户端计算机。

  2. 以下步骤根据客户端的当前操作系统而异:

    • 对于 SUSE Linux Enterprise 11,请执行以下命令:

      > sudo suse_register -E
      > sudo rm -f /etc/SUSEConnect
      > sudo rm -rf /etc/zypp/credentials.d/*
      > sudo rm -rf /etc/zypp/repos.d/*
      > sudo rm -f /etc/zypp/services.d/*
      > sudo rm -f /var/cache/SuseRegister/*
      > sudo rm -f /etc/suseRegister*
      > sudo rm -f /var/cache/SuseRegister/lastzmdconfig.cache
      > sudo rm -f /etc/zmd/deviceid
      > sudo rm -f /etc/zmd/secret
    • 对于 SUSE Linux Enterprise 12,请执行以下命令:

      > sudo SUSEConnect --de-register
      > sudo SUSEConnect --cleanup
      > sudo rm -f /etc/SUSEConnect
      > sudo rm -rf /etc/zypp/credentials.d/*
      > sudo rm -rf /etc/zypp/repos.d/*
      > sudo rm -f /etc/zypp/services.d/*
  3. 登录 SMT 服务器。

  4. 列出所有客户端注册,以检查是否已成功取消注册该客户端:

    > sudo smt-list-registrations
  5. 如果该客户端的主机名仍旧列在此命令的输出中,请从第一列获取该客户端的唯一 ID。(可能列出了该客户端的多个 ID。)

  6. 删除此客户端的注册:

    > sudo smt-delete-registration -g UNIQUE_ID
  7. 如果列出了该客户端的多个 ID,请针对每个唯一 ID 重复上述步骤。

  8. 重新运行以下命令,以检查现在是否已成功取消注册该客户端:

    > sudo smt-list-registrations

3.12 AutoYaST 配置文件中的更改(从 SLE 12 到 15)

要了解如何迁移 AutoYaST 配置文件,请参见Book “AutoYaST 指南”,

3.13 升级订阅管理工具 (SMT) 服务器

对于运行 SMT 的服务器,需要执行特殊的升级过程。请参见《Repository mirror Tool Guide》中的Book “Repository Mirroring Tool 指南”, Chapter 3 “从 SMT 迁移到 RMT”

3.14 暂时禁用内核多版本支持

SUSE Linux Enterprise Server 允许您在 /etc/zypp/zypp.conf 中启用相应设置来安装多个内核版本。为了升级到某个服务包,需要暂时禁用对此功能的支持。当更新成功完成后,可以重新启用多版本支持。要禁用多版本支持,请对 /etc/zypp/zypp.conf 中的相应行加上注释。结果应类似如下内容:

#multiversion = provides:multiversion(kernel)
#multiversion.kernels = latest,running

要在成功更新后重新激活此功能,请去除注释符号。有关多版本支持的详细信息,请参见Book “管理指南”, Chapter 27 “安装多个内核版本”, Section 27.1 “启用和配置多版本支持”

3.15 在 IBM Z 上升级

在 IBM Z 上升级 SUSE Linux Enterprise 安装需要设置 Upgrade=1 内核参数(例如,通过 parmfile)。请参见第 5.6 节 “parmfile — 自动进行系统配置”

3.16 IBM POWER:启动 X 服务器

在 SLES 12 for IBM POWER 上,显示管理器配置为默认不启动本地 X 服务器。SLES 12 SP1 上的设置则相反,显示管理器现在会启动 X 服务器。

为了避免升级期间出现问题,SUSE Linux Enterprise Server 设置不会自动更改。如果想要在升级后让显示管理器启动 X 服务器,请按如下所示在 /etc/sysconfig/displaymanager 中更改 DISPLAYMANAGER_STARTS_XSERVER 的设置:

DISPLAYMANAGER_STARTS_XSERVER="yes"

4 脱机升级

本章介绍如何使用从安装媒体引导的 YaST,升级现有的 SUSE Linux Enterprise 安装。YaST 安装程序有多种启动方法,例如从 DVD 启动、通过网络启动或从系统所在的硬盘启动。

4.1 概念概述

在升级系统之前,请先阅读第 3 章 “准备升级

要升级系统,请像执行全新安装时那样从安装源引导。但是,当引导屏幕出现时,您需要选择升级(而不是安装)。可从以下媒体启动升级:

4.2 从安装媒体启动升级

下面的过程介绍如何从 DVD 引导,不过,您也可以使用其他本地安装媒体,例如 USB 大容量储存设备上的 ISO 映像。要选择的媒体和引导方法取决于系统体系结构,以及计算机使用的是传统的 BIOS 还是 UEFI。

过程 4.1︰ 手动升级到 SUSE Linux Enterprise Server 15 SP4
  1. 选择并准备引导媒体,请参见Book “部署指南

  2. 插入 SUSE Linux Enterprise Server 15 SP4 的统一安装程序 DVD,并引导计算机。欢迎屏幕即会显示,接着是引导屏幕。

  3. 可选:要强制安装程序仅安装 DVD 中的软件包而不安装网络来源中的软件包,请添加引导选项 media_upgrade=1

  4. 在引导菜单中选择升级以启动系统。

  5. 第 4.4 节 “升级 SUSE Linux Enterprise”中所述继续执行升级过程。

4.3 从网络来源启动升级

要从网络安装源开始升级,请确保满足以下要求:

从网络安装源升级的要求
网络安装源

网络安装源已按照Book “部署指南”, Chapter 16 “设置网络安装源”所述设置妥当。

网络连接和网络服务

安装服务器与目标计算机的网络连接均必须正常。必需的网络服务如下:

  • 域名服务

  • DHCP(仅在通过 PXE 引导时需要,可在设置期间手动设置 IP)

  • OpenSLP(可选)

引导媒体

可引导的 SUSE Linux Enterprise DVD、ISO 映像或功能正常的 PXE 设置。有关通过 PXE 引导的细节,请参见Book “部署指南”, Chapter 17 “准备网络引导环境”, Section 17.4 “为 PXE 引导准备目标系统”。请参见Book “部署指南”, Chapter 11 “远程安装”,深入了解从远程服务器开始升级的相关信息。

4.3.1 通过网络安装源手动升级 — 从 DVD 引导

此过程举例说明了如何从 DVD 引导,不过,您也可以使用其他本地安装媒体,例如 USB 大容量储存设备上的 ISO 映像。如何选择引导方法以及从媒体启动系统取决于系统体系结构,以及计算机使用的是传统 BIOS 还是 UEFI。有关细节,请参见以下链接。

  1. 插入 SUSE Linux Enterprise Server 15 SP4 的统一安装程序 DVD,并引导计算机。欢迎屏幕即会显示,接着是引导屏幕。

  2. 选择要使用的网络安装源类型(FTP、HTTP、NFS、SMB 或 SLP)。通常可以按 F4 选择此选项,但是,如果您计算机上装配的是 UEFI 而不是传统 BIOS,则可能需要手动调整引导参数。有关细节,请参见Book “部署指南”, Chapter 7 “引导参数”Book “部署指南”, Chapter 8 “安装步骤”

  3. 第 4.4 节 “升级 SUSE Linux Enterprise”中所述继续执行升级过程。

4.3.2 通过网络安装源手动升级 — 通过 PXE 引导

要通过 PXE 引导从网络安装源执行升级,请按以下步骤操作:

  1. 调整 DHCP 服务器的设置以提供通过 PXE 引导所需的地址信息。有关详细信息,请参见Book “部署指南”, Chapter 17 “准备网络引导环境”, Section 17.1.1 “动态地址指派”

  2. 设置 TFTP 服务器,以保存通过 PXE 引导所需的引导映象。为此,请使用 SUSE Linux Enterprise Server 15 SP4 的安装程序 DVD,或遵循Book “部署指南”, Chapter 17 “准备网络引导环境”, Section 17.2 “设置 TFTP 服务器”中的指导。

  3. 在目标计算机上准备 PXE Boot 和局域网唤醒。

  4. 对目标系统引导进行初始化,并用 VNC 远程连接到此计算机正运行的安装例程上。有关详细信息,请参见Book “部署指南”, Chapter 11 “远程安装”, Section 11.3 “通过 VNC 监视安装”

  5. 第 4.4 节 “升级 SUSE Linux Enterprise”中所述继续执行升级过程。

4.4 升级 SUSE Linux Enterprise

在升级系统之前,请先阅读第 3 章 “准备升级。要执行自动迁移,请如下操作:

注意
注意:SUSE Customer Center 和互联网连接

如果您要升级的系统已在 SUSE Customer Center 中注册,请确保在执行以下过程期间可以连接互联网。

  1. (从安装媒体或网络)引导后,请在引导屏幕上选择升级这一项。

    警告
    警告:不当的选择可能会导致数据丢失

    此时请确保选择升级。如果错误地选择了安装,将会执行全新安装,致使您的数据分区被重写。

    YaST 将启动安装系统。

  2. 欢迎屏幕上,选择语言键盘。单击下一步继续。

    YaST 将检查您的分区上是否已安装 SUSE Linux Enterprise 系统。

  3. 选择升级屏幕上,选择要升级的分区,然后单击下一步

  4. YaST 会挂载选定的分区,并显示所升级产品的许可协议。要继续升级,请接受许可条款。

  5. 以前使用过的软件源屏幕上,调整软件源的状态。默认会去除所有软件源。如果您未添加任何自定义软件源,请不要更改设置。将从 DVD 安装待升级的软件包,您可在下一步骤中选择性地启用默认联机软件源。

    如果您有自定义软件源,可以采取两种做法:

    • 让软件源保留“已去除”状态。在升级期间,将会去除从此软件源安装的软件。在没有任何与新版本匹配的软件源版本可用的情况下,请使用此方法。

    • 更新并启用与新版本匹配的软件源。在列表中单击该软件源以更改其 URL,然后单击更改。可通过选中切换状态,直到其状态设置为启用来启用软件源。

    不要保留上一版本中的软件源,否则系统可能不稳定甚至根本无法工作。然后单击下一步继续。

  6. 下一步骤取决于升级的系统是否已在 SUSE Customer Center 中注册。

    1. 如果系统未在 SUSE Customer Center 中注册,YaST 将显示一条弹出讯息,建议使用另一个安装媒体,即 SLE-15-SP4-Full-ARCH-GM-media1.iso 映像。

      如果您没有该媒体,那么不注册系统就无法升级。

    2. 如果系统已在 SUSE Customer Center 中注册,YaST 将会显示可能的迁移目标和摘要。

      从列表中选择一个迁移目标,然后单击下一步继续。

  7. 在下一个对话框中,您可以选择性地添加额外的安装媒体。如果您有额外的安装媒体,请激活我要安装其他附加产品选项,并指定媒体类型。

  8. 检查升级的安装设置

  9. 如果所有设置都符合您的需要,请单击更新开始安装与去除过程。

    提示
    提示:在 SMT 客户端上升级失败

    如果要升级的计算机是 SMT 客户端并且升级失败,请参见过程 3.1 “从 SMT 服务器中取消注册 SUSE Linux Enterprise 客户端”,然后重启动升级过程。

  10. 升级过程成功完成后,请根据第 6.1 节 “升级后检查”中所述执行升级后检查。

4.5 使用 AutoYaST 升级

升级过程可以自动执行。有关详细信息,请参见Book “AutoYaST 指南”, Chapter 4 “配置和安装选项”, Section 4.10 “升级”

4.6 使用 SUSE Manager 升级

SUSE Manager 是一个服务器解决方案,用于提供适用于 SUSE Linux Enterprise 客户端的更新、补丁和安全修复。它随附了一套工具和基于 Web 的用户界面,用于执行管理任务。有关 SUSE Manager 的详细信息,请参见 https://www.suse.com/products/suse-manager/

您可以使用 SUSE Manager 来执行系统升级。使用 AutoYaST 升级可以从一个主要版本升级到下一个主要版本。

如果您的计算机由 SUSE Manager 管理,请根据 SUSE Manager 文档中所述更新计算机。https://documentation.suse.com/suma/ 上的《SUSE Manager Upgrade Guide》(SUSE Manager 升级指南)中介绍了客户端迁移过程。

4.7 回滚后更新注册状态

执行服务包升级时,必须在注册服务器上更改配置,以提供对新软件源的访问权限。如果升级过程被中断或恢复(通过从备份或快照恢复),注册服务器上的信息会与系统的状态不一致。这样可能会导致您无法访问更新软件源,或是在客户端上使用错误的软件源。

如果回滚是通过 Snapper 完成的,系统会通知注册服务器以确保在引导过程中设置对正确软件源的访问权限。如果使用其他方法恢复了系统,或者与注册服务器通讯失败,请在客户端上手动触发回滚。例如,在因网络问题而无法访问服务器时,可以手动触发回滚。要进行回滚,请执行:

> sudo snapper rollback

我们建议始终检查系统上是否设置了正确的软件源,特别是使用以下命令刷新服务后:

> sudo zypper ref -s

此功能通过 rollback-helper 软件包提供。

4.8 注册系统

如果在运行升级之前未注册系统,您随时都可使用 YaST 中的产品注册模块来注册系统。

注册系统可以获得以下优势:

  • 有资格获得支持

  • 获取安全性更新和 Bug 修复

  • 访问 SUSE Customer Center

  1. 启动 YaST 并选择软件 ›  产品注册以打开注册对话框。

  2. 提供与您或您的组织管理订阅时所用的 SUSE 帐户关联的电子邮件地址。如果您没有 SUSE 帐户,请转到 SUSE Customer Center 主页 (https://scc.suse.com/) 创建一个帐户。

  3. 输入与 SUSE Linux Enterprise Server 副本一同收到的注册代码

  4. 如果您的网络中有一个或多个本地注册服务器可用,您可以从列表中选择一个。

  5. 要开始注册,请继续执行下一步

    成功注册后,YaST 会列出系统可用的扩展、附加产品和模块。要选择并安装所列的项,请继续Book “部署指南”, Chapter 9 “注册 SUSE Linux Enterprise 和管理模块/扩展”, Section 9.4 “在正在运行的系统中管理模块和扩展”

5 联机升级

SUSE 提供了直观的图形工具和简单的命令行工具,供您将正在运行的系统升级到新服务包。两个工具都提供服务包回滚支持及其他功能。本章提供有关如何使用这些工具执行服务包升级的逐步说明。

5.1 概念概述

SUSE 会定期发布用于 SUSE Linux Enterprise 系列的新服务包。为了方便客户迁移到新的服务包,并最大限度减少停机时间,SUSE 支持在系统运行时进行联机迁移。

从 SLE 12 开始,YaST Wagon 已经由 YaST 迁移 (GUI) 和 Zypper 迁移(命令行)替代。此项更改的优点在于:

  • 在首个 RPM 更新之前,系统将始终处于定义的状态。

  • 在首个 RPM 更新之前可以取消.

  • 如果出现错误,可以轻松恢复。

  • 可以通过系统工具执行回滚 - 无需备份或恢复。

  • 使用所有活动软件源.

  • 可以跳过服务包

警告
警告:不支持对主要版本进行联机迁移

支持在服务包之间进行联机迁移。不支持通过联机迁移升级到新的主要版本。有关详细信息,请参见第 1 章 “升级路径和方法

请通过脱机迁移升级到新的主要版本。有关详细信息,请参见第 4 章 “脱机升级

重要
重要:升级 SUSE Manager 客户端

如果要升级的系统是 SUSE Manager 客户端,则无法通过 YaST 联机迁移或 zypper migration 进行升级。请改为使用客户端迁移过程。 《SUSE Manager Upgrade Guide》(SUSE Manager 升级指南)对此进行了说明。

5.2 服务包迁移工作流程

服务包迁移可通过 YaST、zypper 或 AutoYaST 执行。

在开始服务包迁移之前,必须在 SUSE Customer Center 或本地 RMT 服务器中注册您的系统。也可以使用 SUSE Manager。

不论使用哪种方式,服务包迁移都包含以下步骤:

  1. 在注册系统中查找可能的迁移目标。

  2. 选择一个迁移目标。

  3. 请求并启用新的软件源。

  4. 运行迁移。

迁移目标列表取决于您所安装和注册的产品。如果您安装的扩展没有新的 SP 可用,则无法向您提供迁移目标。

主机可用的迁移目标列表将始终从 SUSE Customer Center 检索,并与安装的产品或扩展相关。

5.3 取消服务包迁移

在迁移过程中,只能在特定阶段取消服务包迁移:

  1. 在软件包升级开始之前,仅对系统进行极小的更改,例如对服务和软件源的更改。恢复 /etc/zypp/repos.d/* 以便还原到之前的状态。

  2. 软件包升级过程开始之后,可以使用 Snapper 快照还原到之前的状态(请参见Book “管理指南”, Chapter 10 “通过 Snapper 进行系统恢复和快照管理”)。

  3. 选择迁移目标之后,SUSE Customer Center 更改了软件源数据。要手动还原此状态,请使用 SUSEConnect --rollback

5.4 使用联机迁移工具 (YaST) 升级

要通过 YaST 执行服务包迁移,请使用联机迁移工具。默认情况下,YaST 不会从第三方软件源安装任何软件包。如果某软件包是从第三方软件源安装的,YaST 会阻止该软件包替换成来自 SUSE 的相同软件包。

注意
注意:减小安装大小

执行服务包迁移时,YaST 会安装所有推荐的软件包。特别是在自定义最小安装的情况下,这样可能会大幅增加系统的安装大小。

要更改此默认行为并只允许必要的软件包,请调整 /etc/zypp/zypp.conf 中的 solver.onlyRequires 选项。

solver.onlyRequires = true

另外,请编辑文件 /etc/zypp/zypper.conf 并更改 installRecommends 选项。

installRecommends=false

这会更改所有与软件包相关操作的行为,例如安装补丁或新软件包的行为。要更改某次调用的 Zypper 行为,请使用 --no-recommends 参数。

要开始服务包迁移,请执行以下操作:

  1. 停用注册服务器上所有未使用的扩展,以免将来发生依赖性冲突。如果您忘记了某个扩展,YaST 稍后会检测未使用的扩展软件源,并将其停用。

  2. 如果您已登录到要更新的计算机上某个正在运行的 GNOME 会话,请切换到文本控制台。建议不要从 GNOME 会话运行更新。请注意,这并不适用于从远程计算机登录的情况(除非您正在使用 GNOME 运行 VNC 会话)。

  3. 运行 YaST 联机更新以获得系统的最新软件包更新。

  4. 安装 yast2-migration 软件包及其依赖项(在 YaST 的软件 › 软件管理下)。

  5. 重启动 YaST;如果不重启动,新安装的模块将不会显示在控制中心中。

  6. 在 YaST 中,选择联机迁移(根据要升级的 SUSE Linux Enterprise Server 版本,此模块会列于系统软件类别下)。YaST 将显示可能的迁移目标和摘要。如果有多个迁移目标可用于系统,请从列表中选择一个。

  7. 从列表中选择一个迁移目标,然后单击下一步继续。

  8. 如果迁移工具提供更新软件源,建议单击继续。

  9. 如果“联机迁移”工具找到来自 DVD 或本地服务器的过时软件源,强烈建议您将其禁用。过时软件源来自上一个服务包。系统会自动去除来自 SUSE Customer Center 或 RMT 的旧软件源。

  10. 单击下一步,查看摘要并继续迁移过程。确认开始更新

  11. 成功迁移后,请重启动系统。

5.5 使用 Zypper 升级

要用 Zypper 执行服务包迁移,请使用命令行工具 zypper migration(来自包 zypper-migration-plugin.

注意
注意:减小安装大小

执行服务包迁移时,YaST 会安装所有推荐的软件包。特别是在自定义最小安装的情况下,这样可能会大幅增加系统的安装大小。

要更改此默认行为并只允许必要的软件包,请调整 /etc/zypp/zypp.conf 中的 solver.onlyRequires 选项。

solver.onlyRequires = true

另外,请编辑文件 /etc/zypp/zypper.conf 并更改 installRecommends 选项。

installRecommends=false

这会更改所有与软件包相关操作的行为,例如安装补丁或新软件包的行为。要更改某次调用的 Zypper 行为,请使用 --no-recommends 参数。

要开始服务包迁移,请执行以下操作:

  1. 如果您已登录到要更新的计算机上某个正在运行的 GNOME 会话,请切换到文本控制台。建议不要从 GNOME 会话运行更新。请注意,这并不适用于从远程计算机登录的情况(除非您正在使用 GNOME 运行 VNC 会话)。

  2. 注册 SUSE Linux Enterprise 计算机(如果尚未注册):

    > sudo SUSEConnect --regcode YOUR_REGISTRATION_CODE
  3. 开始迁移:

    > sudo zypper migration

    有关迁移过程的一些备注:

    • 如果有多个迁移目标可用于系统,Zypper 会让您从列表中选择一个服务包。这与跳过一个或多个服务包一样。请注意,基础产品(SLES、SLED)的联机迁移仍然只适用于在主要版本的服务包之间进行。

    • 默认情况下,Zypper 会使用 --no-allow-vendor-change 选项,以传递到 zypper dup。如果某软件包是从第三方软件源安装的,此选项会阻止该软件包替换成来自 SUSE 的相同软件包。

    • 如果 Zypper 找到来自 DVD 或本地服务器的过时软件源,强烈建议您将其禁用。系统会自动去除旧的 SUSE Customer Center 或 RMT 软件源。

  4. 查看所有更改,特别是即将去除的软件包。键入 y(要升级的软件包的确切数目会根据系统的不同而变化)继续:

    266 packages to upgrade, 54 to downgrade, 17 new, 8 to reinstall, 5 to remove, 1 to change arch.
    Overall download size: 285.1 MiB. Already cached: 0 B  After the operation, additional 139.8 MiB will be used.
    Continue? [y/n/? shows all options] (y):

    使用 ShiftPage ↑ShiftPage ↓ 键在外壳中滚动。

  5. 成功迁移后,请重启动系统。

5.6 使用 Plain Zypper 升级

如果因无法访问互联网或注册服务器而未能注册您的系统,则无法使用 YaST 迁移或 zypper migration 迁移到新服务包。在这种情况下,您仍可以通过普通的 Zypper 和一些手动交互来迁移到新服务包。

重要
重要:仅适用于未注册的系统

只有因无法访问互联网或注册服务器而未能注册的系统才支持通过此路径迁移到新服务包。例如,位于受特殊保护的网络中的计算机。如果您的系统已注册,请使用 YaST 或 Zypper 迁移。

重要
重要:安装源

此迁移路径要求您要迁移的系统有权访问安装源。例如,可以设置 RMT 服务器或 SLP 服务器来实现此目的。

此外,系统必须能够访问所安装产品版本的最新更新软件源。

  1. 如果您已登录到要迁移计算机上正在运行的图形会话,请注销该会话,并切换到文本控制台。不建议从图形会话内部运行更新。请注意,这并不适用于从远程计算机登录的情况(除非您正在使用 X 运行 VNC 会话)。

  2. 用旧 SUSE Linux Enterprise 软件源更新软件包管理工具:

    > sudo zypper patch --updatestack-only
  3. 获取当前未指派软件源的软件包(孤立的软件包)列表。将不会迁移这些软件包,且不保证迁移后它们可正常工作(因为这些软件包所依赖的其他软件包可能发生了更改,与这些软件包不再兼容)。若要获取该列表,请运行:

    > sudo zypper packages --orphaned

    仔细检查该列表,去除所有不再需要的孤立软件包。记下所有剩余的孤立软件包,稍后需要进行比较。

  4. 运行以下命令,获取系统当前已订阅的所有软件源的列表:

    > sudo zypper repos -u

    更新每个软件源 URL,使其产品版本号变为 15-SP4。例如,如果某个软件源的 URL 为

    http://rmt.example.com/repo/SUSE/Products/SLE-15-SP2-Product-SLES/x86_64/product/

    请将其变为

    http://rmt.example.com/repo/SUSE/Products/SLE-15-SP3-Product-SLES/x86_64/product/

    需要对已启用的所有软件源执行此操作。同时请考虑对当前已禁用的软件源执行此操作,以免未来在激活这些软件源时,系统中包含错误的安装源。

    要更改软件源 URL,请采取以下做法:

    1. 使用 YaST › 软件 › 软件源。选择一个软件源,然后单击编辑以进行必要更改。针对所有软件源重复此过程。

    2. 使用 Zypper.运行以下命令去除旧软件源

      > sudo zypper removerepo OLD_REPO_ID

      然后运行以下命令添加相应的新软件源

       > sudo zypper addrepo -f URL NAME-15-SP4
    3. 编辑 /etc/zypp/repos.d 中的软件源配置文件。每个软件源由一个配置文件表示。必须在每个文件中更改 baseurl 参数的值。

  5. 运行 zypper repos -u 检查更改,然后运行以下命令更新软件源:

    > sudo zypper refresh -f -s

    如果更新软件源失败,请再次检查是否输入了错误的 URL。如果无法解决问题,建议禁用失败的软件源。

    如果正确配置了所有软件源,请再次运行

    > sudo zypper refresh -f -s

    ,以确保所有软件源都是最新的。

  6. 在开始迁移之前,建议先执行测试运行:

    > sudo zypper dup -D --no-allow-vendor-change --no-recommends

    参数 -D 将执行试运行,即模拟迁移而不实际更改系统。如果出现问题,请先解决问题,然后再继续。如果测试运行成功,请运行以下命令来执行实际迁移:

    > sudo zypper dup --no-allow-vendor-change --no-recommends

    -no-allow-vendor-change 确保第三方 RPM 不会重写基础系统中的 RPM。--no-recommends 选项可确保初始安装过程中取消选择的软件包不会再次被添加。

  7. 迁移完成且系统已引导进入新的服务包版本后,请再次运行孤立软件包检查:

    > sudo zypper packages --orphaned

    将新列表与开始迁移之前生成的列表进行比较。如果列表中出现新软件包,原因可能是这些软件包已移到新服务包中的其他模块。如果以前的安装中不包含该模块,则不会更新该软件包。

    您可以在 https://scc.suse.com/packages 上检查软件包所属的模块。使用 zypper addrepo 或 YaST 软件源模块添加缺失的模块,然后运行以下命令更新孤立的软件包:

    > sudo zypper install --no-recommends LIST OF PACKAGES
  8. 现已成功迁移到新服务包!

5.7 回滚服务包

如果服务包对于您而言不起作用,则 SUSE Linux Enterprise 支持将系统恢复到开始服务包迁移之前的状态。前提是对 Btrfs 根分区启用了快照(自 SLES 12 开始,这一直是默认设置)。有关详细信息,请参见Book “管理指南”, Chapter 10 “通过 Snapper 进行系统恢复和快照管理”

  1. 获取所有 Snapper 快照的列表:

    > sudo snapper list

    查看输出以找到在开始服务包迁移之前刚创建的快照。Description 列包含相应的声明,并且 Userdata 列中会将该快照标记为 important。记住 # 列中的快照编号,以及 Date 列中该快照的日期。

  2. 重新启动系统。从引导菜单中选择从只读快照启动引导加载程序,然后选择上一步中记下的日期和编号所对应的快照。此时会装载第二个引导菜单(快照中的那个)。选择以 SLES 15 SP4 开头的项并引导它。

  3. 系统会引导到先前的状态,并且系统分区会以只读方式挂载。以 root 身份登录,并检查您是否选择了正确的快照。另外,请确保一切如常。请注意,由于根文件系统是以只读方式挂载的,因此功能可能受限。

    如果出现问题,或者您引导了错误的快照,请重新引导并选择从另一个快照引导 — 到此为止,系统尚未进行任何永久更改。如果快照正确并且按预期工作,请运行以下命令让更改永久生效:

    > sudo snapper rollback

    重引导计算机。在引导屏幕上,选择默认的引导项以重引导至恢复后的系统。

  4. 检查是否已正确重设置软件源配置。另外,检查是否所有产品均已正确注册。如果以上任何一项不正确,则稍后可能无法再有效地执行系统更新,或者可能会使用错误的软件包软件源更新系统。

    请先确保系统可以访问互联网,再开始此过程。

    1. 运行以下命令以刷新服务和软件源:

      > sudo zypper ref -fs
    2. 运行以下命令以获得活动的软件源列表:

      > sudo zypper lr

      仔细检查此命令的输出。为此次更新添加的服务和软件源不应该包含在列表中。例如,如果您是从 SLES 15 SP4 回滚到 SLES15 GA,则列表中必须包含 SLES15-GA 软件源,而不包含 SLES15-SP4 软件源。

      如果列出了错误的软件源,请将其删除,必要时,请用与您的产品或服务包版本匹配的版本替换它们。有关受支持迁移路径的软件源列表,请参见第 2.3 节 “模块依赖项和生命周期”。(请注意,没有必要进行手动干预,因为软件源会自动更新,但最好进行校验并执行任何必要的更正。)

    3. 最后,通过运行以下命令检查所有已安装产品的注册状态:

      > sudo SUSEConnect --status

      所有产品都应该报告为已注册。若非如此,请运行以下命令修复注册:

      > sudo SUSEConnect --rollback

现在,您已成功将系统恢复到就在开始服务包迁移之前捕获的状态。

5.8 使用 SUSE Manager 升级

SUSE Manager 是一个服务器解决方案,用于提供适用于 SUSE Linux Enterprise 客户端的更新、补丁和安全修复。它随附了一套工具和基于 Web 的用户界面,用于执行管理任务。有关 SUSE Manager 的详细信息,请参见 https://www.suse.com/products/suse-manager/

SP 迁移允许从一个服务包 (SP) 迁移到同一个主要版本中的另一个服务包(例如,从 SLES 15 GA 迁移到 SLES 15 SP4)。

如果您的计算机由 SUSE Manager 管理,请根据 SUSE Manager 文档中所述更新计算机。https://documentation.suse.com/suma/ 上的《SUSE Manager Upgrade Guide》(SUSE Manager 升级指南)中介绍了客户端迁移过程。

5.9 从 openSUSE Leap 升级到 SUSE Linux Enterprise Server

您可以将 openSUSE Leap 安装升级到 SUSE Linux Enterprise Server。升级过程与第 5.4 节 “使用联机迁移工具 (YaST) 升级”类似,但需要执行一些额外的步骤。在生产系统上执行此过程之前,建议您先在复制了生产系统设置的测试系统上运行此过程。

要了解哪些 openSUSE Leap 版本支持迁移,请参见第 1.2 节 “支持的 SLES 15 SP4 升级路径”

警告
警告:并非所有 openSUSE 软件包都可迁移

openSUSE 提供的软件包比 SUSE Linux Enterprise Server 的要多。大多数额外的软件包都可通过 SUSE Package Hub 获得并且将会迁移。任何无法通过 SUSE Package Hub 获得的额外软件包在迁移后都不会再接收更新,因此应在迁移后将其去除。

请确保 SUSE Linux Enterprise Server 和 SUSE Package Hub 软件源中提供了运行系统所需的全部软件包。有关 SUSE Package Hub 的详细信息,请参见 https://packagehub.suse.com/

过程 5.1︰ 将 openSUSE Leap 升级到 SUSE Linux Enterprise Server

要从 openSUSE Leap 迁移到 SUSE Linux Enterprise Server,请执行以下步骤:

  1. 切换到 TTY,例如,按 CtrlAltF1 键切换。然后以 root 身份登录。

  2. 安装 yast2-registrationrollback-helper 软件包。

    # zypper in yast2-registration rollback-helper
  3. 启用 rollback-helper 服务:

    # systemctl enable rollback
  4. 在 SUSE Customer Center 中注册系统:

    # yast2 registration
  5. 执行迁移:

    # yast2 migration

    如果发生软件包冲突,YaST 提供了一个可供选择的解决方案列表。

  6. 去除孤立的软件包:

    # zypper rm $(zypper --no-refresh packages --orphaned | gawk '{print $5}' | tail -n +5)
  7. 重引导系统:

    # reboot

现在,您已成功将系统迁移到 SUSE Linux Enterprise Server

如果您在迁移后遇到问题,可以像升级服务包一样还原迁移。有关说明,请参见第 5.7 节 “回滚服务包”

6 完成升级

升级后,您需要执行一些额外的任务。下一章将指导您完成这些步骤。

6.1 升级后检查

  • 检查任何孤立的软件包。升级过程中可能会将软件包重命名、去除、合并或分割。因此,有些软件包可能会变成孤立状态,不再受支持。系统会自动去除孤立的软件包。以下命令可以列出这些软件包:

    > zypper packages --orphaned --unneeded

    请使用该列表确定仍然需要的软件包以及可以安全去除的软件包。

  • 检查所有 *.rpmnew*.rpmsave 文件,检查其内容,并在可能的情况下合并适宜的更改。如果升级包含对某个默认配置文件的更改,软件包不会重写该配置文件,而是创建上述其中一个文件类型。其中,*.rpmnew 包含新的默认配置且将原始文件保持原样不变,而 *.rpmsave 是原始配置的副本且已由新的默认文件替换。

    您无需搜索整个文件系统中的 *.rpmnew*.rpmsave 文件,最重要的文件都已储存在 /etc 目录中。使用以下命令可以列出这些文件:

    > find /etc/ -name "*.rpmnew" -o -name "*.rpmsave"

6.2 启用 Python 3 模块

SUSE Linux Enterprise Server 15 默认会使用 Python 3.6。SLES 15 SP3 中增加了更新的版本 Python 3.9 来替代 Python 3.6。自 SLES 15 SP4 起,不再支持此版本,而是通过 Python 3 模块来提供包含重要更新和安全修复的较新 Python 版本。

如果您在 SUSE Linux Enterprise Server 15 SP3 下安装了 Python 3.9,请使用以下命令来启用 Python 3 模块:

> sudo SUSEConnect -p sle-module-python3/15.4/x86_64.

或者,您也可以使用 zypper remove -u python39 去除 3.9 版本,恢复为默认的 Python 版本。

6.3 重新设置 XFS v4 设备的格式

SUSE Linux Enterprise Server 支持 XFS 文件系统的磁盘上格式 (v5)。这种格式的主要优点包括,所有 XFS 元数据的自动检查总数、文件类型支持以及支持文件更多数量的访问控制列表。

请注意,低于 3.12 版的 SUSE Linux Enterprise 内核、低于 3.2.0 版的 xfsprogs,以及在 SUSE Linux Enterprise 12 之前发布的 GRUB 2 版本均不支持这种格式。

重要
重要:已弃用 V4

XFS 已弃用采用 V4 格式的文件系统。这种文件系统格式是通过以下命令创建的:

> sudo mkfs.xfs -m crc=0 DEVICE

该格式用于 SLE 11 及更低版本中,现在此格式会导致 dmesg 发出警告消息:

Deprecated V4 format (crc=0) will not be supported after September 2030

如果您在 dmesg 命令的输出中看到上述消息,建议您将文件系统更新为 V5 格式:

  1. 将您的数据备份到另一个设备中。

  2. 在设备上创建文件系统。

    > sudo mkfs.xfs -m crc=1 DEVICE
  3. 在更新后的设备上使用备份恢复数据。

7 源代码向后移植

SUSE 广泛使用了向后移植,例如当前的软件修复和功能迁移到过去发布的 SUSE Linux Enterprise 软件包中。本章中的信息解释通过比较版本号来判断 SUSE Linux Enterprise 软件包的功能和安全性为何有误导性。此外,本章还会说明 SUSE 如何在确保系统软件安全且最新的同时,保持 SUSE Linux Enterprise 产品上所运行应用程序软件的兼容性。您还将了解如何检查在 SUSE Linux Enterprise 系统软件中实际解决了哪些公共安全问题,以及您的软件的当前状态。

7.1 向后移植的原因

上游开发者主要关心所开发软件的进度。他们往往会在修复 bug 的同时引入尚未经过广泛测试并可能会造成新 bug 的新功能。

对于分发包开发者而言,必须区分两种情况:

  • 在对功能造成有限中断的情况下执行的 bug 修复;以及

  • 可能会中断现有功能的更改。

通常情况下,当某个软件包已属于所发布的发行套件时,发行套件开发者不会遵照所有的上游更改。通常,他们会继续使用最初发布的上游版本,并根据上游更改来创建补丁以修复 bug。这种做法称为向后移植

通常,分发包开发者只会在两种情况下引入软件的更新版本:

  • 当他们的软件包与上游版本之间的差异过大,以致向后移植的做法不再可行,或者

  • 软件(例如防恶意软件的软件)由于固有的性质而变得不合时宜。

由于我们致力于在几个企业软件考虑因素之间实现合理的平衡,SUSE 广泛使用了向后移植。其中,最重要的考虑因素包括:

  • 提供稳定的接口 (API),软件供应商在构建可用于 SUSE 企业产品的产品时可以依赖这些接口。

  • 确保 SUSE 企业产品版本中使用的软件包具有最好的质量,这些软件包本身以及在成为整个企业产品的一部分后已经过充分的测试。

  • 由其他供应商对 SUSE 的企业产品维持各种认证,就像对 Oracle 或 SAP 产品的认证一样。

  • 让 SUSE 开发人员专注于开发下一个产品版本,而不是顾此失彼地将精力分散在众多不同的修订版上。

  • 清楚明了特定企业版本中包含的功能和特性,以便我们的支持可以提供有关该版本的准确及时的信息。

7.2 不向后移植的原因

不要将新的上游软件包版本引入我们的企业产品,这是常见的策略规则,但不是硬性规则。对于特定的软件包类型,尤其是防病毒软件,安全方面是我们考虑更多的因素,而不是优先考虑质量保证方面的保守做法。对于这个种类的软件包,偶尔会将更新的版本引入企业产品系列的发布版本。

有时,对于其他类型的软件包,我们也会选择引入新版本,而不是向后移植。当生成向后移植在经济效益上不可行,或者由于极其相关的技术原因而需要引入更新版本时,我们会采取这种做法。

7.3 向后移植对版本号解读的影响

由于采用向后移植的做法,用户不能简单地通过比较版本号来确定 SUSE 软件包是否包含针对特定问题的修复,或者其中是否添加了特定的功能。在使用向后移植时,SUSE 软件包版本号的上游部分只是表示 SUSE 软件包基于的上游版本。它可能包含相应上游版本中没有但已向后移植到 SUSE 软件包中的 bug 修复和功能。

在涉及到向后移植时,版本号的这种有限价值可能会造成在特定情况下产生问题,也就是在使用安全扫描工具的时候。某些安全漏洞扫描工具(或者在此类工具中进行特定的测试)只能基于版本号运行。因此,在涉及到向后移植时,这些工具和测试很容易生成误报(将某个软件错误地识别为有漏洞)。在评估安全扫描工具生成的报告时,请始终检查其中的条目是基于版本号,还是基于实际的漏洞测试。

7.4 检查已修复的 bug 和向后移植的功能

有关向后移植的 Bug 修复和功能的信息储存在多个位置:

  • 软件包的更改日志:

    > rpm-q --changelog name-of-installed-package
    > rpm -qp --changelog packagefile.rpmpackagefile.rpm

    其输出简要记录了软件包的更改历史记录。

  • 软件包的更改日志可能包含类似于引用 SUSE Bugzilla 跟踪系统中的 bsc#1234 (Bugzilla Suse.Com) 之类的项,或者包含指向其他 Bug 跟踪系统的链接。出于保密政策的缘故,您不一定能够访问所有此类信息。

  • 软件包中可能包含 /usr/share/doc/PACKAGENAME/README.SUSE 文件,该文件包含特定于 SUSE 软件包的一般概要信息。

  • RPM 源软件包包含构建普通二进制 RPM 期间应用的补丁,这些补丁以独立文件的形式存在,如果您熟知如何阅读源代码,可以对这些文件进行解释。有关安装 SUSE Linux Enterprise 软件源的信息,请参见Book “管理指南”, Chapter 9 “使用命令行工具管理软件”, Section 9.1.3.5 “安装或下载源软件包”。有关在 SUSE Linux Enterprise 上构建软件包的信息,请参见Book “管理指南”, Chapter 9 “使用命令行工具管理软件”, Section 9.2.5 “安装和编译源软件包”。请参见《Maximum RPM》(充分利用 RPM)一书,了解有关 SUSE Linux Enterprise 软件包构建的细节。

  • 有关安全 Bug 修复,请查阅 SUSE 安全声明。这些声明往往以公共漏洞和披露 (CVE) 项目所维护的标准化名称(例如 CAN-2005-2495)来表示 Bug。