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

升级指南

本指南引导您完成 SUSE Linux Enterprise Server 的升级和更新。指南中介绍了不同的升级方法,例如,从安装 DVD、通过网络引导或从运行中的系统来进行升级。

出版日期: 2024 年 9 月 29 日

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

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

有关 SUSE 商标,请参见 http://www.suse.com/company/legal/。所有其它第三方商标是其各自拥有者的财产。商标符号(®、™ 等)代表 SUSE 及其附属公司的商标。星号 (*) 代表第三方商标。

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

关于本指南

可通过不同的方法升级 SUSE Linux Enterprise Server。不可能涵盖所有的引导服务器或安装服务器、自动安装或部署映像的组合。本手册有助于为您的安装选择适当的升级方法。

Book “升级指南”

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

1 可用文档

注意
注意:在线文档和最新更新

我们的产品文档可从 http://www.suse.com/documentation/ 获取,您也可以在此处找到最新更新,以及浏览或下载各种格式的文档。

此外,您安装的系统的 /usr/share/doc/manual 下通常会提供产品文档。

针对本产品提供的文档如下:

Article “安装快速入门

此《快速入门》引导您逐步完成安装 SUSE® Linux Enterprise Server 15 的过程。

Book “部署指南

显示如何安装单个或多个系统,以及如何利用产品继承功能建立部署基础结构。有各种方法可供选择,可以选择使用本地安装或网络安装服务器,也可以选择使用远程控制、高度自定义的自动安装技术进行大规模部署。

Book “管理指南

讲述系统管理任务,如维护、监视和自定义初始安装的系统。

Book “Virtualization Guide

概述虚拟化技术,并介绍虚拟化的统一接口 libvirt,以及有关特定超级管理程序的详细信息。

Book “储存管理指南

提供有关如何在 SUSE Linux Enterprise Server 上管理储存设备的信息。

Book “AutoYaST Guide

AutoYaST 系统会使用包含安装和配置数据的 AutoYaST 配置文件,让您以无人照管方式批量部署 SUSE Linux Enterprise Server 系统。该手册将引导您完成自动安装的基本步骤,包括准备、安装和配置。

Book “Security and Hardening Guide

介绍系统安全的基本概念,包括本地安全方面和网络安全方面。说明如何使用产品固有的安全软件(例如 AppArmor),或者能够可靠收集有关任何安全相关事件的信息的审核系统。

Book “System Analysis and Tuning Guide

关于问题检测、解决和优化的管理员指南。了解如何使用监视工具检查和优化系统以及如何有效管理资源。还包含常见问题和解决方法的概述以及其他帮助和文档资源。

Book “Repository Mirroring Tool Guide

储存库管理工具管理员指南。储存库管理工具是 SUSE Customer Center 及储存库与注册目标的代理系统。了解如何安装和配置本地 RMT 服务器、镜像和管理储存库、管理客户端计算机,以及配置客户端以使用 RMT。

Book “GNOME 用户指南

介绍 SUSE Linux Enterprise Server 的 GNOME 桌面。指导您使用和配置桌面并帮助您执行关键任务。它主要面向想要有效使用 GNOME 作为其默认桌面的最终用户。

2 反馈

提供了多种反馈渠道:

Bug 和增强请求

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

有关 openSUSE 的帮助由社区提供。有关更多信息,请参考 https://en.opensuse.org/Portal:Support

要报告产品组件的 Bug,请访问 https://scc.suse.com/support/requests 并登录,然后单击新建

用户意见

我们希望收到您对本手册和本产品中包含的其他文档的意见和建议。请使用联机文档每页底部的“用户注释”功能或转到 http://www.suse.com/documentation/feedback.html 并在此处输入注释。

邮件

如有对本产品文档的反馈,也可以发送邮件至 doc-team@suse.com。请确保反馈中含有文档标题、产品版本和文档发布日期。要报告错误或给出增强建议,请提供问题的简要说明并指出相应章节编号和页码(或 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 命令,以非特权用户身份来运行它们。

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

    tux > command
  • 注意

    警告
    警告:警告通知

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

    重要
    重要:重要通知

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

    注意
    注意:注意通知

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

    提示
    提示:提示通知

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

1 升级路径和方法

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

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

1.1 支持的 SLE 15 升级路径

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

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

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

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

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

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

注意
注意:跳过服务包

按顺序安装所有服务包是最安全的升级路径。在某些情况下,支持在升级时跳过一到两个服务包,但建议不要跳过任何服务包。

注意
注意:升级主要版本

建议在升级到新的主要版本时(例如从 SUSE Linux Enterprise 11 升级到 SUSE Linux Enterprise 12),执行全新安装。

从 SUSE Linux Enterprise 10(任何服务包)升级

不支持直接迁移到 SUSE Linux Enterprise 15。在此情况下,建议执行全新安装。

从 SUSE Linux Enterprise 11 GA/SP1/SP2/SP3 升级

不支持直接迁移到 SUSE Linux Enterprise 15。您的版本至少需为 SLE 11 SP4,才能升级到 SLE 15

如果您不能执行全新安装,请先将已安装的 SLE 11 服务包升级到 SLE 11 SP4。《SUSE Linux Enterprise 11 部署指南》中说明了这些步骤。

从 SUSE Linux Enterprise 11 SP4 升级

要从 SLE 11 SP4 升级,只支持采用脱机升级方式。有关详细信息,请参见第 1.2 节 “联机和脱机升级”

从 SUSE Linux Enterprise 12 GA/SP1/SP2 升级

不支持直接从 SLE 12 GA/SP1/SP2 升级到 SLE 15。需要先升级到 SLE 12 SP3。

从 SUSE Linux Enterprise 12 SP3 升级

要从 SUSE Linux Enterprise 12 SP3 升级,只支持采用脱机升级方式。有关详细信息,请参见第 1.2 节 “联机和脱机升级”

从 openSUSE Leap 15 迁移

支持从 openSUSE Leap 15 迁移。请参见第 5.8 节 “从 openSUSE Leap 迁移到 SUSE Linux Enterprise Server

最短的升级路径概述
图 1.1︰ 最短的升级路径概述

1.2 联机和脱机升级

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

联机

从正在运行的系统本身执行的所有升级均视为联机升级。示例:使用 Zypper 或 YaST 通过 SUSE Customer Center、储存库管理工具 (RMT) 或 SUSE Manager 连接进行的升级。

有关细节,请参见第 5 章 “联机升级

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

脱机

脱机升级意味着要升级的操作系统未在运行,相反,需引导另一个操作系统(例如,从安装 DVD 或网络引导),然后执行升级。

有关细节,请参见第 4 章 “脱机升级

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 11 或 12 是主要版本。

迁移

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

迁移目标

系统可迁移到的兼容产品集,包含产品/扩展的版本以及储存库的 URL。迁移目标随时间而变化,并依赖于安装的扩展。可以选择多个迁移目标,例如,SLE 12 SP2 和 SES2 或 SLE 12 SP2 和 SES3。

模块

模块则全部由 SUSE Linux Enterprise Server 负责支持,其生命周期也不同。它们都有明确定义的范围,只通过联机通道提供。要订阅 SUSE Customer Center、RMT(储存库管理工具)或 SUSE Manager,必须先在这些通道中注册。

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

增补程序

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

服务包 (SP)

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

上游

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

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

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

更新

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

升级

安装包或分发包的更新主要版本,引入新功能

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 模块依赖项和生命周期

有关模块、其依赖项和生命周期的列表,请参见 https://www.suse.com/releasenotes/x86_64/SUSE-SLES/15/#Intro.ModuleExtensionRelated

2.4 生成定期生命周期报告

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

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

root # systemctl enable lifecycle-report

可使用任何文本编辑器,在 /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 和 2 缺陷)

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

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

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

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

root # zypper repos -u

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

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

root # SUSEConnect -r REGCODE

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

root # SUSEConnect --de-register

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

root # SUSEConnect -s

2.7 识别 SLE 版本

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

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

tux > 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 阅读发行说明

在发行说明中,您可以找到有关自 SUSE Linux Enterprise Server 的上一个版本发行后所进行的更改的其他信息。检查发行说明以了解:

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

  • 所用的任何软件包是否已发生重大更改;

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

发行说明还提供未能及时编入手册中的信息。它们还包含有关已知问题的说明。

如果您跳过了一个或多个服务包,另请检查所跳过服务包的发行说明。发行说明通常只包含两个连续的版本之间的更改。如果您只阅读最新的发行说明,可能会了解不到某些重大更改。

https://www.suse.com/releasenotes/ 上在线查找最新的发行说明。

您也可在安装 DVD 上的 docu 目录中查找发行说明。

3.3 创建备份

在更新之前,请将现有配置文件复制到单独一个媒体(如磁带设备、可卸硬盘等)上,用以备份数据。这主要适用于储存在 /etc 中的文件以及 /var/opt 中的一些目录和文件。最好将 /homeHOME 目录)中的用户数据也写入备份媒体。以 root 用户的身份备份此数据。仅 root 用户对所有本地文件具有读许可权限。

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

3.4 列出已安装的包和储存库

保存已安装包的列表通常很有用,例如,在全新安装某个新的主要 SLE 版本或恢复到旧版本时就是如此。

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

创建包含全部所用储存库列表的文件 repositories.bak.repo

root # zypper lr -e repositories.bak

另外,创建包含所有已安装包的列表的文件 installed-software.bak

root # rpm -qa --queryformat '%{NAME}\n' > installed-software.bak

备份这两个文件。使用以下命令可恢复储存库和已安装的包:

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

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

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

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

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

  • 包依赖项和模式范围可能已发生变化。

3.5 SUSE Linux Enterprise Server 11 SP4 升级

如果您在 SUSE Linux Enterprise Server 11 SP4 上使用的是 MySQL、PostgreSQL 或基于 Java MD5 的证书,请根据以下各节所述准备系统。

3.5.1 迁移 MySQL 数据库

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

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

  1. 登录到 SUSE Linux Enterprise 11 计算机。

  2. 创建转储文件:

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

    默认情况下,mysqldump 不会转储 INFORMATION_SCHEMAperformance_schema 数据库。有关详细信息,请参见 https://dev.mysql.com/doc/refman/5.5/en/mysqldump.html

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

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

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

  6. 确保启动 MariaDB 服务器:

    root # systemctl start mysql

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

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

    root # mysql -u root -p

3.5.2 迁移 PostgreSQL 数据库

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

迁移过程通过使用 pg_upgrade 命令执行,这种方法可替代传统的转储和重新装载。与转储并重新装载方法相比,pg_upgrade 可以减少迁移耗费的时间。

每个 PostgreSQL 版本将其文件储存在与版本相关的不同目录中。更新后,目录将从 /usr/lib/postgresql96/ 更改为 /usr/lib/postgresql10/

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

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

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

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

    • 安装新 PostgreSQL 主要版本的包。对于 SLE15,这意味着要安装 postgresql10-server 及其依赖的所有包。

    • 安装包 postgresql10-contrib, 其中包含命令 pg_upgrade

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

      VACUUM FULL
  2. 停止 PostgreSQL 服务器:

    root # systemctl stop postgresql.service
  3. 重命名旧数据目录:

    root # mv /var/lib/pgsql/data /var/lib/pgsql/data.old
  4. 创建新数据目录:

    root # mkdir -p /var/lib/pgsql/data
  5. 如果您已更改旧版本中的配置文件,请将文件 postgresql.conf 、pg_hba.conf 复制到新的 data 目录:

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

    root # systemctl start postgresql.service
    root # systemctl stop postgresql.service
  7. 启动迁移过程:

    root # pg_upgrade \
      --old-datadir "/var/lib/pgsql/data.old" \
      --new-datadir "/var/lib/pgsql/data" \
      --old-bindir "/usr/lib/postgresqli96/bin/" \
      --new-bindir "/usr/lib/postgresql10/bin/"
  8. 启动新数据库实例:

    root # systemctl start postgresql.service
  9. 检查迁移是否成功。没有通用的工具可用来自动执行此步骤。此项操作取决于您的用例,以及要测试的数量和内容。

  10. 去除所有旧 PostgreSQL 包和旧数据目录:

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

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

从 SP1 更新到 SP2 期间,在安全性修复时禁用了基于 MD5 的证书。如果您之前创建的证书是 MD5 证书,请执行以下步骤重新创建证书:

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

  2. 创建一个私用密钥:

    root # openssl genrsa -out server.key 1024

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

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

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

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

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

3.6 关闭虚拟机 Guest

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

3.7 检查 RMT 客户端上的 clientSetup4SMT.sh 脚本

要迁移针对 RMT 服务器注册的客户端操作系统,需要检查主机上的 clientSetup4SMT.sh 脚本是否为最新版本。较旧版 RMT 的 clientSetup4SMT.sh 无法管理 RMT 12 客户端。如果您在 RMT 服务器上定期应用软件增补程序,那么位于 <SMT_HOSTNAME>/repo/tools/clientSetup4SMT.shclientSetup4SMT.sh 始终都是最新版本。

3.8 磁盘空间

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

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

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

3.8.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.8.2 检查 Btrfs 根文件系统上的磁盘空间

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

root # df -h /

另外请检查所有其他装入分区上的可用空间。下列建议已证实值得采纳:

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

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

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

    root # snapper list
    root # snapper delete NUMBER

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

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

对于运行 SMT 的服务器,需要执行特殊的升级过程。请参见《Repository Management Tool Guide》中的Book “Repository Mirroring Tool Guide”, Chapter 2 “Migrate from SMT to RMT”

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

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

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

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

3.11 在 IBM Z 上升级

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

3.12 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︰ 从 SLE 11 SP4 手动升级到 SLE 12 SP3
  1. 选择并准备引导媒体,请参见Book “部署指南

  2. 插入 SUSE Linux Enterprise 12 SP3 安装媒体的 DVD 1 并引导计算机。欢迎屏幕即会显示,接着是引导屏幕。

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

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

4.3 从网络源启动升级

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

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

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

网络连接和网络服务

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

  • 域名服务

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

  • OpenSLP(可选)

引导媒体

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

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

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

  1. 插入 SUSE Linux Enterprise 12 SP2 安装媒体的 DVD 1 并引导计算机。欢迎屏幕即会显示,接着是引导屏幕。

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

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

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

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

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

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

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

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

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

4.4 启用自动升级

升级过程可以自动执行。要启用自动更新,必须设置内核参数 autoupgrade=1。可在引导时于引导选项字段中设置该参数。有关细节,请参见 https://www.suse.com/documentation/sles-12/book_autoyast/data/introduction.html

4.5 升级 SUSE Linux Enterprise

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

  1. (从安装媒体或网络)引导后,请在引导屏幕上选择升级这一项。要按照后续步骤所述手动执行升级,则需禁用自动升级过程。请参考第 4.4 节 “启用自动升级”

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

    如果您选择安装而不是升级,之后数据可能会丢失。请格外小心不要执行全新安装,以免损坏数据分区。

    请务必在此处选择升级

    YaST 将启动安装系统。

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

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

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

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

  5. 以前使用过的储存库屏幕上,调整储存库的状态:启用您要包含在升级过程中的储存库,并禁用不再需要的所有储存库。单击下一步继续。

  6. 下一步骤取决于要升级的系统是否已注册。

    1. 如果该系统未注册,YaST 会显示一条弹出讯息,建议使用另一个安装媒体,即 SLE-15-Packages 媒体。

      如果您没有该媒体,则只能将该系统升级到精简的 SUSE Linux Enterprise 15 系统。

    2. 如果该系统已注册,则 YaST 将显示可能的迁移目标和摘要。

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

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

  8. 检查升级的安装设置

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

  10. 升级过程成功完成后,检查是否存在任何孤立的包。孤立的包是指不再属于活动储存库的包。以下命令可以列出这些包:

    tux > zypper packages --orphaned

    借助该列表,您可以决定是仍需要该包还是可以将其安全卸装。

4.6 通过 SUSE Manager 更新

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

SUSE Manager 可为您提供 SP 迁移或完整系统升级支持。

SP 迁移

SP 迁移允许从一个主要版本中的一个服务包 (SP) 迁移到另一个服务包(例如,从 SLES 12 SP1 迁移到 12 SP2)。有关详细信息,请参见《SUSE Manager Best Practices》(SUSE Manager 最佳实践)Client Migration(客户端迁移)一章中的Migrating SUSE Linux Enterprise Server 12 or later to version 12 SP2(将 SUSE Linux Enterprise Server 12 或更高版本迁移到版本 12 SP2)一节:

https://www.suse.com/documentation/suse-manager/,版本 3.1。

系统升级

您可以使用 SUSE Manager 来执行系统升级。通过集成的 AutoYaST 技术,可以从一个主要版本升级到下一个主要版本(例如,从 SLES 11 SP3 升级到 12 SP2)。有关详细信息,请参见《SUSE Manager Best Practices》(SUSE Manager 最佳实践)Client Migration(客户端迁移)一章中的Migrating SUSE Linux Enterprise 11 SP3 to version 12 SP2(将 SUSE Linux Enterprise 11 SP3 迁移到版本 12 SP2)一节:

https://www.suse.com/documentation/suse-manager/,版本 3.1。

4.7 回滚后更新注册状态

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

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

tux > sudo snapper rollback

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

tux > 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 18 “安装模块、扩展和第三方附加产品”, Section 18.1 “从在线通道安装模块与扩展”

5 联机升级

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

5.1 概念概述

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

从 SLE 12 开始,YaST Wagon 已经由 YaST 迁移 (GUI) 和 Zypper 迁移(命令行)替代。系统支持以下功能:

  • 系统在首个 RPM 更新之前始终处于指定的状态

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

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

  • 通过系统工具回滚;不需要备份/恢复

  • 使用所有活动储存库

  • 可以跳过服务包

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

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

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

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 7 “通过 Snapper 进行系统恢复和快照管理”)还原到之前的状态。

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

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

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

注意
注意:减少安装大小

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

要更改这种默认行为,只允许安装所需的包,请调整 /etc/zypp/zypp.conf 并设置以下变量:

solver.onlyRequires = true
installRecommends=false # or commented

这会更改所有与包相关操作的行为,例如安装增补程序或新包的行为。

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

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

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

  3. 如果您是 LTSS 订购者,请确保 LTSS 扩展储存库处于活动状态。

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

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

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

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

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

  9. 如果迁移工具提供更新储存库,建议单击继续。

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

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

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

5.5 使用 Zypper 升级

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

注意
注意:减少安装大小

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

要更改这种默认行为,只允许安装所需的包,请调整 /etc/zypp/zypp.conf 并设置以下变量:

solver.onlyRequires = true
installRecommends=false # or commented

这会更改所有与包相关操作的行为,例如安装增补程序或新包的行为。要更改某次调用的 Zypper 行为,请在命令行上添加参数 --no-recommends

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

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

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

    tux > sudo SUSEConnect --regcode YOUR_REGISTRATION_CODE
  3. 如果您是 LTSS 订购者,请确保 LTSS 扩展储存库处于活动状态。

  4. 运行 zypper migration

    tux > sudo zypper migration
    Executing 'zypper  patch-check'
    
    Refreshing service 'SUSE_Linux_Enterprise_Server_12_x86_64'.
    Loading repository data...
    Reading installed packages...
    0 patches needed (0 security patches)
    
    Available migrations:
    
        1 | SUSE Linux Enterprise Server 12 SP1 x86_64
        2 | SUSE Linux Enterprise Server 12 SP2 x86_64

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

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

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

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

  5. 查看所有更改,特别是即将去除的包。键入 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 ↓ 键在外壳中滚动。

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

5.6 使用 Plain Zypper 升级

如果不能使用 YaST 迁移或 Zypper 迁移,您仍可以单纯通过 Zypper 并执行一些人工交互进行迁移。要开始服务包迁移,请执行以下操作:

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

  2. 用旧 SUSE Linux Enterprise 储存库更新包管理工具:

    tux > sudo zypper patch --updatestack-only
  3. 如果系统已注册,则需要先取消注册:

    tux > sudo SUSEConnect --de-register
  4. 去除旧安装源和储存库,并调整第三方储存库。

  5. 添加新的安装源,不论是本地的还是远程的(有关占位符 REPOSITORY,请参考第 2.3 节 “模块依赖项和生命周期”):

    sudo zypper addrepo REPOSITORY

    您也可以使用 SUSE Customer Center 或储存库管理工具。适用于 AMD64/Intel 64 上的 SUSE Linux Enterprise 12 SP1 的命令为:

    tux > sudo SUSEConnect -p SLES/12.2/x86_64 OPTIONS

    请注意,系统不支持跨体系结构升级。

    Zypper 将显示新旧内核之间的冲突。选择解决方案 1 继续。

    Problem: product:SLES-12.2-0.x86_64 conflicts with kernel < 4.4 provided by kernel-default-VERSION
     Solution 1: Following actions will be done:
      replacement of kernel-default-VERSION with kernel-default-VERSION
      deinstallation of kernel-default-VERSION
     Solution 2: do not install product:SLES-12.2-0.x86_64
  6. 完成迁移:

    tux > sudo zypper ref -f -s
    tux > sudo zypper dup --no-allow-vendor-change --no-recommends

    第一个命令会更新所有服务和储存库。第二个命令会执行发行套件升级。在这里,最后两个选项比较重要:-no-allow-vendor-change 确保第三方 RPM 不会重写基础系统中的 RPM。--no-recommends 选项可确保初始安装过程中取消选择的包不会再次被添加。

5.7 回滚服务包

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

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

    tux > sudo snapper list

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

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

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

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

    tux > sudo snapper rollback

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

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

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

    1. 运行以下命令以刷新服务和储存库:

      tux > sudo zypper ref -fs
    2. 运行以下命令以获得活动的储存库列表:

      tux > sudo zypper lr

      仔细检查此命令的输出。为此次更新添加的服务和储存库不应该包含在列表中。例如,如果您是从 SLES 12 SP1 回滚到 SLES 12 SP2,则列表中必须包含 SP1 储存库,而不包含 SLES12-SP2-PoolSLES12-SP2-Updates 储存库。

      如果列出了错误的储存库,请将其删除,必要时,请用与您的产品或服务包版本匹配的版本替换它们。有关受支持迁移路径的储存库列表,请参见第 2.3 节 “模块依赖项和生命周期”

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

      tux > sudo SUSEConnect --status

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

      tux > sudo SUSEConnect --rollback

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

5.8 从 openSUSE Leap 迁移到 SUSE Linux Enterprise Server

可将 openSUSE 安装联机迁移到 SUSE Linux Enterprise Server。此过程与第 5.5 节 “使用 Zypper 升级”类似,但需要执行一些额外的步骤。我们建议先在与生产设置相同的测试系统上运行此过程,然后再在生产系统中执行。

要查看支持迁移的 openSUSE Leap 版本,请阅读第 1.1 节 “支持的 SLE 15 升级路径”

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

openSUSE 储存库提供的包比 SUSE Linux Enterprise Server 储存库提供的包要多。如果您安装了 openSUSE 储存库中的任何包,迁移后,它们将不再会接收更新。如果执行下面的过程,将会去除这些包。

请确保 SUSE Linux Enterprise Server 储存库中提供了运行系统所需的全部包。您也可以检查 SUSE Package Hub 储存库中是否提供了这些包。有关细节,请参见Book “部署指南”, Chapter 18 “安装模块、扩展和第三方附加产品”, Section 18.3 “SUSE Package Hub”

要从 openSUSE Leap 迁移,请执行以下过程:

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

  2. 安装 SUSEConnect

    root # zypper in SUSEConnect
  3. 下载安装 DVD ISO 文件并装入到系统中。然后导入 SLE 的储存库密钥。

    root # mount /PATH/TO/ISO_FILE /mnt
    root # rpm  --import /mnt/repodata/repomd.xml.key
    root # umount /mnt
  4. 在 SCC 中注册,以获取 SUSE Linux Enterprise Server 储存库。

    root # SUSEConnect -r REGISTRATION_CODE -p SLES/PRODUCT_VERSION/ARCHITECTURE

    PRODUCT_VERSION 替换为 SUSE Linux Enterprise Server 的目标版本,例如 15.0

    ARCHITECTURE 替换为系统的体系结构,例如 x86_64AArch64

    忽略有关产品冲突的错误讯息。

  5. 现在手动添加 SLES 产品。

    root # zypper in --force-resolution -t product SLES

    y 确认包选择。

  6. 列出然后去除系统上的所有 openSUSE 储存库。

    root # zypper lr
    root # zypper rr [REPOSITORY_IDS]
  7. 现在,添加安装所需的模块。

    root # SUSEConnect --list-extensions
    [...]
    root # SUSEConnect -p sle-module-basesystem/VERSION/ARCHITECTURE
  8. 将安装的包迁移到 SUSE Linux Enterprise Server 储存库。

    root # zypper dup --force-resolution

    下载后,文件冲突可能会显示出来。确认这些冲突是否对您有影响,然后键入 yes 继续。

  9. 可选:添加其他储存库(例如 Package Hub),然后再次运行 zypper dup

  10. 去除孤立的包。

    root # zypper rm $(zypper packages --orphaned | gawk '{print $5}' | tail -n +7)
  11. 最后,重引导系统。

6 向后移植源代码

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

6.1 向后移植的原因

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

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

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

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

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

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

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

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

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

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

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

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

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

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

6.2 反对向后移植的原因

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

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

6.3 使用向后移植时解释版本号所产生的效果

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

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

6.4 检查已修复的 Bug 和向后移植的功能

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

  • 包的更改日志:

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

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

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

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

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

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