openSUSE: 将 Leap 迁移到 Tumbleweed
在本文档的上下文中,“升级”是指从 openSUSE Leap 迁移到 Tumbleweed。如果您已经拥有 Tumbleweed,请参阅 SDB:Upgrade Tumbleweed。
有两种受支持的升级机制
- 离线升级 - 此方法使用 DVD 启动系统并进行升级
- 在线升级 - 此方法更改现有 openSUSE 安装的仓库,并在系统在线时进行升级
离线升级略微安全,因为没有运行中的应用程序干扰升级过程
在线升级更方便一些,因为它可以在系统运行时完成,并且不需要完全下载 DVD
离线升级
离线升级只需要几个步骤
- 下载合适的 DVD 介质,并将其刻录到 DVD 或 USB 存储设备
- 启动 DVD 或 USB 存储设备
- 选择“升级”
- 按照向导操作,它将检测您机器上的 openSUSE 安装,并提供升级它们的功能。
在线升级
!在线升级到 Tumbleweed >= 20200826 仅支持从 Leap >= 15.2!
要从任何发行版在线升级到 Tumbleweed,需要完成三个任务
- 如果存在任何旧发行版的当前在线更新,请安装它们。
- 更改仓库以指向 Tumbleweed
- 运行 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 快照延迟且需要快速修复重大安全漏洞时才使用。
运行升级
完成仓库设置后,使用 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 中完成,以防止锁定系统。