Skip to content

Latest commit

 

History

History
104 lines (78 loc) · 3.33 KB

DISTRO_PACKAGE.md

File metadata and controls

104 lines (78 loc) · 3.33 KB

Netavark: A container network stack

This document is currently written with Fedora as a reference. As Netavark gets shipped in other distros, this should become a distro-agnostic document.

Fedora Users

Netavark is available as an officlal Fedora package on Fedora 35 and newer versions and is only meant to be used with Podman v4 and newer releases.

$ sudo dnf install netavark

NOTE: Fedora 35 users will not be able to install Podman v4 using the default yum repositories. Please consult the Podman packaging docs for instructions on how to fetch Podman v4.0 on Fedora 35.

After installation, if you would like to migrate all your containers to use Netavark, you will need to set network_backend = "netavark" under the [network] section in your containers.conf (typically located at: /usr/share/containers/containers.conf

If you would like to test the latest unreleased upstream code, try the podman-next COPR

$ sudo dnf copr enable rhcontainerbot/podman-next

$ sudo dnf install netavark

CAUTION: The podman-next COPR provides the latest unreleased sources of Podman, Netavark and Aardvark-dns as rpms which would override the versions provided by the official packages.

Distro Packagers

The vendored sources for netavark will be attached to each netavark release as a tarball. You can download them with the following:

https://github.com/containers/netavark/releases/download/v{version}/netavark-v{version}-vendor.tar.gz

And then create a cargo config file to point it to the vendor dir.

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

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

The Fedora packaging sources for Netavark are available at the Netavark dist-git.

The Fedora packaged versions of the rust crates that Netavark depends on are frequently out of date, for example, rtnetlink, sha2, zbus and zvariant at the time of initial package creation. So, the Fedora package builds Netavark using the dependencies vendored upstream, found in the vendor subdirectory.

The netavark binary is installed to /usr/libexec/podman/netavark.

Dependency on aardvark-dns

The netavark package has a Recommends on the aardvark-dns package. The aardvark-dns package will be installed by default with netavark, but netavark will be functional without it.

Relationship with the CNI Plugins package

While Netavark is a replacement for CNI Plugins (available as containernetworking-plugins on Fedora), the netavark package should be recommended for new installations but will not conflict with containernetworking-plugins. To avoid that conflict, we have made the following changes to the Fedora packages.

  1. netavark package includes:
Provides: container-network-stack = 2
  1. containernetworking-plugins package includes:
Provides: container-network-stack = 1
  1. containers-common package includes:
Requires: container-network-stack
Recommends: netavark

Listing bundled dependencies

If you need to list the bundled dependencies in your packaging sources, you can run the cargo tree command in the upstream source. For example, Fedora's packaging source uses:

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