SDB:升级 Tumbleweed
如何更新 Tumbleweed
openSUSE Tumbleweed 是一个滚动发布的桌面/服务器项目,这意味着它持续提供最新的稳定软件更新。
Zypper 是 ZYpp 系统管理库 (libzypp) 的命令行界面。它可以用于安装、更新、删除软件、管理仓库、执行各种查询等在 Tumbleweed 中。
有一种方法可以升级 Tumbleweed 系统
# zypper dist-upgrade
或者,为了方便起见
# zypper dup
由于 Tumbleweed 具有滚动发布模型,因此它没有其他发行版中经常看到的明确版本。随着系统的持续更新和发布,新的“快照”或“发行版”的 Tumbleweed 变得可用,有些人会将它们标记为版本以供参考。
为什么?因为我们希望将 Tumbleweed 中的所有内容更新到最新的已发布快照,包括以下内容:
- 内核
- 库
- 核心系统工具
虽然大多数用户对这个命令都很好,但以下是一些额外的标志和参数,允许进一步的更新功能,范围从但不限于
- 如果我从多个仓库获取软件怎么办?
- 如果我想在实际运行更新之前测试更新怎么办?
- 如果我想在无需确认或选择软件更新选项(无需干预)的情况下运行更新怎么办?
Zypper 可以处理所有这些场景!作为一个小例子,请查看下面一个小的 示例 zypper 命令,这些命令可能有所帮助。
有关 zypper 的更完整和通常更最新的文档,请访问 此处。
如果您真的非常谨慎,并且希望以不破坏或挂起与您的桌面环境 (DE) 相关的软件包(极其罕见)的方式执行 zypper dup,请查看下面的 通过 ROOT 退出登录进行更新 部分。
与任何涉及软件(无论是否滚动发布)的内容一样,底层软件包之间发生冲突的可能性存在。感谢 snapper 的强大功能,只需回滚到以前的状态,并在几天后运行 zypper dup,看看问题是否已解决。因此,建议您熟悉使用 snapper 回滚到机器的先前状态。它非常容易使用,并且可以确保您始终拥有一个可用的系统。
如果您仍然遇到问题,请不要犹豫,通过我们的 渠道/通信页面 寻求来自出色的社区的帮助。
示例 Zypper 命令
以下(截断)信息来自 Zypper 手册。请参阅 zypper 仓库 以获取作者列表。
dist−upgrade (dup) [选项]
执行分发升级。此命令将(指定)仓库的状态应用于系统;将已安装的软件包升级(甚至降级)到仓库中找到的版本,删除不再在仓库中的软件包,这些软件包对升级构成依赖问题,处理软件包拆分和重命名等。
如果未通过 −−from 选项指定任何仓库,zypper 将使用所有定义的仓库执行全局升级。这种全局形式的 dup 也会考虑未更改的已安装软件包并重新评估它们的依赖关系。
−−from 别名|名称|#|URI
可以多次使用此选项,并且仅将升级限制为指定的仓库。但是,所有启用的仓库都对求解器可见,并且将被视为满足依赖问题。
−l, −−auto−agree−with−licenses
自动同意第三方许可确认提示。通过使用此选项,您选择同意此命令将安装的所有第三方软件的许可。此选项对于管理员在多台机器上安装相同的软件包集(通过自动化过程)并在安装前确认许可非常有用。
−−auto−agree−with−product−licenses
仅自动接受产品许可。这由 SUSEconnect 等工具使用,这些工具在注册产品之前会要求确认。因此,无需在安装时再次确认产品许可。
−−replacefiles
即使它们替换了其他已安装软件包中的文件,也安装软件包。默认情况下,将文件冲突视为错误。−−download−as−needed 禁用文件冲突检查,因为需要提前访问所有软件包的文件列表才能执行检查。
−D, −−dry−run
测试升级,实际上不安装或升级任何软件包。此选项会将 −−test 选项添加到 dist−upgrade 命令运行的 rpm 命令中。
−y, −−no−confirm
不需要用户交互。全局选项 −−non−interactive 的别名。
−−details
显示详细的安装摘要。
求解器相关选项
−−debug−solver
创建用于调试的求解器测试用例。如果您认为依赖关系没有正确解决,请使用此选项,并将生成的 /var/log/zypper.solverTestCase 目录附加到您的错误报告中。要使用此选项,只需将其添加到有问题安装或删除命令中即可。
−−force−resolution
强制求解器通过允许删除具有未满足要求的软件包来找到解决方案。这是删除软件包 (zypper remove) 的默认行为。如果命令行中同时指定了这两个选项,此选项将覆盖 −−no−force−resolution。
−R, −−no−force−resolution
不要强制求解器找到解决方案。而是报告依赖问题并提示用户手动解决它们。默认情况下,除了删除软件包 (zypper remove) 之外,都是如此。
−−recommends
除了必需的软件包之外,还安装推荐的软件包。默认行为由 [zypp.conf:solver.onlyRequires] 确定。
−−no−recommends
不安装推荐的软件包,而仅安装必需的软件包。默认行为由 [zypp.conf:solver.onlyRequires] 确定。
专家选项
除非您知道需要它们,否则不要使用它们。
−−[no−]allow−downgrade
是否允许降级已安装的可解析项 [zypp.conf:solver.dupAllowDowngrade]。
−−[no−]allow−name−change
是否允许更改已安装的可解析项的名称 [zypp.conf:solver.dupAllowNameChange]。将其设置为 no 将不会替换已重命名的软件包。
−−[no−]allow−arch−change
是否允许更改已安装的可解析项的架构 [zypp.conf:solver.dupAllowArchChange]。
−−[no−]allow−vendor−change
是否允许更改已安装的可解析项的供应商 [zypp.conf:solver.dupAllowVendorChange]。将其设置为 no 可能有用,如果您不希望来自外国仓库的软件包被升级到发行版的版本(反之亦然)。
此命令还接受 下载和安装模式选项,如 install 命令描述中所述。
示例
$ zypper dup −−from factory −−from packman
将系统升级到 factory 和 packman 仓库提供的最新版本。
通过 ROOT 和退出登录进行升级
建议您熟悉 使用 snapper 回滚。
通常更安全的是退出您的桌面环境 (DE) 并从 虚拟控制台 进行升级:这可以避免与 DE 相关的任何内容在升级过程中冻结或崩溃。但是,您可以安全地从 DE 下载所有更改的软件包,而无需安装。这可以从 DE 终端 中完成
# zypper dup -d
这可能更方便,如果您需要 在论坛上询问冲突。
无论哪种方式,以下将完成升级
- 退出您的桌面环境并按
Ctrl+Alt+F1在登录管理器处。 - 以 root 身份登录。
- 输入命令
# zypper dup
- 处理任何冲突,然后同意升级。
- 升级完成后,输入命令
# reboot
不总是需要重新启动:Zypper 会告诉您何时需要重新启动。要返回 DE,请输入 exit 命令,然后按 CTRL+ALT+F2。
从理论上讲,在不需要重新启动时升级的最安全方法是隔离 rescue.target,因为在这种状态下加载的最少的东西,这意味着在切换回 DE 时大多数东西将被重新加载。其想法是避免运行过时的进程,这些进程可能会尝试与升级的软件包交互。您可以使用以下命令之一隔离 rescue.target
# systemctl isolate rescue.target