Linux#
Alpine Linux (latest)#
Install the required toolchain and libraries by running the package installation
script provided with the xNVMe repository, as shown below. Ensure that you
have sufficient system privileges when doing so (e.g., run as root or with
sudo):
sudo ./xnvme/toolbox/pkgs/alpine-latest.sh
Or, run the commands contained within the script manually:
# Install packages via the system package-manager (apk)
apk add \
bash \
bsd-compat-headers \
build-base \
clang15-extra-tools \
coreutils \
cunit \
findutils \
gawk \
git \
libaio-dev \
libarchive-dev \
liburing-dev \
libuuid \
linux-headers \
make \
meson \
musl-dev \
nasm \
ncurses \
numactl-dev \
openssl-dev \
patch \
perl \
pkgconf \
py3-pip \
python3 \
python3-dev \
util-linux-dev
#
# Clone, build and install libvfn
#
# Assumptions:
#
# - Dependencies for building libvfn are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/SamsungDS/libvfn.git toolbox/third-party/libvfn/repository
pushd toolbox/third-party/libvfn/repository
git checkout v5.1.0
meson setup builddir -Dlibnvme="disabled" -Ddocs="disabled" --buildtype=release --prefix=/usr
meson compile -C builddir
meson install -C builddir
popd
# Install packages via the Python package-manager (pip)
python3 -m pip install --upgrade pip
python3 -m pip install \
pipx
Note
A Docker-image is provided via ghcr.io, specifically
ghcr.io/xnvme/xnvme-deps-alpine-latest:next. This Docker-image contains
all the software described above.
Then go ahead and configure, build and install using meson:
# configure xNVMe with SPDK and libvfn disabled
meson setup builddir -Dwith-spdk=disabled
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
Note
There are issues with SPDK/DPDK due to incompatibilities with the standard
library provided by musl libc. Additionally, the libexecinfo-dev
package is no longer available on Alpine.
Additionally, libvfn also relies on libexecinfo-dev which is currently
not available for Alpine Linux. Thus, it is also disabled.
Pull-request fixing these issues are most welcome, until then, disable
libvfn and spdk on Alpine.
Arch Linux (latest)#
Install the required toolchain and libraries by running the package installation
script provided with the xNVMe repository, as shown below. Ensure that you
have sufficient system privileges when doing so (e.g., run as root or with
sudo):
sudo ./xnvme/toolbox/pkgs/archlinux-latest.sh
Or, run the commands contained within the script manually:
# Install packages via the system package-manager (pacman)
pacman -Syyu --noconfirm
pacman -S --noconfirm \
base-devel \
bash \
clang \
cunit \
findutils \
git \
libaio \
libarchive \
liburing \
libutil-linux \
make \
meson \
nasm \
ncurses \
numactl \
openssl \
patch \
pkg-config \
python-pip \
python-pipx \
python-pyelftools \
python-setuptools \
python3 \
util-linux-libs
#
# Clone, build and install libvfn
#
# Assumptions:
#
# - Dependencies for building libvfn are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/SamsungDS/libvfn.git toolbox/third-party/libvfn/repository
pushd toolbox/third-party/libvfn/repository
git checkout v5.1.0
meson setup builddir -Dlibnvme="disabled" -Ddocs="disabled" --buildtype=release --prefix=/usr
meson compile -C builddir
meson install -C builddir
popd
#
# Clone, build and install libisal
#
# Assumptions:
#
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/intel/isa-l.git toolbox/third-party/libisal/repository
pushd toolbox/third-party/libisal/repository
git checkout v2.30.0
./autogen.sh
./configure --prefix=/usr --libdir=/usr/lib
make
make install
popd
Note
A Docker-image is provided via ghcr.io, specifically
ghcr.io/xnvme/xnvme-deps-archlinux-latest:next. This Docker-image contains
all the software described above.
Then go ahead and configure, build and install using meson:
# configure xNVMe and build meson subprojects(SPDK)
meson setup builddir --prefix=/usr
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
Note
The build is configured to install with --prefix=/usr this is
intentional such the the pkg-config files end up in the default search
path on the system. If you do not want this, then remove --prefix=/usr
and adjust your $PKG_CONFIG_PATH accordingly.
Oracle Linux 10 (10)#
Install the required toolchain and libraries by running the package installation
script provided with the xNVMe repository, as shown below. Ensure that you
have sufficient system privileges when doing so (e.g., run as root or with
sudo):
sudo ./xnvme/toolbox/pkgs/oraclelinux-10.sh
Or, run the commands contained within the script manually:
# Enable CRB repo for development packages
dnf install -y dnf-plugins-core
dnf config-manager --set-enabled ol10_codeready_builder
# Enable EPEL for additional packages
dnf install -y oracle-epel-release-el10
# Install packages via the system package-manager (dnf)
dnf install -y \
CUnit-devel \
autoconf \
bash \
clang-tools-extra \
diffutils \
findutils \
gcc \
gcc-c++ \
git \
libaio-devel \
libarchive-devel \
libtool \
liburing \
liburing-devel \
libuuid-devel \
make \
meson \
nasm \
ncurses \
numactl-devel \
openssl-devel \
patch \
pipx \
pkgconfig \
procps \
python3-devel \
python3-pip \
python3-pyelftools \
unzip \
wget \
zlib-devel
#
# Clone, build and install libisal
#
# Assumptions:
#
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/intel/isa-l.git toolbox/third-party/libisal/repository
pushd toolbox/third-party/libisal/repository
git checkout v2.30.0
./autogen.sh
./configure --prefix=/usr --libdir=/usr/lib64
make
make install
popd
#
# Clone, build and install libvfn
#
# Assumptions:
#
# - Dependencies for building libvfn are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/SamsungDS/libvfn.git toolbox/third-party/libvfn/repository
pushd toolbox/third-party/libvfn/repository
git checkout v5.1.0
meson setup builddir -Dlibnvme="disabled" -Ddocs="disabled" --buildtype=release --prefix=/usr
meson compile -C builddir
meson install -C builddir
popd
Note
A Docker-image is provided via ghcr.io, specifically
ghcr.io/xnvme/xnvme-deps-oraclelinux-10:next. This Docker-image contains
all the software described above.
Then go ahead and configure, build and install using meson:
# configure xNVMe and build meson subprojects(SPDK)
# --prefix=/usr to install directly into the system paths, avoiding the need
# to reconfigure the dynamic linker for /usr/local
meson setup builddir --prefix=/usr
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
Oracle Linux 9 (9)#
Install the required toolchain and libraries by running the package installation
script provided with the xNVMe repository, as shown below. Ensure that you
have sufficient system privileges when doing so (e.g., run as root or with
sudo):
sudo ./xnvme/toolbox/pkgs/oraclelinux-9.sh
Or, run the commands contained within the script manually:
# Enable CRB repo for development packages
dnf install -y dnf-plugins-core
dnf config-manager --set-enabled ol9_codeready_builder
# Enable EPEL for additional packages (e.g. pipx)
dnf install -y oracle-epel-release-el9
# Install packages via the system package-manager (dnf)
dnf install -y \
CUnit-devel \
autoconf \
bash \
clang-tools-extra \
diffutils \
findutils \
gcc \
gcc-c++ \
git \
libaio-devel \
libarchive-devel \
libtool \
liburing \
liburing-devel \
libuuid-devel \
make \
meson \
nasm \
ncurses \
numactl-devel \
openssl-devel \
patch \
pipx \
pkgconfig \
procps \
python3-devel \
python3-pip \
python3-pyelftools \
unzip \
wget \
zlib-devel
#
# Clone, build and install libisal
#
# Assumptions:
#
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/intel/isa-l.git toolbox/third-party/libisal/repository
pushd toolbox/third-party/libisal/repository
git checkout v2.30.0
./autogen.sh
./configure --prefix=/usr --libdir=/usr/lib64
make
make install
popd
#
# Clone, build and install libvfn
#
# Assumptions:
#
# - Dependencies for building libvfn are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/SamsungDS/libvfn.git toolbox/third-party/libvfn/repository
pushd toolbox/third-party/libvfn/repository
git checkout v5.1.0
meson setup builddir -Dlibnvme="disabled" -Ddocs="disabled" --buildtype=release --prefix=/usr
meson compile -C builddir
meson install -C builddir
popd
Note
A Docker-image is provided via ghcr.io, specifically
ghcr.io/xnvme/xnvme-deps-oraclelinux-9:next. This Docker-image contains
all the software described above.
Then go ahead and configure, build and install using meson:
# configure xNVMe and build meson subprojects(SPDK)
# --prefix=/usr to install directly into the system paths, avoiding the need
# to reconfigure the dynamic linker for /usr/local
meson setup builddir --prefix=/usr
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
Rocky Linux 9 (9.7)#
Install the required toolchain and libraries by running the package installation
script provided with the xNVMe repository, as shown below. Ensure that you
have sufficient system privileges when doing so (e.g., run as root or with
sudo):
sudo ./xnvme/toolbox/pkgs/rockylinux-9.7.sh
Or, run the commands contained within the script manually:
# Enable CRB repo for development packages
dnf install -y 'dnf-command(config-manager)'
dnf config-manager --set-enabled crb
# Enable EPEL for additional packages
dnf install -y epel-release
# Install packages via the system package-manager (dnf)
dnf install -y \
CUnit-devel \
autoconf \
bash \
clang-tools-extra \
diffutils \
findutils \
gcc \
gcc-c++ \
git \
libaio-devel \
libarchive-devel \
libtool \
liburing \
liburing-devel \
libuuid-devel \
make \
meson \
nasm \
ncurses \
numactl-devel \
openssl-devel \
patch \
pipx \
pkgconfig \
procps \
python3-devel \
python3-pip \
python3-pyelftools \
unzip \
wget \
zlib-devel
#
# Clone, build and install libisal
#
# Assumptions:
#
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/intel/isa-l.git toolbox/third-party/libisal/repository
pushd toolbox/third-party/libisal/repository
git checkout v2.30.0
./autogen.sh
./configure --prefix=/usr --libdir=/usr/lib64
make
make install
popd
#
# Clone, build and install libvfn
#
# Assumptions:
#
# - Dependencies for building libvfn are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/SamsungDS/libvfn.git toolbox/third-party/libvfn/repository
pushd toolbox/third-party/libvfn/repository
git checkout v5.1.0
meson setup builddir -Dlibnvme="disabled" -Ddocs="disabled" --buildtype=release --prefix=/usr
meson compile -C builddir
meson install -C builddir
popd
Note
A Docker-image is provided via ghcr.io, specifically
ghcr.io/xnvme/xnvme-deps-rockylinux-9.7:next. This Docker-image contains
all the software described above.
Then go ahead and configure, build and install using meson:
# configure xNVMe and build meson subprojects(SPDK)
# --prefix=/usr to install directly into the system paths, avoiding the need
# to reconfigure the dynamic linker for /usr/local
meson setup builddir --prefix=/usr
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
Rocky Linux 10 (10.1)#
Install the required toolchain and libraries by running the package installation
script provided with the xNVMe repository, as shown below. Ensure that you
have sufficient system privileges when doing so (e.g., run as root or with
sudo):
sudo ./xnvme/toolbox/pkgs/rockylinux-10.1.sh
Or, run the commands contained within the script manually:
# Enable CRB repo for development packages
dnf install -y 'dnf-command(config-manager)'
dnf config-manager --set-enabled crb
# Enable EPEL for additional packages
dnf install -y epel-release
# Install packages via the system package-manager (dnf)
dnf install -y \
CUnit-devel \
autoconf \
bash \
clang-tools-extra \
diffutils \
findutils \
gcc \
gcc-c++ \
git \
libaio-devel \
libarchive-devel \
libtool \
liburing \
liburing-devel \
libuuid-devel \
make \
meson \
nasm \
ncurses \
numactl-devel \
openssl-devel \
patch \
pipx \
pkgconfig \
procps \
python3-devel \
python3-pip \
python3-pyelftools \
unzip \
wget \
zlib-devel
#
# Clone, build and install libisal
#
# Assumptions:
#
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/intel/isa-l.git toolbox/third-party/libisal/repository
pushd toolbox/third-party/libisal/repository
git checkout v2.30.0
./autogen.sh
./configure --prefix=/usr --libdir=/usr/lib64
make
make install
popd
#
# Clone, build and install libvfn
#
# Assumptions:
#
# - Dependencies for building libvfn are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/SamsungDS/libvfn.git toolbox/third-party/libvfn/repository
pushd toolbox/third-party/libvfn/repository
git checkout v5.1.0
meson setup builddir -Dlibnvme="disabled" -Ddocs="disabled" --buildtype=release --prefix=/usr
meson compile -C builddir
meson install -C builddir
popd
Note
A Docker-image is provided via ghcr.io, specifically
ghcr.io/xnvme/xnvme-deps-rockylinux-10.1:next. This Docker-image contains
all the software described above.
Then go ahead and configure, build and install using meson:
# configure xNVMe and build meson subprojects(SPDK)
# --prefix=/usr to install directly into the system paths, avoiding the need
# to reconfigure the dynamic linker for /usr/local
meson setup builddir --prefix=/usr
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
CentOS Stream 10 (stream10)#
Install the required toolchain and libraries by running the package installation
script provided with the xNVMe repository, as shown below. Ensure that you
have sufficient system privileges when doing so (e.g., run as root or with
sudo):
sudo ./xnvme/toolbox/pkgs/centos-stream10.sh
Or, run the commands contained within the script manually:
# Enable CRB repo for development packages
dnf install -y 'dnf-command(config-manager)'
dnf config-manager --set-enabled crb
# Enable EPEL for additional packages
dnf install -y epel-release
# Install packages via the system package-manager (dnf)
dnf install -y \
CUnit-devel \
autoconf \
bash \
diffutils \
findutils \
gcc \
gcc-c++ \
git \
libaio-devel \
libarchive-devel \
libtool \
liburing \
liburing-devel \
libuuid-devel \
make \
meson \
nasm \
ncurses \
numactl-devel \
openssl-devel \
patch \
pipx \
pkgconfig \
procps \
python3-devel \
python3-pip \
python3-pyelftools \
unzip \
wget \
zlib-devel
#
# Clone, build and install libisal
#
# Assumptions:
#
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/intel/isa-l.git toolbox/third-party/libisal/repository
pushd toolbox/third-party/libisal/repository
git checkout v2.30.0
./autogen.sh
./configure --prefix=/usr --libdir=/usr/lib64
make
make install
popd
#
# Clone, build and install libvfn
#
# Assumptions:
#
# - Dependencies for building libvfn are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/SamsungDS/libvfn.git toolbox/third-party/libvfn/repository
pushd toolbox/third-party/libvfn/repository
git checkout v5.1.0
meson setup builddir -Dlibnvme="disabled" -Ddocs="disabled" --buildtype=release --prefix=/usr
meson compile -C builddir
meson install -C builddir
popd
Note
A Docker-image is provided via ghcr.io, specifically
ghcr.io/xnvme/xnvme-deps-centos-stream10:next. This Docker-image contains
all the software described above.
Then go ahead and configure, build and install using meson:
# configure xNVMe and build meson subprojects(SPDK)
# --prefix=/usr to install directly into the system paths, avoiding the need
# to reconfigure the dynamic linker for /usr/local
meson setup builddir --prefix=/usr
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
CentOS Stream 9 (stream9)#
Install the required toolchain and libraries by running the package installation
script provided with the xNVMe repository, as shown below. Ensure that you
have sufficient system privileges when doing so (e.g., run as root or with
sudo):
sudo ./xnvme/toolbox/pkgs/centos-stream9.sh
Or, run the commands contained within the script manually:
# Enable CRB repo for development packages
dnf install -y 'dnf-command(config-manager)'
dnf config-manager --set-enabled crb
# Enable EPEL for additional packages
dnf install -y epel-release
# Install packages via the system package-manager (dnf)
dnf install -y \
CUnit-devel \
autoconf \
bash \
diffutils \
findutils \
gcc \
gcc-c++ \
git \
libaio-devel \
libarchive-devel \
libtool \
liburing \
liburing-devel \
libuuid-devel \
make \
meson \
nasm \
ncurses \
numactl-devel \
openssl-devel \
patch \
pipx \
pkgconfig \
procps \
python3-devel \
python3-pip \
python3-pyelftools \
unzip \
wget \
zlib-devel
#
# Clone, build and install libisal
#
# Assumptions:
#
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/intel/isa-l.git toolbox/third-party/libisal/repository
pushd toolbox/third-party/libisal/repository
git checkout v2.30.0
./autogen.sh
./configure --prefix=/usr --libdir=/usr/lib64
make
make install
popd
#
# Clone, build and install libvfn
#
# Assumptions:
#
# - Dependencies for building libvfn are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/SamsungDS/libvfn.git toolbox/third-party/libvfn/repository
pushd toolbox/third-party/libvfn/repository
git checkout v5.1.0
meson setup builddir -Dlibnvme="disabled" -Ddocs="disabled" --buildtype=release --prefix=/usr
meson compile -C builddir
meson install -C builddir
popd
Note
A Docker-image is provided via ghcr.io, specifically
ghcr.io/xnvme/xnvme-deps-centos-stream9:next. This Docker-image contains
all the software described above.
Then go ahead and configure, build and install using meson:
# configure xNVMe and build meson subprojects(SPDK)
# --prefix=/usr to install directly into the system paths, avoiding the need
# to reconfigure the dynamic linker for /usr/local
meson setup builddir --prefix=/usr
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
Debian Stable (trixie)#
Install the required toolchain and libraries by running the package installation
script provided with the xNVMe repository, as shown below. Ensure that you
have sufficient system privileges when doing so (e.g., run as root or with
sudo):
sudo ./xnvme/toolbox/pkgs/debian-trixie.sh
Or, run the commands contained within the script manually:
# Unattended update, upgrade, and install
export DEBIAN_FRONTEND=noninteractive
export DEBIAN_PRIORITY=critical
apt-get -qy update
apt-get -qy \
-o "Dpkg::Options::=--force-confdef" \
-o "Dpkg::Options::=--force-confold" upgrade
apt-get -qy --no-install-recommends install apt-utils
apt-get -qy autoclean
apt-get -qy install \
autoconf \
bash \
build-essential \
clang-format \
findutils \
git \
libaio-dev \
libarchive-dev \
libcunit1-dev \
libisal-dev \
libncurses5-dev \
libnuma-dev \
libssl-dev \
libtool \
liburing-dev \
make \
meson \
nasm \
openssl \
patch \
pipx \
pkg-config \
python3 \
python3-pip \
python3-pyelftools \
python3-venv \
uuid-dev
#
# Clone, build and install libvfn
#
# Assumptions:
#
# - Dependencies for building libvfn are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/SamsungDS/libvfn.git toolbox/third-party/libvfn/repository
pushd toolbox/third-party/libvfn/repository
git checkout v5.1.0
meson setup builddir -Dlibnvme="disabled" -Ddocs="disabled" --buildtype=release --prefix=/usr
meson compile -C builddir
meson install -C builddir
popd
Note
A Docker-image is provided via ghcr.io, specifically
ghcr.io/xnvme/xnvme-deps-debian-trixie:next. This Docker-image contains
all the software described above.
Then go ahead and configure, build and install using meson:
# configure xNVMe and build meson subprojects(SPDK)
meson setup builddir
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
Debian Oldstable (bookworm)#
Install the required toolchain and libraries by running the package installation
script provided with the xNVMe repository, as shown below. Ensure that you
have sufficient system privileges when doing so (e.g., run as root or with
sudo):
sudo ./xnvme/toolbox/pkgs/debian-bookworm.sh
Or, run the commands contained within the script manually:
# Unattended update, upgrade, and install
export DEBIAN_FRONTEND=noninteractive
export DEBIAN_PRIORITY=critical
apt-get -qy update
apt-get -qy \
-o "Dpkg::Options::=--force-confdef" \
-o "Dpkg::Options::=--force-confold" upgrade
apt-get -qy --no-install-recommends install apt-utils
apt-get -qy autoclean
apt-get -qy install \
autoconf \
bash \
build-essential \
clang-format \
findutils \
git \
libaio-dev \
libarchive-dev \
libcunit1-dev \
libisal-dev \
libncurses5-dev \
libnuma-dev \
libssl-dev \
libtool \
liburing-dev \
make \
meson \
nasm \
openssl \
patch \
pipx \
pkg-config \
python3 \
python3-pip \
python3-pyelftools \
python3-venv \
uuid-dev
#
# Clone, build and install libvfn
#
# Assumptions:
#
# - Dependencies for building libvfn are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/SamsungDS/libvfn.git toolbox/third-party/libvfn/repository
pushd toolbox/third-party/libvfn/repository
git checkout v5.1.0
meson setup builddir -Dlibnvme="disabled" -Ddocs="disabled" --buildtype=release --prefix=/usr
meson compile -C builddir
meson install -C builddir
popd
Note
A Docker-image is provided via ghcr.io, specifically
ghcr.io/xnvme/xnvme-deps-debian-bookworm:next. This Docker-image contains
all the software described above.
Then go ahead and configure, build and install using meson:
# configure xNVMe and build meson subprojects(SPDK)
meson setup builddir
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
Debian Oldoldstable (bullseye)#
Install the required toolchain and libraries by running the package installation
script provided with the xNVMe repository, as shown below. Ensure that you
have sufficient system privileges when doing so (e.g., run as root or with
sudo):
sudo ./xnvme/toolbox/pkgs/debian-bullseye.sh
Or, run the commands contained within the script manually:
# Unattended update, upgrade, and install
export DEBIAN_FRONTEND=noninteractive
export DEBIAN_PRIORITY=critical
apt-get -qy update
apt-get -qy \
-o "Dpkg::Options::=--force-confdef" \
-o "Dpkg::Options::=--force-confold" upgrade
apt-get -qy --no-install-recommends install apt-utils
apt-get -qy autoclean
apt-get -qy install \
autoconf \
bash \
build-essential \
clang-format \
findutils \
git \
libaio-dev \
libarchive-dev \
libcunit1-dev \
libisal-dev \
libncurses5-dev \
libnuma-dev \
libssl-dev \
libtool \
make \
nasm \
openssl \
patch \
pkg-config \
python3 \
python3-pip \
python3-pyelftools \
python3-venv \
uuid-dev
# Install packages via the Python package-manager (pip)
python3 -m pip install --upgrade pip
python3 -m pip install \
meson \
ninja \
pipx
# Clone, build and install liburing v2.2
#
# Assumptions:
#
# - Dependencies for building liburing are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/axboe/liburing.git toolbox/third-party/liburing/repository
pushd toolbox/third-party/liburing/repository
git checkout liburing-2.2
./configure
make
make install
popd
#
# Clone, build and install libvfn
#
# Assumptions:
#
# - Dependencies for building libvfn are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/SamsungDS/libvfn.git toolbox/third-party/libvfn/repository
pushd toolbox/third-party/libvfn/repository
git checkout v5.1.0
meson setup builddir -Dlibnvme="disabled" -Ddocs="disabled" --buildtype=release --prefix=/usr
meson compile -C builddir
meson install -C builddir
popd
Note
A Docker-image is provided via ghcr.io, specifically
ghcr.io/xnvme/xnvme-deps-debian-bullseye:next. This Docker-image contains
all the software described above.
Then go ahead and configure, build and install using meson:
# configure xNVMe and build meson subprojects(SPDK)
meson setup builddir
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
Debian Testing (forky)#
Install the required toolchain and libraries by running the package installation
script provided with the xNVMe repository, as shown below. Ensure that you
have sufficient system privileges when doing so (e.g., run as root or with
sudo):
sudo ./xnvme/toolbox/pkgs/debian-forky.sh
Or, run the commands contained within the script manually:
# Unattended update, upgrade, and install
export DEBIAN_FRONTEND=noninteractive
export DEBIAN_PRIORITY=critical
apt-get -qy update
apt-get -qy \
-o "Dpkg::Options::=--force-confdef" \
-o "Dpkg::Options::=--force-confold" upgrade
apt-get -qy --no-install-recommends install apt-utils
apt-get -qy autoclean
apt-get -qy install \
autoconf \
bash \
build-essential \
clang-format \
findutils \
git \
libaio-dev \
libarchive-dev \
libcunit1-dev \
libisal-dev \
libncurses5-dev \
libnuma-dev \
libssl-dev \
libtool \
liburing-dev \
make \
meson \
nasm \
openssl \
patch \
pipx \
pkg-config \
python3 \
python3-pip \
python3-pyelftools \
python3-venv \
uuid-dev
#
# Clone, build and install libvfn
#
# Assumptions:
#
# - Dependencies for building libvfn are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/SamsungDS/libvfn.git toolbox/third-party/libvfn/repository
pushd toolbox/third-party/libvfn/repository
git checkout v5.1.0
meson setup builddir -Dlibnvme="disabled" -Ddocs="disabled" --buildtype=release --prefix=/usr
meson compile -C builddir
meson install -C builddir
popd
Note
A Docker-image is provided via ghcr.io, specifically
ghcr.io/xnvme/xnvme-deps-debian-forky:next. This Docker-image contains
all the software described above.
Then go ahead and configure, build and install using meson:
# configure xNVMe and build meson subprojects(SPDK)
meson setup builddir
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
Fedora (43)#
Install the required toolchain and libraries by running the package installation
script provided with the xNVMe repository, as shown below. Ensure that you
have sufficient system privileges when doing so (e.g., run as root or with
sudo):
sudo ./xnvme/toolbox/pkgs/fedora-43.sh
Or, run the commands contained within the script manually:
# Install packages via the system package-manager (dnf)
dnf install -y \
CUnit-devel \
autoconf \
bash \
clang-tools-extra \
diffutils \
findutils \
g++ \
gcc \
git \
isa-l \
libaio-devel \
libarchive-devel \
libtool \
liburing \
liburing-devel \
libuuid-devel \
make \
meson \
nasm \
ncurses \
numactl-devel \
openssl-devel \
patch \
pipx \
pkgconfig \
procps \
python3-devel \
python3-pip \
python3-pyelftools \
zlib-devel
#
# Clone, build and install libvfn
#
# Assumptions:
#
# - Dependencies for building libvfn are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/SamsungDS/libvfn.git toolbox/third-party/libvfn/repository
pushd toolbox/third-party/libvfn/repository
git checkout v5.1.0
meson setup builddir -Dlibnvme="disabled" -Ddocs="disabled" --buildtype=release --prefix=/usr
meson compile -C builddir
meson install -C builddir
popd
Note
A Docker-image is provided via ghcr.io, specifically
ghcr.io/xnvme/xnvme-deps-fedora-43:next. This Docker-image contains
all the software described above.
Then go ahead and configure, build and install using meson:
# configure xNVMe and build meson subprojects(SPDK)
# --prefix=/usr to install directly into the system paths, avoiding the need
# to reconfigure the dynamic linker for /usr/local
meson setup builddir --prefix=/usr
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
Fedora (42)#
Install the required toolchain and libraries by running the package installation
script provided with the xNVMe repository, as shown below. Ensure that you
have sufficient system privileges when doing so (e.g., run as root or with
sudo):
sudo ./xnvme/toolbox/pkgs/fedora-42.sh
Or, run the commands contained within the script manually:
# Install packages via the system package-manager (dnf)
dnf install -y \
CUnit-devel \
autoconf \
bash \
clang-tools-extra \
diffutils \
findutils \
g++ \
gcc \
git \
isa-l \
libaio-devel \
libarchive-devel \
libtool \
liburing \
liburing-devel \
libuuid-devel \
make \
meson \
nasm \
ncurses \
numactl-devel \
openssl-devel \
patch \
pipx \
pkgconfig \
procps \
python3-devel \
python3-pip \
python3-pyelftools \
zlib-devel
#
# Clone, build and install libvfn
#
# Assumptions:
#
# - Dependencies for building libvfn are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/SamsungDS/libvfn.git toolbox/third-party/libvfn/repository
pushd toolbox/third-party/libvfn/repository
git checkout v5.1.0
meson setup builddir -Dlibnvme="disabled" -Ddocs="disabled" --buildtype=release --prefix=/usr
meson compile -C builddir
meson install -C builddir
popd
Note
A Docker-image is provided via ghcr.io, specifically
ghcr.io/xnvme/xnvme-deps-fedora-42:next. This Docker-image contains
all the software described above.
Then go ahead and configure, build and install using meson:
# configure xNVMe and build meson subprojects(SPDK)
# --prefix=/usr to install directly into the system paths, avoiding the need
# to reconfigure the dynamic linker for /usr/local
meson setup builddir --prefix=/usr
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
Ubuntu Latest (questing)#
Install the required toolchain and libraries by running the package installation
script provided with the xNVMe repository, as shown below. Ensure that you
have sufficient system privileges when doing so (e.g., run as root or with
sudo):
sudo ./xnvme/toolbox/pkgs/ubuntu-questing.sh
Or, run the commands contained within the script manually:
# Unattended update, upgrade, and install
export DEBIAN_FRONTEND=noninteractive
export DEBIAN_PRIORITY=critical
apt-get -qy update
apt-get -qy \
-o "Dpkg::Options::=--force-confdef" \
-o "Dpkg::Options::=--force-confold" upgrade
apt-get -qy --no-install-recommends install apt-utils
apt-get -qy autoclean
apt-get -qy install \
autoconf \
bash \
build-essential \
clang-format \
findutils \
git \
libaio-dev \
libarchive-dev \
libcunit1-dev \
libisal-dev \
libncurses5-dev \
libnuma-dev \
libssl-dev \
libtool \
liburing-dev \
make \
meson \
nasm \
openssl \
patch \
pipx \
pkg-config \
python3 \
python3-pip \
python3-pyelftools \
python3-venv \
uuid-dev
#
# Clone, build and install libvfn
#
# Assumptions:
#
# - Dependencies for building libvfn are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/SamsungDS/libvfn.git toolbox/third-party/libvfn/repository
pushd toolbox/third-party/libvfn/repository
git checkout v5.1.0
meson setup builddir -Dlibnvme="disabled" -Ddocs="disabled" --buildtype=release --prefix=/usr
meson compile -C builddir
meson install -C builddir
popd
Note
A Docker-image is provided via ghcr.io, specifically
ghcr.io/xnvme/xnvme-deps-ubuntu-questing:next. This Docker-image contains
all the software described above.
Then go ahead and configure, build and install using meson:
# configure xNVMe and build meson subprojects(SPDK)
meson setup builddir
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
Note
All tools and libraries are available via system package-manager.
Ubuntu LTS (noble)#
Install the required toolchain and libraries by running the package installation
script provided with the xNVMe repository, as shown below. Ensure that you
have sufficient system privileges when doing so (e.g., run as root or with
sudo):
sudo ./xnvme/toolbox/pkgs/ubuntu-noble.sh
Or, run the commands contained within the script manually:
# Unattended update, upgrade, and install
export DEBIAN_FRONTEND=noninteractive
export DEBIAN_PRIORITY=critical
apt-get -qy update
apt-get -qy \
-o "Dpkg::Options::=--force-confdef" \
-o "Dpkg::Options::=--force-confold" upgrade
apt-get -qy --no-install-recommends install apt-utils
apt-get -qy autoclean
apt-get -qy install \
autoconf \
bash \
build-essential \
clang-format \
findutils \
git \
libaio-dev \
libarchive-dev \
libcunit1-dev \
libisal-dev \
libncurses5-dev \
libnuma-dev \
libssl-dev \
libtool \
liburing-dev \
make \
meson \
nasm \
openssl \
patch \
pipx \
pkg-config \
python3 \
python3-pip \
python3-pyelftools \
python3-venv \
uuid-dev
#
# Clone, build and install libvfn
#
# Assumptions:
#
# - Dependencies for building libvfn are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/SamsungDS/libvfn.git toolbox/third-party/libvfn/repository
pushd toolbox/third-party/libvfn/repository
git checkout v5.1.0
meson setup builddir -Dlibnvme="disabled" -Ddocs="disabled" --buildtype=release --prefix=/usr
meson compile -C builddir
meson install -C builddir
popd
Note
A Docker-image is provided via ghcr.io, specifically
ghcr.io/xnvme/xnvme-deps-ubuntu-noble:next. This Docker-image contains
all the software described above.
Then go ahead and configure, build and install using meson:
# configure xNVMe and build meson subprojects(SPDK)
meson setup builddir
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
Note
All tools and libraries are available via system package-manager.
Ubuntu LTS (Old) (jammy)#
Install the required toolchain and libraries by running the package installation
script provided with the xNVMe repository, as shown below. Ensure that you
have sufficient system privileges when doing so (e.g., run as root or with
sudo):
sudo ./xnvme/toolbox/pkgs/ubuntu-jammy.sh
Or, run the commands contained within the script manually:
# Unattended update, upgrade, and install
export DEBIAN_FRONTEND=noninteractive
export DEBIAN_PRIORITY=critical
apt-get -qy update
apt-get -qy \
-o "Dpkg::Options::=--force-confdef" \
-o "Dpkg::Options::=--force-confold" upgrade
apt-get -qy --no-install-recommends install apt-utils
apt-get -qy autoclean
apt-get -qy install \
autoconf \
bash \
build-essential \
clang-format \
findutils \
git \
libaio-dev \
libarchive-dev \
libcunit1-dev \
libisal-dev \
libncurses5-dev \
libnuma-dev \
libssl-dev \
libtool \
make \
nasm \
openssl \
patch \
pipx \
pkg-config \
python3 \
python3-pip \
python3-pyelftools \
python3-venv \
uuid-dev
# Install packages via the Python package-manager (pip)
python3 -m pip install --upgrade pip
python3 -m pip install \
meson \
ninja
# Clone, build and install liburing v2.2
#
# Assumptions:
#
# - Dependencies for building liburing are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/axboe/liburing.git toolbox/third-party/liburing/repository
pushd toolbox/third-party/liburing/repository
git checkout liburing-2.2
./configure
make
make install
popd
#
# Clone, build and install libvfn
#
# Assumptions:
#
# - Dependencies for building libvfn are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/SamsungDS/libvfn.git toolbox/third-party/libvfn/repository
pushd toolbox/third-party/libvfn/repository
git checkout v5.1.0
meson setup builddir -Dlibnvme="disabled" -Ddocs="disabled" --buildtype=release --prefix=/usr
meson compile -C builddir
meson install -C builddir
popd
Note
A Docker-image is provided via ghcr.io, specifically
ghcr.io/xnvme/xnvme-deps-ubuntu-jammy:next. This Docker-image contains
all the software described above.
Then go ahead and configure, build and install using meson:
# configure xNVMe and build meson subprojects(SPDK)
meson setup builddir
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
Note
Installing liburing from source and meson + ninja via pip
Gentoo (latest)#
Install the required toolchain and libraries by running the package installation
script provided with the xNVMe repository, as shown below. Ensure that you
have sufficient system privileges when doing so (e.g., run as root or with
sudo):
sudo ./xnvme/toolbox/pkgs/gentoo-latest.sh
Or, run the commands contained within the script manually:
echo ""
echo "build requires linking against ncurses AND tinfo, run the following before compilation:"
echo "export LDFLAGS=\"-ltinfo -lncurses\""
emerge-webrsync
emerge \
app-arch/libarchive \
bash \
dev-build/meson \
dev-lang/nasm \
dev-libs/isa-l \
dev-libs/libaio \
dev-libs/openssl \
dev-python/pip \
dev-python/pyelftools \
dev-util/cunit \
dev-util/pkgconf \
dev-vcs/git \
findutils \
make \
sys-devel/patch \
sys-libs/liburing \
sys-libs/ncurses \
sys-process/numactl
#
# Clone, build and install libvfn
#
# Assumptions:
#
# - Dependencies for building libvfn are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/SamsungDS/libvfn.git toolbox/third-party/libvfn/repository
pushd toolbox/third-party/libvfn/repository
git checkout v5.1.0
meson setup builddir -Dlibnvme="disabled" -Ddocs="disabled" --buildtype=release --prefix=/usr
meson compile -C builddir
meson install -C builddir
popd
# Install packages via the Python package-manager (pip)
python3 -m pip install --break-system-packages \
pipx
Note
A Docker-image is provided via ghcr.io, specifically
ghcr.io/xnvme/xnvme-deps-gentoo-latest:next. This Docker-image contains
all the software described above.
Then go ahead and configure, build and install using meson:
export LDFLAGS="-ltinfo -lncurses"
# configure xNVMe and build meson subprojects(SPDK)
meson setup builddir --prefix=/usr
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
Note
In case you get error adding symbols: DSO missing from command line,
during compilation, then add -ltinfo -lnurces to LDFLAGS as it is
done in the commands above.
The build is configured to install with --prefix=/usr this is
intentional such the the pkg-config files end up in the default search
path on the system. If you do not want this, then remove --prefix=/usr
and adjust your $PKG_CONFIG_PATH accordingly.
openSUSE (tumbleweed-latest)#
Install the required toolchain and libraries by running the package installation
script provided with the xNVMe repository, as shown below. Ensure that you
have sufficient system privileges when doing so (e.g., run as root or with
sudo):
sudo ./xnvme/toolbox/pkgs/opensuse-tumbleweed-latest.sh
Or, run the commands contained within the script manually:
zypper --non-interactive refresh
# Install packages via the system package-manager (zypper)
zypper --non-interactive install -y --allow-downgrade \
autoconf \
awk \
bash \
clang-tools \
cunit-devel \
findutils \
gcc \
gcc-c++ \
git \
gzip \
libaio-devel \
libarchive-devel \
libnuma-devel \
libopenssl-devel \
libtool \
liburing-devel \
libuuid-devel \
make \
meson \
nasm \
ncurses \
patch \
pkg-config \
python3 \
python3-devel \
python3-pip \
python3-pipx \
python3-pyelftools \
python3-setuptools \
tar
#
# Clone, build and install libvfn
#
# Assumptions:
#
# - Dependencies for building libvfn are met (system packages etc.)
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/SamsungDS/libvfn.git toolbox/third-party/libvfn/repository
pushd toolbox/third-party/libvfn/repository
git checkout v5.1.0
meson setup builddir -Dlibnvme="disabled" -Ddocs="disabled" --buildtype=release --prefix=/usr
meson compile -C builddir
meson install -C builddir
popd
#
# Clone, build and install libisal
#
# Assumptions:
#
# - Commands are executed with sufficient privileges (sudo/root)
#
git clone https://github.com/intel/isa-l.git toolbox/third-party/libisal/repository
pushd toolbox/third-party/libisal/repository
git checkout v2.30.0
./autogen.sh
./configure --prefix=/usr --libdir=/usr/lib
make
make install
popd
Note
A Docker-image is provided via ghcr.io, specifically
ghcr.io/xnvme/xnvme-deps-opensuse-tumbleweed-latest:next. This Docker-image contains
all the software described above.
Then go ahead and configure, build and install using meson:
# configure xNVMe and build meson subprojects(SPDK)
meson setup builddir
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
Note
All tools and libraries are available via system package-manager.