SDB:System upgrade
升级到 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,请查看 [1]。
- 自动添加正确的分发仓库
- 自动禁用不再存在的和第三方仓库(用户可以拒绝)
- 可以自动从 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
