适用于 SUSE Linux Enterprise Server 12

7 更新 SUSE Linux Enterprise

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

如果您基本上已经熟悉 SUSE Linux Enterprise 更新、升级和服务包,可以查看术语小节了解最新信息,然后直接浏览到更新概述小节。这里会显示可能会有的可用更新,并提供有关计划总体更新以及后续部分的指导:更新到最新版本 SUSE Linux Enterprise Server 12 的逐步指导。

本章的其余部分提供了 SUSE 产品生命周期和服务包版本的背景信息、建议的升级策略、SUSE Linux Enterprise 软件相对于非最新版本号的更新程度(即“向后移植”),以及逐步更新指导参照的其他材料。

7.1 背景信息:术语

本章使用了若干术语。为了理解该信息,请阅读以下定义:

向后移植

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

增量 RPM

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

下游

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

扩展, 外接式附件产品

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

模块

模块则全部由 SUSE Linux Enterprise Server 负责支持,其生命周期也不同。它们都有明确定义的范围,只通过联机通道提供。在 SUSE Customer Center 上注册产品是能够订阅这些通道的前提。

联机迁移

通过使用联机更新工具(而不是安装媒体)对服务包 (SP) 进行更新,以安装相关的增补程序。它会将安装的系统的所有包更新到 SP3 加 SP2 更新的最新状态(包括更新)。

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

增补程序

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

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

SUSE Linux Enterprise(或任何软件产品)的主要版本是一个新版本,其中会引入一些新功能和工具,去除之前弃用的组件,并进行一些不向后兼容的更改。

服务包 (SP)

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

上游

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

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

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

更新

安装包的更新次要版本。

升级

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

7.2 支持的 SLE 升级路径

SUSE Linux Enterprise 支持直接从一个版本升级到下一个版本。例如,如果您当前运行的是 SUSE Linux Enterprise 11 SP2,您将分两步升级:先升级到 SUSE Linux Enterprise 11 SP3,然后再升级到 SUSE Linux Enterprise 12。

更新时不能跳过中间版本。因此,如果您运行的产品低了数个版本,如 SUSE Linux Enterprise 10 或 SUSE Linux Enterprise 11 SP1,SUSE 建议您考虑全新安装,而不是走漫长的升级之路。

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

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

具体地说,支持从 SLE 11 SP3 on POWER(大字节序)升级到 SLE 12 on POWER(新增:小字节序)。

另外,由于 SUSE Linux Enterprise 12 只有 64 位版本,所以支持从任何 32 位 SUSE Linux Enterprise 11 系统升级到 SUSE Linux Enterprise 12。

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

不支持直接迁移到 SUSE Linux Enterprise 12。建议使用全新安装方式。

从 SUSE Linux Enterprise 11 GA 或 SUSE Linux Enterprise 11 SP1 升级

不支持直接迁移到 SUSE Linux Enterprise 12。

如果您无法进行全新安装,则需要先从 SUSE Linux Enterprise 11 GA 升级到 SP1,再从 SUSE Linux Enterprise 11 SP1 升级到 SP2,然后才能继续。《SUSE Linux Enterprise 11 部署指南》 (https://www.suse.com/documentation/sles11/)中在线说明了这些前提步骤。

然后,您便可以继续下一步:

从 SUSE Linux Enterprise 11 SP2 升级

首先,将系统升级到 SUSE Linux Enterprise 11 SP3。有关详细信息,请参见第 7.4 节 “中间步骤:将 SLE 11 SP2 升级到 SLE 11 SP3”

然后继续下一步:

从 SUSE Linux Enterprise 11 SP3 升级到 SUSE Linux Enterprise 12

有关详细信息,请参见第 7.5 节 “升级到 SLE 12”

7.3 有关更新的一般准备工作

在开始更新过程之前,请确保对您的系统进行适当的准备。这些准备工作包括备份数据,查看发行说明,以及其他工作。

7.3.1 检查发行说明

在发行说明中,您可以找到有关自 SUSE Linux Enterprise 的上一个版本发行后进行了哪些更改的其他信息。请在发行说明中确认您的特定硬件或设置是否需要考虑某些特殊注意事项、您喜爱的哪些特定软件包进行了大幅更改,以及除了本节中的一般性建议之外,您还应该采取哪些预防措施。发行说明还提供了最新信息和已知问题,这些信息无法及时编入本手册中。

您可以在 http://www.suse.com/doc/sles12/#start 上在线阅读包含 SUSE Linux Enterprise Server 最新信息的最新版发行说明文档。

7.3.2 创建备份

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

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

7.3.3 分区和磁盘空间

在开始更新之前,记录必要的根分区信息。命令 df / 可以列出根分区的设备名。例如,在 例 7.1 “使用 df -h 列示信息” 中,要记录的根分区为 /dev/sda3(作为 / 装入)。

例 7.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

从旧版本到新版本,软件的大小有增长的趋势。因此,在进行更新之前,请使用 df 查看可用分区空间。如果怀疑磁盘空间不足,请在更新和重分区系统前保证数据安全。对于每个分区应该具有多少空间,没有一般的经验可以借鉴。空间要求取决于特定的分区配置文件和选定的软件。

7.3.4 关闭虚拟机 Guest

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

7.4 中间步骤:将 SLE 11 SP2 升级到 SLE 11 SP3

以下工具支持联机迁移:

  • YaST wagon(图形用户界面)

  • zypper(命令行)

如果通过联机迁移更新您的系统,则会在系统运行时执行更新。更新完毕后,您只需要重引导一次。您仍然可以使用以下备用方法执行更新:

7.4.1 要求

要执行联机更新,必须符合以下要求。另外,请确保阅读第 7.3 节 “有关更新的一般准备工作”

产品注册

要能够连接到更新储存库,您的产品必须经过注册。如果未注册,请在 YaST 中运行 SUSE Customer Center 配置模块,或使用 suse_register 命令行工具开始注册。

运行联机更新

确保已在当前安装的版本中安装了最新的增补程序。在执行联机迁移之前运行联机更新。使用图形界面时,请启动 YaST 联机更新或更新程序小程序。在命令行上运行以下命令(最后一条命令需要运行两次):

zypper ref -s
zypper update -t patch
zypper update -t patch

需要时请重引导系统。

请参见第 1 章 YaST 联机更新, 管理指南第 6.1.3 节 “使用 Zypper 更新软件”, 第 6 章 使用命令行工具管理软件, 管理指南,以获取有关联机更新工具的更多信息。

第三方软件

如果您的设置包含第三方软件或外接式附件软件,则在另一台计算机上测试此过程以确保升级未破坏依赖性。

重要
重要:始终运行完整的联机迁移

始终要自始而终地完成整个联机迁移过程。如果联机迁移中途中断,则会损坏系统且无法恢复。

7.4.2 使用 YaST Wagon 执行联机迁移

  1. 如果符合所有要求(参见第 7.4.4.1 节 “要求”),托盘中的更新小程序将显示一条讯息,表示有可用的分发包升级。单击它以启动 YaST Wagon。或者,以 root 身份从命令行运行 /usr/sbin/wagon

  2. 单击下一步以确认欢迎对话框。

  3. 如果 Wagon 发现不符合要求(必需的维护更新可用,但尚未安装),它将会自动执行自助更新,这可能需要重引导计算机。按屏幕上的说明进行操作。

  4. 在后续对话框中选择更新方法。选择客户中心以使用默认设置(推荐)。

    单击自定义 URL 以手动选择用于联机迁移的软件储存库。储存库列表即会显示,其中提供了用于手动启用、禁用、添加或删除储存库的选项。添加 SP3 更新源更新源可以是 SP3 安装媒体,也可以是 SP3-PoolSP3-Updates 储存库。单击确定返回到更新方法对话框。

    如果您想查看更新过程导致储存库设置发生的的更改,请选择检查储存库的自动更改

    下一步继续。

  5. 随后将重新注册系统。在此过程中,SP3-PoolSP3-Updates 储存库将会添加到系统中(有关详细信息,请参见第 7.7.2 节 “储存库模型”)。确认添加储存库。

  6. 如果您在更新方式对话框中选择了检查储存库的自动更改,此时储存库列表将会显示,供您选择手动启用、禁用、添加或删除储存库。完成后单击确定继续。

  7. 系统会打开分发升级设置屏幕,其中显示了升级配置的摘要。提供了以下部分:

    附加产品

    您可以在这里添加 SUSE Linux Enterprise Server 附加产品或第三方产品。

    更新选项

    列出在更新期间将要执行的操作。您可以选择先下载所有包,然后一并安装(推荐的默认设置),也可以选择逐个下载包并逐个安装。

    更新的统计概述。

    备份

    设置备份选项。

    依次单击下一步开始更新以继续。

    重要
    重要:中止联机迁移

    在单击开始更新之前,您可以安全地在此屏幕以及所有先前的屏幕上中止联机迁移。单击中止将会退出更新过程,并将系统恢复到启动 YaST Wagon 之前的状态。在退出 Wagon 之前,请按照屏幕上的指导操作并重新进行注册,以从系统中去除 SP2 储存库。

  8. 在更新过程中,将执行以下步骤:

    1. 更新包。

    2. 重引导系统(按确定)。

    3. 重新注册最近更新的系统。

  9. 您的系统已成功更新到服务包 3。

7.4.3 使用 zypper 执行联机迁移

  1. 如果符合所有要求(参见第 7.4.4.1 节 “要求”),则意味着执行联机迁移所需的产品已添加到 /etc/products.d 中。运行以下命令可获取这些产品的列表:

    zypper se -t product | grep -h -- "-migration" | cut -d'|' -f2

    此命令至少应返回 SUSE_SLES-SP3-migration。根据安装的范围,可能会列出更多的产品。

  2. 使用命令 zypper in -t product 产品列表安装上一步骤检索到的迁移产品,例如:

    zypper in -t product SUSE_SLES-SP3-migration
  3. 注册上一步中安装的产品,以获取相应的更新储存库:

    suse_register -d 2 -L /root/.suse_register.log
  4. 刷新安装源和服务:

    zypper ref -s
  5. 使用 zypper lr 检查您可以检索的安装源列表。

    如果未启用其中的任一安装源(在遵循此工作流程时,默认情况下不启用 SP3 安装源),请使用 zypper modifyrepo --enable 安装源别名启用该安装源,例如:

    zypper modifyrepo --enable SLES11-SP3-Core SLES11-SP3-Updates

    如果您的设置包含可能与 SP3 不兼容的第三方安装源,请使用 zypper modifyrepo --disable 安装源别名禁用这些安装源。

  6. 现在所有工作准备就绪,可以使用 zypper dup --from REPO 1 --from REPO 2 ... 执行分发包升级了。确保使用 --from 列出全部所需的安装源,例如:

    zypper dup --from SLES11-SP3-Pool --from SLES11-SP3-Updates

    y 确认开始升级。

  7. 在通过上一步骤完成分发包升级后,请运行以下命令:

    zypper update -t patch
  8. 在完成升级到 SP3 之后,您需要重新注册产品:

    suse_register -d 2 -L /root/.suse_register.log
  9. 最后,重引导您的系统。

  10. 您的系统已成功更新到服务包 3。

7.4.4 联机迁移

可以从运行中的系统内部,通过联机迁移完成系统更新。更新完毕后,您只需要重引导一次。

7.4.4.1 要求

要执行联机更新,必须符合以下要求。另外,请确保阅读第 7.3 节 “有关更新的一般准备工作”

产品注册

要能够连接到更新储存库,您的产品需要经过注册。如果未注册,请在 YaST 中运行 SUSE Customer Center 配置模块,或使用 suse_register 命令行工具开始注册。

运行联机更新

确保已在当前安装的版本中安装了最新的增补程序。在执行联机迁移之前运行联机更新。使用图形界面时,请启动 YaST 联机更新或更新程序小程序。在命令行上运行以下命令(最后一条命令需要运行两次):

zypper ref -s
zypper update -t patch
zypper update -t patch

需要时请重引导系统。

请参见第 1 章 YaST 联机更新, 管理指南第 6.1.3 节 “使用 Zypper 更新软件”, 第 6 章 使用命令行工具管理软件, 管理指南,了解有关联机更新工具的更多信息。

第三方软件

如果您的设置包含第三方软件或外接式附件软件,则在另一台计算机上测试此过程以确保升级未破坏依赖性。

重要
重要:始终运行完整的联机迁移

在任何情况下,都需要从头到尾完成整个联机迁移过程。如果联机迁移中途中断,则会损坏系统且无法恢复。

7.4.4.2 使用 YaST Wagon 执行联机迁移

注意
注意

使用 YaST Wagon 进行联机迁移这种方式仅适用于 SUSE Linux Enterprise Server 12 之前的产品。

  1. 如果符合所有要求(参见第 7.4.4.1 节 “要求”),托盘中的更新小程序将显示一条讯息,表示有可用的分发包升级。单击它以启动 YaST Wagon。或者,以 root 身份从命令行运行 /usr/sbin/wagon

  2. 单击下一步以确认欢迎对话框。

  3. 如果 Wagon 发现不符合要求(必需的维护更新可用,但尚未安装),它将会自动执行自助更新,这可能需要重引导计算机。按屏幕上的说明进行操作。

  4. 在后续对话框中选择更新方法。选择客户中心以使用默认设置(推荐)。

    单击自定义 URL 以手动选择用于联机迁移的软件储存库。储存库列表即会显示,其中提供了用于手动启用、禁用、添加或删除储存库的选项。添加 SP2 更新源更新源可以是 SP2 安装媒体,也可以是 SP2-CoreSP2-Updates 储存库。单击确定返回到更新方法对话框。

    如果您想查看更新过程导致储存库设置发生的的更改,请选择检查储存库的自动更改

    下一步继续。

  5. 随后将重新注册系统。在此过程中,SP2-CoreSP2-Updates 储存库将会添加到系统中(有关详细信息,请参见第 7.7.2 节 “储存库模型”)。确认添加储存库。

  6. 如果您在更新方式对话框中选择了检查储存库的自动更改,此时储存库列表将会显示,供您选择手动启用、禁用、添加或删除储存库。完成后单击确定继续。

  7. 选择迁移类型:

    完整迁移

    将所有包更新到最新的 SP2 级别。

    最小迁移

    将最低限度的一组包更新到最新的 SP2 级别。

    单击高级可以手动选择用于升级的安装源。

    确认所做的选择。

  8. 系统会打开分发升级设置屏幕,其中显示了升级配置的摘要,提供了以下部分:

    附加产品

    您可以在这里添加 SUSE Linux Enterprise Server 附加产品或第三方产品。

    更新选项

    列出在更新期间将要执行的操作。您可以选择先下载所有包,然后一并安装(推荐的默认设置),也可以选择逐个下载包并逐个安装。

    更新的统计概述。

    备份

    设置备份选项。

    依次单击下一步开始更新以继续。

    重要
    重要:中止联机迁移

    在单击开始更新之前,您可以安全地在此屏幕以及所有先前的屏幕上中止联机迁移。单击中止将会退出更新过程,并将系统恢复到启动 YaST Wagon 之前的状态。在退出 Wagon 之前,请按照屏幕上的指导操作并重新进行注册,以从系统中去除 SP2 储存库。

  9. 在更新过程中,将执行以下步骤:

    1. 更新包。

    2. 重引导系统(按确定)。

    3. 重新注册最近更新的系统。

  10. 您的系统已成功更新到服务包 2。

7.4.4.3 使用 zypper 执行联机迁移

  1. 如果符合所有要求(参见第 7.4.4.1 节 “要求”),则意味着执行联机迁移所需的产品已添加到 /etc/products.d 中。运行以下命令可获取这些产品的列表:

    zypper se -t product | grep -h -- "-migration" | cut -d'|' -f2

    此命令至少应返回 SUSE_SLES-SP2-migration。根据安装的范围,可能会列出更多的产品。

  2. 使用命令 zypper in -t product 产品列表安装上一步骤检索到的迁移产品,例如:

    zypper in -t product SUSE_SLES-SP2-migration
  3. 注册上一步中安装的产品,以获取相应的更新储存库:

    suse_register -d 2 -L /root/.suse_register.log'
  4. 再次刷新安装源和服务:

    zypper ref -s
  5. 使用 zypper lr 检查您可以检索的安装源列表。至少需要启用以下安装源:

    • SLES11-SP1-Pool

    • SLES11-SP1-Updates

    • SLES11-SP2-Core

    • SLES11-SP2-Updates

    根据安装的范围,可能需要启用附加产品或扩展的其他安装源。

    如果未启用其中的某个安装源(在遵循此工作流程时,默认情况下不启用 SP2 安装源),请使用 zypper modifyrepo --enable 安装源别名启用该安装源,例如:

    zypper modifyrepo --enable SLES11-SP2-Core SLES11-SP2-Updates

    如果您的设置包含可能与 SP2 不兼容的第三方安装源,请使用 zypper modifyrepo --disable 安装源别名禁用这些安装源。

  6. 现在所有工作准备就绪,可以使用 zypper dup --from REPO 1 --from REPO 2 ... 执行分发包升级了。确保使用 --from 列出全部所需的安装源,例如:

    zypper dup --from SLES11-SP2-Core --from SLES11-SP2-Updates

    y 确认开始升级。

  7. 在上一步骤中完成分发包升级后,会执行最小迁移(已将最低限度的一组包更新到最新的 SP2 级别)。如果您不打算执行完整迁移,请跳过此步骤。

    要执行完整迁移(将所有包更新到最新的 SP2 级别),请运行以下命令:

    zypper update -t patch
  8. 在完成升级到 SP2 之后,您需要重新注册产品:

    suse_register -d 2 -L /root/.suse_register.log
  9. 最后,重引导您的系统。

  10. 您的系统已成功更新到服务包 2。

7.4.5 通过从安装源引导来执行更新

作为联机迁移(参见第 7.4.4 节 “联机迁移”以获取细节)的一种备用方法,您也可以通过从安装源(DVD 或网络安装源)引导这种方式来更新系统。更新的启动方式与正常安装相同。

可以从 http://download.suse.com/ 获取服务包 2 ISO 映像。请将映像刻录到 DVD,或者按照第 14.2 节 “设置存放安装源的服务器”中所述方法准备一个网络安装源。

7.4.5.1 从本地 DVD 驱动器更新

在开始进行全新的 SUSE Linux Enterprise SP 安装前,请确保所有服务包安装媒体 (DVD) 都已备妥。

过程 7.1 从服务包媒体引导
  1. 插入第一张 SUSE Linux Enterprise SP 媒体并引导计算机。类似 SUSE Linux Enterprise 11 原始安装的引导屏幕将会显示。

  2. 选择安装并按照第 6 章 使用 YaST 进行安装中的 YaST 安装指导所述内容继续。

7.4.5.2 从网络安装源更新

在从网络安装源开始更新 SUSE Linux Enterprise SP 之前,请先确保满足下列要求:

请参见第 14 章 远程安装,深入了解从远程服务器开始升级的相关信息。

7.4.5.2.1 网络安装 — 从 DVD 引导

要用 SP DVD 作为引导媒体执行网络安装,请执行如下操作:

  1. 将 SUSE Linux Enterprise SP DVD 1 媒体插入计算机中。类似 SUSE Linux Enterprise 11 原始安装的引导屏幕将会显示。

  2. 选择安装引导服务包内核,然后使用 F4 选择网络安装源的类型(FTP、HTTP、NFS 或 SMB)。

  3. 提供相应的路径信息或选择 SLP 作为安装源。

  4. 从所提供的服务器里选择相应的安装服务器,或用引导选项提示提供安装源类型和实际地址(如 从网络服务器进行安装 中所示)。YaST 启动。

    第 7.4.5.3 节 “更新过程”中所述完成安装。

7.4.5.2.2 网络安装—— PXE 引导

要进行 SUSE Linux Enterprise 服务包的网络安装,请执行以下操作:

  1. 按照第 14.3.5 节 “准备目标系统的 PXE 引导”调整您的 DHCP 服务器设置以提供 PXE 引导需要的地址信息。

  2. 设置 TFTP 服务器来储存 PXE 引导需要的引导映像。

    为此,请使用 SUSE Linux Enterprise 服务包的第一张 CD 或 DVD,或者按照第 14.3.2 节 “设置 TFTP 服务器”中的指导操作。

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

  4. 对目标系统引导进行初始化,并用 VNC 远程连接到此计算机正运行的安装例程上。有关更多信息,请参见第 14.5.1 节 “VNC 安装”

  5. 第 7.4.5.3 节 “更新过程”中所述完成安装。

7.4.5.3 更新过程

从安装媒体或网络成功引导后,根据如下所述继续开始更新:

  1. 欢迎屏幕上选择语言键盘,并接受许可协议。按下一步继续。

  2. 如果您已从物理媒体引导,请执行媒体检查以校验媒体的完整性。除非您先前检查过媒体,否则请勿跳过此步骤。

  3. 安装模式屏幕上,选择更新。单击下一步将会开始更新过程。

7.4.6 通过订阅管理工具 (SMT) 更新

作为从 SUSE 更新服务器为每个单一客户端系统下载更新的备用方法,您可以使用适用于 SUSE Linux Enterprise 的订阅管理工具 (SMT),将更新镜像到本地服务器。

此工具既可以充当客户端注册的 SUSE Customer Center 代理,也可以充当软件更新储存库。http://www.suse.com/doc/smt11/ 上的 SMT 文档扼要介绍了此工具的功能,并提供了实施指导。

7.4.7 通过 SUSE Manager 更新

SUSE Manager 是一个服务器解决方案,用于提供适用于 SUSE Linux Enterprise 客户端的更新、增补程序和安全修复。它随附了一套工具和基于 Web 的用户界面,用于执行管理任务。

http://www.suse.com/doc/suse_manager/ 上的 SUSE Manager 文档扼要介绍了此解决方案的功能,并提供了设置服务器和客户端的指导。

7.5 升级到 SLE 12

下列工具支持从 SUSE Linux Enterprise 11 SP3(或更高版本)升级到 SUSE Linux Enterprise 12:

7.5.1 使用安装源从 SUSE Linux Enterprise 11 SP3 或更高版本手动升级

您可以通过从安装源(本地 DVD 或网络安装源)引导这种方式来升级系统,就像执行全新安装一样。然后,在“引导屏幕”中选择“升级”而不是“安装”来升级系统。

过程 7.2 使用 SUSE Linux Enterprise 12 ISO 从 SUSE Linux Enterprise 11 SP3 或更高版本手动升级
  1. 选择引导方法以从 ISO 启动系统(请参见第 6.1 节 “选择安装方法”)。

  2. 从 ISO 启动系统(请参见第 6.2 节 “系统启动以进行安装”)。

    在“引导屏幕”中,选择“升级”以开始系统升级。

    警告
    警告

    如果您选择“安装”,之后数据可能会丢失。在全新安装过程中,您需要格外小心,不要损坏数据分区,例如,重新分割磁盘(这可能会损坏现有分区)或重新格式化数据分区(这会删除数据分区上的所有数据)都会损坏数据分区。SUSE 建议在这里选择“升级”。

  3. 执行一般的升级过程(请参见第 7.4.5.3 节 “更新过程”)。

7.5.2 从 SUSE Linux Enterprise 11 SP3 自动迁移到 SUSE Linux Enterprise 12

要执行自动迁移,请如下操作:

过程 7.3 从 SUSE Linux Enterprise 11 SP3 自动迁移到 SUSE Linux Enterprise 12
  1. 将安装内核 linux 和文件 initrd 从第一张安装 DVD 的 /boot/x86_64/loader/ 目录复制到系统的 /boot 目录:

    cp -vi DVDROOT/boot/x86_64/loader/linux /boot/linux.upgrade
    cp -vi DVDROOT/boot/x86_64/loader/initrd /boot/initrd.upgrade

    DVDROOT 表示系统装入 DVD 的路径,通常为 /run/media/$USER/$DVDNAME

  2. 打开 GRUB 旧配置文件 /boot/grub/menu.lst,另外添加一部分。对于其他引导加载程序,编辑相应的配置文件。相应地调整设备名称。例如:

    title Linux Upgrade Kernel
    kernel (hd0,0)/boot/linux.upgrade root=/dev/sda1 upgrade OPTIONAL_PARAMETERS
    initrd (hd0,0)/boot/initrd.upgrade

    OPTIONAL_PARAMETERS 表示您引导系统和执行升级时可能需要的其他引导参数。它们可能是系统需要的内核参数 — 您可能需要从现有 GRUB 项中查看并复制这些参数。它们还可能是 SUSE linuxrc 参数,在线进行了说明 (http://en.opensuse.org/Linuxrc)

  3. 如果升级应自动执行(请参见 第 22.2 节 “运行自动升级”,请在 GRUB 配置中 kernel 这行的末尾添加 autoupgrade=1

  4. 重引导计算机,并从引导菜单(这里是 Linux 升级内核)中选择新添加的部分。您可以使用 grubonce 预先选择新创建的 GRUB 项,以便以无人照管方式自动重引导到新创建的项。您也可以在命令行中使用 reboot 来启动重引导。

  5. 执行一般的升级过程(请参见第 7.4.5.3 节 “更新过程”)。

  6. 升级过程成功完成后,去除安装内核和 initrd 文件(/boot/linux.upgrade/boot/initrd.upgrade)。现在,它们已没有用处,不再需要它们。

7.6 原子更新

原子更新所基于的工具能够管理系统的两个副本,并在更新失败后可以轻松地恢复系统。提供的工具需要特殊的磁盘分区设置。每个系统副本都驻留在自己的主分区上。如果更新失败,总是可以转换回以前的系统状态,该系统状态在其他分区上。

7.6.1 设置

警告
警告:严格的分区要求

磁盘分区的实施有严格的要求,第一个 root 分区是 /dev/sda1,占用空间不得超过整个磁盘大小的一半。然后工具会为系统的第二个 root 分区创建 /dev/sda2。其他分区(如果有)共同分享两个根分区的大小,也就是说,要将这些分区的大小计算在内,并相应地减小第一个分区的大小。大致计算方法如下:

整个磁盘大小减去 sda1sda2 等于其他分区的可用空间。

  1. /dev/sda1 作为单个 root 分区安装系统,其空间小于整个磁盘大小的一半。

  2. 根据需要自定义已安装系统。确保 multi-update-tools 包已安装。

  3. 运行 multi-update-setup --partition,创建大小类似的第二个 root 分区 (/dev/sda2)。

  4. 根据需要对剩余磁盘空间分区,并继续自定义 (*)。

  5. 运行 multi-update-setup --clone 将系统复制到其他分区。用此命令还可以更改目标系统 /etc/fstab 中的 /(root) 条目。

  6. 如果需要,请执行进一步自定义 (*)。

  7. 运行 multi-update-setup --bootloader 初始化引导加载程序设置。这样引导加载程序菜单就会包含一个条目,用于引导另一个系统。

    警告
    警告:GRUB 2 引导加载程序强制要求

    必须安装 GRUB 2 引导加载程序。这些工具与其他引导加载程序不兼容。

  8. 如果没有对标有 (*) 的项进行自定义,请运行 multi-update-setup --complete 执行所有三个步骤。

7.6.2 更新另一个系统

运行 multi-update。此命令会在 chroot 环境中运行 zypper,并更新另一个系统 — 哪个系统处于活动状态无关紧要。其引导菜单在引导时作为默认值提供。

7.6.3 查错

如果更新的系统在更新之后引导加载程序受损,则必须更改活动标志,将它分配给另一个系统的根分区,以便可以引导该系统。

如果更新的系统根本无法引导,则需要访问引导加载程序菜单以选择另一个系统。

有关 GRUB 2 的详细信息,请参见第 12 章 引导加载程序 GRUB 2, 管理指南

7.6.4 限制

根分区必须按分区名、ID 或其他方式进行装载。不支持按分区 UUID 或标签进行装载。

7.6.5 更多信息

有关更多信息,请参见随 multi-update-tools 包一起提供的 /usr/sha e/doc/packages/multi-update-tools/README

7.7 背景信息:SUSE Linux Enterprise 的产品生命周期

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

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

主要版本每 4 年发行一次。服务包每 18 个月发行一次。

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

主要版本和服务包
图 7.1 主要版本和服务包

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

长期服务包支持
图 7.2 长期服务包支持

7.7.1 支持级别

扩展支持级别的范围从第 10 年开始直至第 13 年。这些包含持续的 L3 工程级别诊断和反应性关键 bug 修复。这些支持级别主动更新内核中的普通本地 root 攻击或无需用户干涉即可直接执行的其他 root 攻击。而且,它们借助有限包排除列表支持现有工作负载、软件堆栈和硬件。可在表 7.1 “安全更新和 bug 修复”中找到概述。

表 7.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 缺陷)

7.7.2 储存库模型

储存库布局对应于产品生命周期。表 7.2 “SUSE Linux Enterprise 11 SP2 和 SP3 及 SUSE Linux Enterprise 12 的储存库布局”包含了从 SUSE Linux Enterprise 11 SP2 到 SUSE Linux Enterprise 12 的所有储存库的列表。

表 7.2 SUSE Linux Enterprise 11 SP2 和 SP3 及 SUSE Linux Enterprise 12 的储存库布局

类型

SLES

SLED

必需的储存库

11 SP2

SLES11-SP1-Pool
SLES11-SP1-Updates
SLES11-SP2-Core
SLES11-SP2-Updates

11 SP3

SLES11-SP3-Pool
SLES11-SP3-Updates

12

SLES12-GA-Pool
SLES12-GA-Updates

11 SP2

SLED11-SP1-Pool
SLED11-SP1-Updates
SLED11-SP2-Core
SLED11-SP2-Updates

11 SP3

SLED11-SP3-Pool
SLED11-SP3-Updates

12

SLED12-GA-Pool
SLED12-GA-Updates

可选储存库

11 SP2

SLES11-SP2-Debuginfo-Core
SLES11-SP2-Debuginfo-Updates
SLES11-Extras
SLES11-SP2-Extension-Store

11 SP3

SLES11-SP3-Debuginfo-Core
SLES11-SP3-Debuginfo-Updates
SLES11-SP3-Extension-Store
SLES11-Extra

12

SLES12-GA-Debuginfo-Core
SLES12-GA-Debuginfo-Updates

11 SP2

SLED11-SP2-Debuginfo-Core
SLED11-SP2-Debuginfo-Updates
SLED11-Extras
SLED11-SP2-Extension-Store

11 SP3

SLED11-SP3-Debuginfo-Core
SLED11-SP3-Debuginfo-Updates
SLED11-SP3-Extension-Store
SLED11-Extra

12

SLED12-GA-Debuginfo-Core
SLED12-GA-Debuginfo-Updates

新增:模块特定的储存库

12

sle-module-web-scripting
sle-module-adv-systems-management
sle-module-public-cloud
sle-module-legacy

12

针对必需的储存库的说明
更新

对相应 CorePool 安装源中的包进行的维护更新。

包含安装媒体中的所有二进制 RPM,外加模式信息和支持状态元数据。

针对可选储存库的说明
Debuginfo-Pool, Debuginfo-Updates

这些储存库包含静态内容。在这两者中,只有 Debuginfo-Updates 储存库会接收更新。如果您需要安装包含调试信息的库以备不时之需,请启用这些储存库。

7.7.2.1 包源

SUSE Linux Enterprise 11 SP3.  对于 SP3 的更新,只有下面两个储存库可用:SLES11-SP3-PoolSLES11-SP3-Updates。所有来自 SP2 的之前的储存库会显示出来,但并未启用。只有存在特殊需求的用户才需要这些已禁用的储存库。

SUSE Linux Enterprise 12.  对于 SUSE Linux Enterprise 12 的更新,只有下面两个储存库可用:SLES12-GA-PoolSLES12-GA-Updates。所有来自 SUSE Linux Enterprise 11 SP3 的之前的储存库都会禁用。

7.7.2.2 使用储存库

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

zypper repos -u

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

如果您要去除旧储存库(例如,来自 SP1 的储存库),请使用 zypper removerepo 及储存库的名称。例如,要去除旧的 SP1 和 SP2 储存库,请使用以下命令:

zypper removerepo SLES11-SP1-Pool SLES11-SP1-Updates \
    SLE11-SP1-Debuginfo-Pool SLE11-SP1-Debuginfo-Updates \
    SLES11-SP2-Core SLES11-SP2-Updates \
    SLE11-SP2-Debuginfo-Core SLES11-SP2-Extension-Store\
    SLE11-SP2-Debuginfo-Updates

如果要重新添加某些储存库,请登录 https://scc.suse.com/ 并从菜单 My Products › Mirror Credentials(我的产品 > 镜像身份凭证)中进行选择。然后,您便可看到一个 URI 列表;只能添加此产品列表中的储存库。例如,要添加 SP2 Extension Store,请使用以下命令(以一行输入,不能使用反斜杠):

zypper addrepo -n SLES11-SP2-Extension-Store \
    https://nu.novell.com/repo/\$RCE/SLES11-SP2-Extension-Store/nu_novell_com:SLES11-SP2-Extension-Store

7.8 背景:向后移植源代码

SUSE 广泛使用了向后移植,即将当前的软件修复和功能迁移到过去发行的 SUSE Linux Enterprise 包中。本节中的信息有助于您了解通过比较产品的版本号来判断 SUSE Linux Enterprise 软件包的功能和安全为何不可靠。您将了解 SUSE 如何在确保系统软件安全且最新的同时,保持在 SUSE Linux Enterprise 产品上运行的应用程序软件的兼容性。您还将了解如何检查在 SUSE Linux Enterprise 系统软件中实际解决了哪些公开的安全问题,以及您的软件实际上有多新。

7.8.1 为何要向后移植?

上游开发者主要关心所开发软件的进度。在许多情况下,他们会一边修复 bug,一边引入尚未接受广泛测试并可能会造成新 bug 的新功能。

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

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

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

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

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

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

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

7.8.2 向后移植的原因

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

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

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

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

  • 使 SUSE 开发者能够专注于竭尽所能开发出产品的下一个优质版本,而不是狭隘地将注意力分散于如何推出更多的版本。

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

7.8.3 反对向后移植的原因

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

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

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

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

在涉及到向后移植时,版本号的这种有限价值可能会造成在特定情况下产生问题,也就是在使用安全扫描工具的时候。某些安全漏洞扫描工具(或者在此类工具中进行特定的测试)只能基于版本号运行。在涉及向后移植时,这些工具/测试很容易生成误报(宣称发现软件存在漏洞,而实际上并没有漏洞)。在评估安全扫描工具生成的报告时,用户始终应该调查其中的条目是基于版本号,还是基于对是否存在实际漏洞而展开的实际测试。

7.8.5 如何检查修复了哪些 Bug 以及哪些功能已向后移植且可用

有关向后移植的 bug 修复和功能等的信息可以储存在许多位置:

  • 包的更改日志:

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

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

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

  • 包可能包含 /usr/share/doc/packagename/README.SUSEREADME.SuSE 文件,该文件包含特定于 SUSE 包的概要信息。

  • RPM 源包包含构建普通二进制 RPM 期间应用的增补程序,这些增补程序以独立文件的形式存在,如果您熟知如何阅读源代码,可以对这些文件进行解释。对于 SUSE Linux Enterprise 软件的安装源,请参见第 6.1.2.1 节 “安装或下载源包”, 第 6 章 使用命令行工具管理软件, 管理指南,对于 SUSE Linux Enterprise 上的构建包,请参见第 6.2.5 节 “安装和编译源包”, 第 6 章 使用命令行工具管理软件, 管理指南,对于 SUSE Linux Enterprise 软件包构建的内部工作,请参见《Maximum RPM》 (http://www.rpm.org/max-rpm/)(最大 RPM)一书。

  • 有关安全 bug 修复,请参见 SUSE 安全声明 (http://www.suse.com/support/security/#1)。这些修复往往通过公共漏洞和披露 (http://cve.mitre.org)项目所维护的标准化名称(例如 CAN-2005-2495)来引用 bug。

7.9 背景:YaST Wagon 的迁移钩子

在迁移过程中的某个时间点,您可以使用迁移钩子来运行自定义的外部脚本。这些脚本可让您处理无法通过正常 RPM 脚本处理的具体问题,或者让您执行迁移期间可能需要执行的任何附加操作(在正常包更新期间不需要执行)。

迁移钩子需要以 root 特权执行,因此,可以在脚本中执行任何维护任务(启动/停止服务、数据备份、数据迁移等)。脚本不能是交互式的;STDIN 和 STDOUT 在 YaST 中运行时会被重定向到管道。不应使用 X 会话,因为它不一定在所有情况下都可用(例如以文本模式运行时)。不要忘记设置对钩子脚本的可执行许可权限。

yast2-wagon 包版本 2.17.32.1(以 SLES11-SP2 的更新的形式提供)或 2.17.34(包含在 SLES11-SP3 中)或更高版本支持迁移钩子。

7.9.1 钩子脚本的位置和命名约定

可以在 /var/lib/YaST2/wagon/hooks/ 目录中搜索这些脚本。预期的脚本名称采用步骤_顺序号_前缀_名称格式,其中:

步骤

是预定义的迁移步骤名称,描述当前的迁移步骤。

顺序号

是 00...99 范围内的顺序号,您可以根据此顺序号设置脚本的执行顺序。(在开始时必须保持为零,以实现正确的排序﹗)

前缀

应该唯一,以避免冲突(类似于名称空间)。使用包名称(如果它是包的一部分)或供应商名称、因特网域名等,简而言之,请使用您认为足够唯一的任何对象

名称

可以是任意字符串(用于区分脚本)。建议使用某个描述性名称。

例 7.2 包含完整路径的钩子脚本
/var/lib/YaST2/wagon/hooks/before_package_migration_00_postgresql_backup

7.9.2 钩子脚本退出值

脚本应返回退出值 0。如果该脚本失败(返回任何非零退出值),Wagon 中会显示错误讯息,此时您可以重启动脚本,忽略失败(并继续执行其他脚本),或者完全取消当前步骤和阶段的钩子。

7.9.3 幂等脚本

钩子脚本有时可以运行多次(在 Wagon 对话框中前后切换时,Wagon 可能会自行重启动,或者迁移工作流程中的某些步骤可能会执行多次),因此,脚本必须处理这种情况(它们可以在开始时确认是需要执行操作还是操作已经执行,或者它们可以创建一个简单的临时戳记文件,或正确解决多次运行的问题)。

7.9.4 受支持钩子的列表

某些钩子是可选的(因为它们依赖于前面的结果,或依赖于用户选择的值)。请注意,某些钩子会被调用多次(例如,迁移前后都会调用注册)。以下是按执行顺序列出的受支持钩子(步骤名称)的列表:

before_init

最开始启动(注意:在重启动 Wagon 后会再次调用)

before_welcome , after_welcome

在显示欢迎对话框之前/之后启动

before_registration_check , after_registration_check

Wagon 将检查注册状态(如果某些产品的注册已失效,迁移可能失败)。如果任何情况都正常,则不显示对话框,Wagon 将自动继续下一步

before_custom_url , after_custom_url

启动安装源管理器(可选,仅限增补程序 CD 模式)

before_self_update , after_self_update

在 Wagon 更新自身之前/之后调用(以确保使用最新版本进行迁移)

before_installing_migration_products , after_installing_migration_products

在安装迁移产品之前/之后调用

before_selecting_migration_source , after_selecting_migration_source

Wagon 会询问用户是通过 SUSE Customer Center 储存库还是使用自定义储存库进行迁移;下一步将根据用户的选择而定

before_registration , after_registration

运行 SUSE 注册(以添加迁移安装源)

before_repo_selection , after_repo_selection

手动安装源管理

before_set_migration_repo , after_set_migration_repo

选择迁移储存库(使用 SUSE Customer Center 时选择完整/最小迁移)或更新储存库选择(自定义储存库迁移)

before_package_migration

在启动包更新之前,执行此步骤之后,实际迁移将会开始,此时无法自动返回到前一状态;这是因为在此阶段中止会导致系统不一致(升级到一半),导致需要手动回滚

before_registration , after_registration

运行 SUSE 注册(以注册更新的产品)

before_congratulate , after_congratulate

Wagon 在成功迁移后显示恭喜对话框之前/之后

before_exit

在 Wagon 退出之前的那一刻调用(不管迁移结果如何,始终会调用;另外,在中止之后以及在重启动时也会调用)

7.9.5 Abort 钩子

这是一些特殊的中止钩子,在用户中止迁移时调用。这些钩子可以在迁移工作流程的任一步骤中调用,因此,无法保证执行顺序。如果这些钩子依赖于其他钩子的结果,则脚本需要检查当前状态。

before_abort

用户已确认中止迁移

before_abort_rollback , after_abort_rollback

用户已确认在中止后回滚(还原到开始迁移之前安装的旧产品)。这些钩子在 before_abort 之后调用,如果用户未确认回滚则跳过此步骤。

7.9.6 Restart 钩子

每当 Wagon 重启动自身时就会调用这些钩子。

before_restart

Wagon 正在完成,并将再次启动

after_restart

Wagon 已重启动,并在运行迁移工作流程中的下一步

7.9.7 常用的钩子

钩子列表的内容相当广泛,但其中的许多钩子只在特殊情况下才有效果。在正常的用例中,应该给这些钩子指定优先顺序:

  • 要在迁移系统之前(系统仍在运行上一版本)执行某项操作,请使用 before_package_migration 钩子。

    此时,用户清楚地知道迁移已准备就绪并即将开始;在此前的所有步骤中,可以中止迁移。

  • 要在系统迁移之后执行某操作(系统运行的是新的已迁移版本,但是有些功能可能尚未激活,例如更新的内核需要重引导、更新的服务可能需要重启动,等等),请使用 before_congratulateafter_congratulate 钩子。

    此钩子也可用于清理 before_package_migration 钩子的临时结果。此时,迁移已成功完成。

  • 要在中止迁移的情况下还原更改,请根据情况使用 abort 钩子之一。请记住,可以在任何时间调用 abort 钩子,因此,可能无需还原(可能尚未调用执行更改的钩子)。abort 钩子需要检查当前状态。

7.9.8 过时的钩子

旧版 Wagon 仅支持两个钩子脚本:/usr/lib/YaST2/bin/wagon_hook_init/usr/lib/YaST2/bin/wagon_hook_finish。问题在于,只能将一个脚本作为钩子运行,并且无法将钩子直接放入 RPM 包中。

新版 Wagon 仍然支持这些旧钩子脚本以实现向后兼容,但是,应该使用新的钩子 before_initbefore_exit 来取代对应的已过时钩子。

打印此页