跳转至

软件包叠加

使用 rpm-ostree

Attention

不负责任地叠加软件包可能具有破坏性,并可能阻止更新,或造成其它问题,直到移除叠加的软件包为止。

可以使用 rpm-ostree 终端命令,在现有 Bazzite 镜像之上安装 Fedora Linux 软件包。它适用于无法通过 Homebrew 安装、也无法在容器中运行的软件包。由于叠加软件包必须随镜像其余部分一起更新,一旦出现依赖问题,系统升级可能会被阻断,直到移除这些软件包为止。它也会让升级过程耗时更久。

关键注意事项

  • 叠加软件包在完成创建新部署、并把软件包加入镜像后,需要重启系统。
  • 请仅把这种方式作为最后手段,并只用于“系统层级”的内容。因为如果该软件包在未来升级中出现依赖问题,系统更新可能会暂停,直到卸载该软件包。

与软件包叠加相关的终端命令

使用这些命令需要自行承担风险

叠加软件包

rpm-ostree install <package>

将 Fedora 软件包安装到系统中,并在更新之间保留。重启后安装才会生效。

卸载叠加软件包

rpm-ostree uninstall <package>

卸载已添加到系统中的叠加软件包。重启后卸载才会生效。

搜索软件包

rpm-ostree search <package>

搜索可安装的 Fedora 软件包。

查看当前叠加的软件包

rpm-ostree status

这会输出你的 Bazzite 安装中已叠加的软件包。

安装 RPM 文件

大多数 .rpm 文件应通过 Fedora Distrobox 容器使用,但如果它在容器中运行效果不好,有时也需要安装到主机上。

你可以通过输入以下命令,用 rpm-ostree 将 RPM 二进制包安装到主机

rpm-ostree install <package>.rpm

你可能需要复制完整路径(/path/to/rpmfile.rpm)才能正常安装。

Important

安装 Fedora 仓库之外的本地 RPM 文件的缺点是,该 RPM 软件包不会自动应用更新。

如何添加/移除 COPR 仓库?

Warning

强烈建议尽可能不要使用第三方 COPR 仓库。请注意,这会带来风险,包括在移除之前破坏更新。

sudo dnf5 copr enable <USER>/<PROJECT>

此方法适用于 Fedora 以外的 COPR(例如:Docker

sudo dnf5 config-manager addrepo --from-repofile=https://url/to/file.repo
  1. 下载 .repo 文件并保存到 /etc/yum.repos.d/

  2. 然后使用 rpm-ostree 安装软件包

  3. 重启

如果你因为 GPG 签名问题而无法更新系统,可以通过移除 COPR 仓库解决;也可以编辑该文件,将 gpgcheck=1 改为 gpgcheck=0(或类似设置)并保存,但这需要自行承担风险

请确保事先移除所有通过该 COPR 安装的软件包。

sudo dnf5 copr disable <USER>/<PROJECT>

移除 /etc/yum.repos.d/ 中的 .repo 文件

移除 /etc/yum.repos.d/ 中的 .repo 文件

如何恢复默认 COPR

# 移除当前所有仓库
sudo rm /etc/yum.repos.d/*

# 将默认仓库文件从 /usr/etc 复制到 /etc
sudo cp /usr/etc/yum.repos.d/* /etc/yum.repos.d/

使用 rpm-ostree重大注意事项

叠加软件包可能造成严重后果,包括:

  • 暂停系统更新,直到卸载相关软件包。
  • 阻止 rebase 到其它镜像,直到卸载相关软件包。
  • 与镜像中已有软件包冲突,导致依赖问题。
  • 随着叠加到系统中的软件包变多,更新下载耗时更久。

软件包叠加主要面向系统层级应用、库和其它依赖。在使用 rpm-ostree 安装软件之前,建议优先考虑 Flatpak、Homebrew、容器、AppImage、Waydroid,或通过兼容层运行 Windows 版本。临时叠加软件包,比无限期保留叠加包更合适。

如何移除所有叠加软件包

如果你因为叠加软件包冲突而遇到升级问题,可以选择卸载冲突的软件包,或使用这个命令移除所有叠加软件包:

rpm-ostree reset

项目网站

https://coreos.github.io/rpm-ostree/