This document is currently written with Fedora as a reference. As Netavark gets shipped in other distros, this should become a distro-agnostic document.
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.
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
.
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.
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.
- netavark package includes:
Provides: container-network-stack = 2
- containernetworking-plugins package includes:
Provides: container-network-stack = 1
- containers-common package includes:
Requires: container-network-stack
Recommends: netavark
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