SDB:System upgrade

跳转到:导航搜索
本指南演示如何使用 Zypperopensuse-migration-tool 执行 openSUSE Leap 的实时分发升级。

在 openSUSE 上测试

推荐文章

Icon-manual.png



升级到 Leap 16.0

通常,升级应该只是运行 zypper --releasever $RELEASE dup # 例如 16.0 的简单问题。但是,在主要版本更新之间,分发仓库可能会发生变化,用户可能需要执行一个或多个额外的步骤。

主要变更

通用

Leap 16.0 将无法在不支持 x86_64-v2 的机器上运行。如果您没有 x86_64-v2 兼容 的机器,请考虑使用 openSUSE Tumbleweed。

SELinux 是 Leap 16.0 新安装的默认设置。Leap 16.0 仍然可以配置为使用 AppArmor

YaST 堆栈的大部分已被从 SLES 16 中删除,因此也从 Leap 中删除。好消息是,我们有一个 YaST 软件安装 GUI 的替代品,称为 Myrlyn。其他 YaST 模块的替代品是 Cockpit

分发仓库

与 Leap 15 相比,最显著的变化包括

  • 删除专用的更新仓库(backport、update、SLE)
  • 将仓库按架构拆分,以减少 repodata 大小并提高刷新速度。

Leap 16.0 默认使用 Repository Index Service 进行管理。 openSUSE-repos 包自动管理仓库定义,无需用户手动更新。Leap 16.0 的仓库定义可在 openSUSE-repos GitHub 项目 中找到。

此机制允许在各种 openSUSE 分发版之间无缝迁移。

Leap 16.0 发布说明草案

Leap 16.0 的发布说明正在进行全面修订。草案可以在 此处 找到。

使用 opensuse-migration-tool 自动升级(推荐)

作为 Hackweek 24 的一部分,引入了 opensuse-migration-tool。此工具支持标准的发布升级和跨分发迁移(例如,从 Leap 到 SLES 或 Leap 到 Slowroll 或 Tumbleweed)。

它利用 openSUSE:Standards_Repository_Index_Service,仓库更新随后作为 openSUSE-repos 包更新的一部分部署。

它安装目标发布的适当仓库定义,然后执行 zypper dup 以执行升级。

 sudo zypper in opensuse-migration-tool # Available since 15.6
 sudo opensuse-migration-tool
 sudo reboot # After a successful migration

使用 btrfs 的系统可以使用 snapper 进行回滚,以防迁移失败。


opensuse-migration-tool 界面

如果您在使用该工具时遇到任何问题或想帮助开发 opensuse-migration-tool,请查看 [1]

使用 opensuse-migration-tool 执行升级的优点
  • 自动添加正确的分发仓库
  • 自动禁用不再存在的和第三方仓库(用户可以拒绝)
  • 可以自动从 AppArmor 切换到 SELinux

手动升级(仅供有经验的用户)

手动升级需要修改仓库,这在使用 opensuse-migration-tool 时会自动完成。如果您不执行以下描述的步骤,升级将因仓库错误而失败。

关于第三方仓库的说明

第三方仓库(例如 OBS、Packman、VLC、...)可能会在迁移过程中导致问题。

这尤其是在 Leap 开发周期的早期,因为第三方仓库可能不可用或损坏。一些仓库可能会硬编码 Leap 版本,而不是使用 $RELEASEVER 变量,从而导致过时软件中的未解决依赖项。

我们强烈建议在迁移之前禁用所有非官方仓库。

 zypper lr -u | egrep -v "/distribution/|/update/" # list the 3rd party repos
 zypper modifyrepo -d <REPO_ID> # to disable individual repositories

分发仓库

上文 所述,Leap 16 不再使用 update、backport 和 SLE 仓库。更新现在通过标准的 oss 和 non-oss 仓库部署。

在升级到 Leap 16 之前,需要禁用或删除不再存在的分发仓库。如果跳过此步骤,升级可能会因不存在的仓库错误而失败。

这是 Leap 15.6 的旧仓库集(没有调试和源代码)

# | Alias                     | URI
--+---------------------------+-------------------------+----------------------------------
1 | openSUSE:repo-non-oss     | http://cdn.opensuse.org/distribution/leap/15.6/repo/non-oss
2 | openSUSE:repo-oss         | http://cdn.opensuse.org/distribution/leap/15.6/repo/oss
3 | openSUSE:repo-openh264    | http://codecs.opensuse.org/openh264/openSUSE_Leap
4 | openSUSE:update-backports | http://cdn.opensuse.org/update/leap/15.6/backports
5 | openSUSE:update-non-oss   | http://cdn.opensuse.org/update/leap/15.6/non-oss
6 | openSUSE:update-oss       | http://cdn.opensuse.org/update/leap/15.6/oss
7 | openSUSE:update-sle       | http://cdn.opensuse.org/update/leap/15.6/sle

这是 Leap 16.0 的新仓库集(没有调试和源代码)

# | Alias                     | URI
--+---------------------------+-------------------------+----------------------------------
1 | openSUSE:repo-non-oss     | http://cdn.opensuse.org/distribution/leap/16.0/repo/non-oss
2 | openSUSE:repo-oss         | http://cdn.opensuse.org/distribution/leap/16.0/repo/oss
3 | openSUSE:repo-openh264    | http://codecs.opensuse.org/openh264/openSUSE_Leap

使用 zypper dup 手动升级

调整仓库后,运行以下命令

 sudo zypper --releasever 16.0 dup
 sudo reboot # After a successful migration

使用 openSUSE-repos 包手动升级

查看 这篇文章 以获取有关 openSUSE-repos 的基本信息

或者,您可以从 Leap 16.0 手动安装 openSUSE-repos 包以更新仓库定义。您可以从 https://software.opensuse.net.cn/package/openSUSE-repos-Leap 获取它。

只要定义没有更改,就可以从目标版本安装 openSUSE-repos

 sudo zypper --releasever 16.0 install openSUSE-repos-Leap

您还可以使用 osc 获取该包

 zypper in osc
 osc getbinaries -d /tmp openSUSE:Leap:16.0 openSUSE-repos:openSUSE-repos-Leap standard x86_64
 sudo zypper in /tmp/openSUSE-repos-Leap*.rpm

获得 Leap 16.0 仓库定义后,运行

 sudo zypper --releasever 16.0 dup
 sudo reboot # After a successful migration