Science and technology

What Linux customers and packagers must learn about Podman 4.0 on Fedora

 

 

The newly launched Podman 4.0 contains a full rewrite of the community stack primarily based on Netavark and Aardvark, which can operate alongside the present Container Networking Interface (CNI) stack.

Netavark is a Rust-based device for configuring networking for Linux containers that serves as a substitute for CNI plugins (containernetworking-plugins on Fedora). Aardvark-dns is now the authoritative DNS server for container information. Along with the brand new stack comes distro packaging adjustments together with repository availability adjustments for Fedora 35.

For Fedora customers

Podman v4 is out there as an official Fedora package deal on Fedora 36 and Rawhide. Both Netavark and Aardvark-dns can be found as official Fedora packages on Fedora 35 and newer variations and kind the default community stack for brand spanking new installations of Podman 4.0.

On Fedora 36 and newer, contemporary installations of Podman v4 will robotically set up Aardvark-dns together with Netavark.

To set up Podman v4:

$ sudo dnf set up podman

To replace Podman from an older model to v4:

$ sudo dnf replace podman

Because Podman v4 options some breaking adjustments from Podman v3, Fedora 35 customers can’t set up Podman v4 utilizing the default repositories. However, in the event you’re keen to provide it a strive, you should utilize a Copr repository as a substitute:

$ sudo dnf copr allow rhcontainerbot/podman4

# set up or replace per your wants
$ sudo dnf set up podman

After set up, if you need emigrate all of your containers to make use of Netavark, it’s essential to set network_backend = "netavark" beneath the [network] part in your containers.conf, usually positioned at /usr/share/containers/containers.conf.

Testing the newest growth model

If you want to check the newest unreleased upstream code, strive the podman-next Copr:

$ sudo dnf copr allow rhcontainerbot/podman-next

$ sudo dnf set up podman

CAUTION: The podman-next Copr supplies the newest unreleased sources of Podman, Netavark, and Aardvark-dns as RPM Package Managers (RPMs). These will override the variations provided by the official packages.

For Fedora packagers

The Fedora packaging sources for Podman can be found in Fedora’s repository for package deal upkeep. The predominant Podman package deal now not explicitly is dependent upon containernetworking-plugins. The community stack dependencies are actually dealt with within the containers-common package deal, which permits for a single level of dependency upkeep for Podman and Buildah.

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

- netavark
Provides: container-network-stack = 2

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

This configuration ensures that:

  • New installations of Podman will all the time set up Netavark by default.
  • The containernetworking-plugins package deal won’t battle with Netavark, and customers can set up them collectively.

Listing bundled dependencies

If that you must listing the bundled dependencies in your packaging sources, you possibly can course of the go.mod file within the upstream supply. For instance, Fedora’s packaging supply makes use of:

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

Netavark and Aardvark-dns

The .tar vendored sources for Netavark and Aardvark-dns might be hooked up as an upstream launch artifact. Then you possibly can create a Cargo config file to level it to the seller listing:

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

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

The Fedora packaging sources for Netavark and Aardvark-dns are additionally out there within the Fedora Project’s repository.

The Fedora packaged variations of the Rust crates that Netavark and Aardvark-dns rely on are ceaselessly old-fashioned (for instance, rtnetlink, sha2, zbus, and zvariant) on the time of preliminary package deal creation. As a outcome, Netavark and Aardvark-dns are constructed utilizing the dependencies vendored upstream, discovered within the vendor subdirectory.

The netavark binary is put in to /usr/libexec/podman/netavark, whereas the aardvark-dns binary is put in to /usr/libexec/podman/aardvark-dns.

The netavark package deal has a Recommends on the aardvark-dns package deal. The aardvark-dns package deal might be put in by default with Netavark, however Netavark might be purposeful with out it.

Listing bundled dependencies

If that you must listing the bundled dependencies in your packaging sources, you possibly can run the cargo tree command within the upstream supply. For instance, Fedora’s packaging supply makes use of:

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

To study extra

I hope you discovered these updates useful. If you have got any questions please be at liberty to open a dialogue on GitHub, or contact me or the opposite Podman maintainers by way of Slack, IRC, Matrx, or Discord. Better nonetheless, we’d love so that you can join our community as a contributor!

Most Popular

To Top