SDB:离线升级

跳转到:导航搜索
本指南介绍如何进行 openSUSE 的离线分发升级。

在 openSUSE 上测试

推荐文章



摘要

本页面尝试描述传统的系统升级方法,或离线方法。基本上,它是通过从安装 DVD/USB 启动并选择“升级”而不是“安装”来完成的。它比 实时升级 (zypper dup) 更安全、更通用,因为系统已离线,升级是从 DVD 运行的小型实时系统完成的。无需停止和启动服务。不会出现正在使用、重要、库文件发生更改的问题。当然,系统需要关闭一段时间,可能比实时升级更长。

此过程自版本 5.2 以来一直可用,因此也被称为“传统升级”。

一个缺点是,由于 DVD 不包含所有可用软件包,因此您的安装中某些软件包可能无法在此过程中升级,并且需要在稍后处理。另一个缺点是创建的备份文件可能会占用您根分区的所有空间。


为什么要进行系统升级

为什么要进行系统升级而不是全新安装?支持全新安装路线的人认为,会有过时的系统库、损坏的配置等,而全新安装则没有这些问题。大多数数据文件存储在 '/home' 中,如果未格式化,则在全新安装时会保留。而且通常更快、更少问题。事实上,openSUSE 42.3 覆盖 openSUSE 42.2 的全新安装可能更快地进入一个可工作的系统,因为更新下载会延迟到第一次系统启动之后,并且会携带您的用户配置(尽管这在其他 openSUSE 升级中并非如此)。

没错。

然而,还有其他数据文件未保留,例如 MariaDB 数据库、IMAP 电子邮件存储、系统配置,例如 Postfix、Samba 或 Hylafax 的配置、Apache 网站文件等,这使得升级更有趣,并且在某些情况下可以节省时间。服务器机器可能需要数周才能配置。

支持的场景

实时升级 类似,它应被视为“尽力而为”:它应该有效,但也可能失败。强烈建议在进行升级之前进行完整备份。如果升级失败,您可以恢复并重试,更改任何需要避免先前问题的内容,全新安装,或尝试实时升级。

  • 官方支持:据我所知,您可以升级两个当前受支持或曾经受支持的版本,例如从 13.142.1。但我无法做出官方声明,需要官方声明来证实这一点。

跳过 3 或 4 个版本可能有效,但没有保证。如果您想尝试,请进行完整备份,找一把舒适的椅子,然后继续 :-)

  • 32 --> 64:有人描述了如何成功地使用此过程从 32 位架构升级到 64 位架构。当然,离线过程比在线过程更有机会成功,但必须强调的是,它不受支持。除非您有经验,否则不要尝试。

准备升级

支持的起点是应用了所有当前更新的 openSUSE 版本。例如,请参阅 实时升级 页面,了解如何执行此操作。

阅读目标版本和中间版本的 发行说明 页面。

阅读目标版本和中间版本的 openSUSE:最令人恼火的错误 页面。

您需要下载目标版本的 DVD,验证其校验和,刻录它,并验证刻录的介质。它必须与当前安装的版本具有相同的架构。不,您不能使用其中一个 Live CD。可以作为源使用在线仓库,但这并不能完全奏效。

确保所有系统分区都有足够的可用空间。该过程不会检查此项,并且缺乏空间会使过程崩溃并破坏您的系统:您既没有升级后的系统,也没有旧系统。

一个技巧是在一个小分区上全新安装,以便在目标硬件上测试目标发行版;这样可以检查和解决问题,然后再进行实际升级,稍后可以比较一些配置。此外,它还可以作为一个不错的救援系统。或者,如果可能,您可以在此处测试工厂版本,然后升级主分区。很多可能性!

进行完整备份。任何升级过程偶尔都可能失败,并使您的系统无法启动和/或运行。修复是可能的,但并非总是如此;最好有一个好的安全网。失败后,您可以了解原因并再次尝试(从备份恢复后),或者放弃并尝试全新安装,并了解没有数据丢失。

转储数据库,以便在迁移失败时可以重新创建它们。

停止邮件。确保 postfix 中没有待发送或接收的电子邮件。

您甚至可以升级旧的、当前不受支持的 openSUSE 版本到较新版本,无论是否受支持。强烈建议您一次升级到下一个可用版本,直到达到您想要的版本。例如,如果您使用的是 12.3,但想要升级到 13.2,请执行以下操作:从 12.3 升级到 13.1,然后从 13.1 升级到 13.2。如果您决定跳过一个版本,请记住,跳过的版本越多,失败的可能性就越大。还要记住,如果您决定在升级时跳过版本,则无法报告不受支持的 openSUSE 版本或错误。

准备仓库列表。如果您将使用额外的仓库,最好将其更改为指向新的 URL。打开终端,su - 到 root,更改到目录 /etc/zypp/repos.d,将 repo 文件备份到子目录中,然后对其进行编辑,例如运行“sed -i 's/15.3/15.4/g' /etc/zypp/repos.d/*.repo”(为什么不使用 ${releasever} 你现在会看到)。最后,运行“zypper clean”和“zypper ref”——后者将在新 URL 找不到某些仓库时失败。当所有 URL 正确时,您可以继续。现在执行此操作比在升级过程中使用有限的行编辑器更容易。


运行升级

请参阅此页底部的屏幕截图以获取详细信息(屏幕截图是在从 13.2 升级到 Leap 42.1 时捕获的)。

  • 如果您正在升级到 openSUSE 13.1 或更早版本
    • 从 DVD 启动,选择安装。DVD 将启动,您将进入欢迎屏幕。选择安装语言和键盘语言。下一步。
    • 在下一个屏幕上(安装模式),选择更新现有系统
  • 如果您正在升级到 openSUSE 13.2(包括 Leap)或更高版本
    • 从 DVD 启动,选择升级。DVD 将启动,您将进入许可协议。选择安装语言和键盘语言。下一步。(图 1)
  • 需要一些时间来评估现有的根分区,然后我们进入选择用于更新屏幕。您必须选择要升级的分区。(图 2)
    • 如果您有 32 位系统并且 DVD 是 64 位的,则找不到该分区。选择显示所有分区框将显示它,如果选择,您将被警告要升级到不同的架构。有问题且不受支持;让生活变得有趣 ;-)
  • 现在我们进入以前使用的仓库屏幕:所有仓库都被删除,因为它们指向“旧”发行版。如果需要,我们可以更改 URL 并激活它。(图 3)。请注意,15.4 不会警告找不到的仓库,因此最好在准备步骤中检查这一点。此外,在此屏幕中,${releasever} 被替换为 15.3 而不是 15.4。
  • 如果我们激活了任何仓库,现在我们会收到未配置网络的提示,并被要求配置它。因此,进入网络设置屏幕,您可以在此处进行设置。(图 4)
  • 我们进入安装设置屏幕,这是此升级过程的核心,配置中心。它由以下部分组成(图 5)
    • 系统
    • 更新选项
    • 软件包
    • 备份
    • 语言
    • 键盘布局
    • 启动

可以更改很多东西。如果您认为有问题,请单击该部分并更改一些设置。如果您对更改满意,请按更新

  • 如果您正在从 openSUSE Leap 42.2 升级到 Leap 42.3,您需要大于 21 GB 的根分区(确切大小未知,因为 Leap 42.3 计算所需的磁盘空间至少高出 600MB)。

系统

无需执行任何操作。它检测硬件,您可以根据需要更改一些内容。

更新选项

可能性是根据所选模式更新(可以更改它们),或者仅在当前安装的软件包中更新。第二种选择会导致一个与原始系统非常接近的系统,而第一种选择更接近于全新安装的系统。这是默认选项,可能是一个更好的选择。

软件包

在这里,重要的是要解决已安装软件包与可用升级之间的潜在冲突。系统会尽可能自动解决所有问题,但并非总是如此。某些冲突是由启用多个其他(即第三方)仓库引起的,而另一些冲突是由软件包从一个版本到另一个版本所提供的更改引起的。因此,我们仔细查看此处。如果您遇到许多冲突或复杂的依赖关系,似乎最好卸载这些冲突的软件包,然后告诉它再次尝试。解决冲突后,我们可以选择或取消选择我们想要拥有的任何软件包。但请记住,我们添加的任何内容在此过程中安装的速度都会比系统运行时慢,因为您可以在下载内容时使用它,而现在我们将不得不等待。

备份

最好保持不变。

  • 创建修改文件的备份。它们存储在 /var/adm/backup/* 中,但很少有文件作为备份有用。
  • 创建 /etc/sysconfig/ 的完整备份。这可能很有用。它们保存在与上述相同的位置。

语言

可以选择不同的或额外的语言,并调整键盘。

键盘布局

并且可以更改键盘布局。

启动

最好保持不变。


升级

我们获得最后一次升级或中止的机会。如果我们继续,我们会看到与全新安装相同的幻灯片,或者详细显示:这有点不同。我们必须耐心,该过程比全新安装慢得多,尤其是在功能不强大的机器上:甚至几个小时。

有时会出现失败的软件包。它们似乎来自第三方的仓库,也许 URL 不正确。在此步骤中无法执行任何操作。

最后,该过程结束,机器重新启动。


升级后

有一些任务需要在升级显然完成后才能完成。

未更新的软件包

安装系统中某些软件包不在 DVD 中,必须从 OSS 仓库或 nonOSS 仓库或其他仓库下载;因此,当此离线升级完成后,可能还有另一轮在线软件包升级。

为了使此纠正过程有效,首先您必须确保仓库列表对于新系统是正确的。之后,执行以下任何一种可能性

可能性

  • 运行 zypper dup。它会下载所有必需的内容。效率不高。并且在某些情况下可能很危险。
  • 运行 zypper up。更整洁。它更新具有较新版本的在线软件包。
  • 运行 rpm 查询并手动更新所需内容。例如,您可以运行
rpm -q -a --queryformat "%{INSTALLTIME};%{INSTALLTIME:day}; \
    %{BUILDTIME:day}; %{NAME};%{VERSION}-%-7{RELEASE};%{arch}; \
    %{VENDOR};%{PACKAGER};%{DISTRIBUTION};%{DISTTAG}\n" \
    | sort | cut --fields="2-" --delimiter=\; \
    | tee rpmlist.csv | less -S

rpm -q -a --queryformat "%{INSTALLTIME}\t%{INSTALLTIME:day} \
    %{BUILDTIME:day} %-30{NAME}\t%15{VERSION}-%-7{RELEASE}\t%{arch} \
    %25{VENDOR}%25{PACKAGER} == %{DISTRIBUTION} %{DISTTAG}\n" \
    | sort | cut --fields="2-" | tee rpmlist | less -S

第一个版本生成一个以分号分隔的文本字段列表,可以将其导入电子表格并进行检查。第二个版本生成一个制表符分隔的文本列表,以便进行视觉检查。

在两种情况下,它都是按安装日期排序的系统中所有已安装软件包的列表,并打印了几个字段,以便识别软件包属于旧系统还是升级后的系统(或者在 32 位到 64 位升级的情况下,属于错误的架构)。然后,可以使用 zypper in packagename 对每个软件包进行升级,或者启动 YaST 包管理器并逐个选择进行升级。

另一个有趣的变体是

rpm -q -a --queryformat "%{INSTALLTIME}\t%{INSTALLTIME:day} \
   %{BUILDTIME:day} %-30{NAME}\t%15{VERSION}-%-7{RELEASE}\t%{arch} \
   %25{VENDOR}%25{PACKAGER} == %{DISTRIBUTION} %{DISTTAG}\n" \
  | sort | cut --fields="2-" | tee rpmlist.txt \
  | egrep -v "openSUSE Leap 15\.2|openSUSE_Leap_15.2|-lp152" | less -S

这将生成一个列表,其中包含可能不属于所列发行版的软件包,例如,Leap 15.2。您需要查看生成的列表,确定软件包是否属于您的发行版版本,并采取必要的步骤进行升级。例如,它可能是一个不再包含在发行版中的软件包,或者来自一个未更新 URL 的仓库,或者需要激活其他仓库。无论如何。您需要决定该怎么做并执行它。您甚至可能希望保留旧版本(如果无法获得新版本并且它不会破坏其他功能)。

最后,重启并验证一切是否正常工作。如果不行,请验证下一小节。

过时的配置文件

升级后,许多配置文件会更改,也有许多不会更改。其中许多(两种类型)都需要修改。该脚本rcrpmconfigcheck生成一个文件,其中包含您需要查看的配置文件列表。例如

# rcrpmconfigcheck
Searching for unresolved configuration files            done
Please check the following files (see /var/adm/rpmconfigcheck):
  /etc/apparmor.d/usr.lib.dovecot.imap.rpmnew
  /etc/checkinstallrc.rpmsave

这是一项需要完成的繁琐任务。上面显示了两种情况

  • 旧配置文件仍然处于活动状态,而 rpm 中的新配置文件则保留为*rpmnew。
  • 旧配置保存为*rpmsave,并且激活了新配置文件。

您可以编辑旧配置文件,从中选择您决定的内容到新配置文件,或者编辑新配置文件并添加从旧副本中获取的更改。这取决于您的选择和作为管理员的责任 ;-)

一个非常好的工具是meld(可视化差异和合并工具)。您可以同时编辑两个(或三个)文件,查看它们之间的差异,并将部分内容从一个文件复制到另一个文件。

如果遇到问题,可以使用上面章节中提到的全新安装作为指导(一个技巧)。例如,从 11.1 升级到 11.4,您会遇到 X 使用的视频系统发生巨大变化的问题:它不再使用配置文件,而是使用自动检测。X 在首次启动时可能无法工作;能够将配置与正常工作的全新安装进行比较,可以帮助定位和修复升级后的系统,直到它正常工作。

最后...

最后,执行 zypper patch 或运行 YOU(YaST 在线更新),一切都应该完成 :-)


进一步的信息链接


图示

这些是从 13.2 升级到 Leap 42.1 的屏幕截图,发生在 VirtualBox 内部的虚拟机中。