openSUSE: 将 Leap 迁移到 Tumbleweed

跳转到:导航搜索

在本文档的上下文中,“升级”是指从 openSUSE Leap 迁移到 Tumbleweed。如果您已经拥有 Tumbleweed,请参阅 SDB:Upgrade Tumbleweed

有两种受支持的升级机制

  • 离线升级 - 此方法使用 DVD 启动系统并进行升级
  • 在线升级 - 此方法更改现有 openSUSE 安装的仓库,并在系统在线时进行升级

离线升级略微安全,因为没有运行中的应用程序干扰升级过程

在线升级更方便一些,因为它可以在系统运行时完成,并且不需要完全下载 DVD

离线升级

离线升级只需要几个步骤

  1. 下载合适的 DVD 介质,并将其刻录到 DVD 或 USB 存储设备
  2. 启动 DVD 或 USB 存储设备
  3. 选择升级
  4. 按照向导操作,它将检测您机器上的 openSUSE 安装,并提供升级它们的功能。
如果存在额外的非标准仓库,由于依赖项不可用,离线升级可能会失败。在这种情况下,推荐使用在线方法。

在线升级

!在线升级到 Tumbleweed >= 20200826 仅支持从 Leap >= 15.2!

要从任何发行版在线升级到 Tumbleweed,需要完成三个任务

  1. 如果存在任何旧发行版的当前在线更新,请安装它们。
  2. 更改仓库以指向 Tumbleweed
  3. 运行 zypper dup(这是 zypper dist-upgrade 的简写)以升级所有软件包

仓库

首先删除现有的仓库

mkdir /etc/zypp/repos.d/old
mv /etc/zypp/repos.d/*.repo /etc/zypp/repos.d/old

然后添加新的仓库(取决于您的架构)

  • x86, x86_64
zypper ar -f -c http://download.opensuse.org/tumbleweed/repo/oss repo-oss
zypper ar -f -c http://download.opensuse.org/tumbleweed/repo/non-oss repo-non-oss
zypper ar -f -c http://download.opensuse.org/tumbleweed/repo/debug repo-debug
zypper ar -f -c http://download.opensuse.org/update/tumbleweed/ repo-update
  • aarch64
zypper ar -f -c http://download.opensuse.org/ports/aarch64/tumbleweed/repo/oss repo-oss
zypper ar -f -c http://download.opensuse.org/ports/aarch64/tumbleweed/repo/non-oss repo-non-oss
zypper ar -f -c http://download.opensuse.org/ports/aarch64/debug/tumbleweed/repo/oss/ repo-debug
zypper ar -f -c http://download.opensuse.org/ports/aarch64/update/tumbleweed/ repo-update

您可以选择添加源的仓库,通常您会使用 OBS 来实现此目的。

  • x86, x86_64
zypper ar -f -d -c http://download.opensuse.org/tumbleweed/repo/src-oss repo-src-oss
zypper ar -f -d -c http://download.opensuse.org/tumbleweed/repo/src-non-oss repo-src-non-oss
  • aarch64
zypper ar -f -d -c http://download.opensuse.org/ports/aarch64/source/tumbleweed/repo/oss/ repo-src-oss


仓库列表应如下所示

# zypper lr -u
 # | Alias             | Name              | Enabled | Refresh | URI
 --+-------------------+-------------------+---------+---------+--------------------------------------------------------
 1 | repo-debug        | repo-debug        | Yes     | Yes     | http://download.opensuse.org/tumbleweed/repo/debug
 2 | repo-non-oss      | repo-non-oss      | Yes     | Yes     | http://download.opensuse.org/tumbleweed/repo/non-oss
 3 | repo-oss          | repo-oss          | Yes     | Yes     | http://download.opensuse.org/tumbleweed/repo/oss
 4 | repo-src-non-oss  | repo-src-non-oss  | No      | Yes     | http://download.opensuse.org/tumbleweed/repo/src-non-oss
 5 | repo-src-oss      | repo-src-oss      | No      | Yes     | http://download.opensuse.org/tumbleweed/repo/src-oss
 6 | update            | repo-update       | Yes     | Yes     | http://download.opensuse.org/update/tumbleweed/

更新仓库通常是空的,仅在下一个 Tumbleweed 快照延迟且需要快速修复重大安全漏洞时才使用。

Icon-warning.png
警告:如果存在额外的非标准仓库,请确保它们指向正确的 Tumbleweed URL,否则由于缺少依赖项,迁移可能会失败。

运行升级

完成仓库设置后,使用 zypper dup 进行升级。

在一个 screen 会话中运行以下命令是一个好主意,以避免在例如 X 崩溃的情况下 zypper 被终止。或者,您可以使用 tmux 或 TTY 会话。
zypper cc -a && zypper ref && zypper dup --allow-vendor-change

现在去喝杯咖啡,享受我们的滚动发布吧。

同时,请不要忘记订阅 邮件列表 以随时了解 Factory 的开发情况。

如果升级失败:刷新 zypper

有时 zypper 会在无法找到某些文件时升级失败,例如

Retrieving: monitoring-tools-1.14.0-4.2.x86_64.rpm ......................................................................................................[error]
File './x86_64/monitoring-tools-1.14.0-4.2.x86_64.rpm' not found on medium 'http://download.opensuse.org/repositories/server:/monitoring/openSUSE_Tumbleweed/'

当您查看 http://download.opensuse.org/repositories/server:/monitoring/openSUSE_Tumbleweed/x86_64/ 时,您会看到更新版本的 monitoring-tools-*.x86_64.rpm

上述错误通常意味着您的本地 zypper 配置与仓库不同步。zypper refresh 可以解决此问题,因此此组合可以正确更新

zypper refresh --force
zypper dist-upgrade

常见问题

升级后出现 PAM 错误

最近,使用上述说明升级到 Tumbleweed 将导致错误的 PAM 配置,从而导致诸如

 cron[20917]: PAM unable to dlopen(/usr/lib64/security/pam_cracklib.so): /usr/lib64/security/pam_cracklib.so: cannot open shared object file: No such file or directory
 cron[20917]: PAM adding faulty module: /usr/lib64/security/pam_cracklib.so

被频繁打印到系统日志中。

问题在于对 Tumbleweed 上不再存在的 PAM 模块的配置引用

 # grep -r cracklib /etc/pam.d
 /etc/pam.d/common-password-pc:password requisite       pam_cracklib.so
 /etc/pam.d/common-password.pam-config-backup:password        requisite       pam_cracklib.so

假设系统上没有使用自定义 PAM 配置,可以通过重新安装 PAM 默认值来解决此问题

 # old /etc/pam.d
 # zypper in -f pam pam-config

应在 root shell 中执行此操作,以防止锁定系统。