关于 Fedora 上 Podman 4.0,Linux 用户和软件包维护者需要了解的内容

新的 Podman 功能为容器提供更好的支持并改进了性能。
4 位读者喜欢这篇文章。

 

 

新发布的 Podman 4.0 的特色是基于 Netavark 和 Aardvark 对网络堆栈进行了完全重写,它将与现有的容器网络接口 (CNI) 堆栈并行运行。

Netavark 是一款基于 Rust 的工具,用于配置 Linux 容器的网络,它可以替代 CNI 插件(Fedora 上的 containernetworking-plugins)。Aardvark-dns 现在是容器记录的权威 DNS 服务器。除了新的堆栈之外,还带来了发行版打包更改以及 Fedora 35 的存储库可用性更改。

对于 Fedora 用户

Podman v4 在 Fedora 36 和 Rawhide 上作为官方 Fedora 软件包提供。Netavark 和 Aardvark-dns 均在 Fedora 35 及更高版本上作为官方 Fedora 软件包提供,并构成 Podman 4.0 新安装的默认网络堆栈。

在 Fedora 36 及更高版本上,全新安装的 Podman v4 将自动安装 Aardvark-dns 以及 Netavark。

安装 Podman v4

$ sudo dnf install podman

将 Podman 从旧版本更新到 v4

$ sudo dnf update podman

由于 Podman v4 具有与 Podman v3 相比的一些重大更改,因此 Fedora 35 用户无法使用默认存储库安装 Podman v4。但是,如果您渴望尝试一下,可以使用 Copr 存储库代替

$ sudo dnf copr enable rhcontainerbot/podman4

# install or update per your needs
$ sudo dnf install podman

安装后,如果您想将所有容器迁移到使用 Netavark,则必须在 containers.conf 中的 [network] 部分下设置 network_backend = "netavark",该文件通常位于 /usr/share/containers/containers.conf

测试最新的开发版本

如果您想测试最新的未发布上游代码,请尝试 podman-next Copr

$ sudo dnf copr enable rhcontainerbot/podman-next

$ sudo dnf install podman

注意:podman-next Copr 提供 Podman、Netavark 和 Aardvark-dns 的最新未发布源代码,格式为 RPM 软件包管理器 (RPM)。这些将覆盖官方软件包提供的版本。

对于 Fedora 软件包维护者

Podman 的 Fedora 打包源可在 Fedora 的存储库 中找到,用于软件包维护。主 Podman 软件包不再显式依赖于 containernetworking-plugins。网络堆栈依赖项现在在 containers-common 软件包中处理,这允许 Podman 和 Buildah 的单一依赖项维护点。

- containers-common
Requires: container-network-stack
Recommends: netavark

- netavark
Provides: container-network-stack = 2

- containernetworking-plugins
Provides: container-network-stack = 1

此配置确保

  • Podman 的新安装将始终默认安装 Netavark。
  • containernetworking-plugins 软件包不会与 Netavark 冲突,用户可以一起安装它们。

列出捆绑的依赖项

如果您需要在打包源中列出捆绑的依赖项,则可以处理上游源中的 go.mod 文件。例如,Fedora 的打包源使用

$ awk '{print "Provides: bundled(golang("$1")) = "$2}' go.mod | \
sort | uniq | sed -e 's/-/_/g' -e '/bundled(golang())/d' -e '/bundled(golang(go\
|module\|replace\|require))/d'

Netavark 和 Aardvark-dns

.tar 供应商来源的 Netavark 和 Aardvark-dns 将作为上游发布工件附加。然后,您可以创建一个 Cargo 配置文件以将其指向 vendor 目录

tar xvf %{SOURCE}
mkdir -p .cargo
cat >.cargo/config << EOF
[source.crates-io]
replace-with = "vendored-sources"

[source.vendored-sources]
directory = "vendor"
EOF

Netavark 和 Aardvark-dns 的 Fedora 打包源也可在 Fedora 项目的存储库中找到。

Netavark 和 Aardvark-dns 依赖的 Rust crate 的 Fedora 打包版本经常过时(例如,rtnetlink、sha2、zbus 和 zvariant),这发生在初始软件包创建时。因此,Netavark 和 Aardvark-dns 是使用上游供应商提供的依赖项构建的,这些依赖项在 vendor 子目录中找到。

netavark 二进制文件安装到 /usr/libexec/podman/netavark,而 aardvark-dns 二进制文件安装到 /usr/libexec/podman/aardvark-dns

netavark 软件包在 aardvark-dns 软件包上具有 Recommends。默认情况下,aardvark-dns 软件包将与 Netavark 一起安装,但 Netavark 在没有它的情况下也能正常工作。

列出捆绑的依赖项

如果您需要在打包源中列出捆绑的依赖项,则可以在上游源中运行 cargo tree 命令。例如,Fedora 的打包源使用

$ cargo tree --prefix none |  \
awk '{print "Provides: bundled(crate("$1")) = "$2}' | \
sort | uniq

了解更多信息

希望这些更新对您有所帮助。如果您有任何问题,请随时在 GitHub 上发起讨论,或通过 Slack、IRC、Matrx 或 Discord 联系我或其他 Podman 维护人员。更好的是,我们很乐意您加入我们的社区成为贡献者!

标签
Avatar
Lokesh Mandvekar 是红帽公司容器团队的高级软件工程师。

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.