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.0.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 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
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.0.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
# 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 (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:
# This repo has CUnit-devel + meson
dnf install -y 'dnf-command(config-manager)'
dnf config-manager --set-enabled ol9_codeready_builder
# 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 \
libuuid-devel \
make \
meson \
nasm \
ncurses \
numactl-devel \
openssl-devel \
patch \
pkgconfig \
procps \
python3-devel \
python3-pip \
python3-pyelftools \
unzip \
wget \
zlib-devel
# Install packages via the Python package-manager (pip)
python3 -m pip install --upgrade pip
python3 -m pip install \
pipx
#
# 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 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 --libdir=/usr/lib64 --libdevdir=/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.0.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)
meson setup builddir
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
Rocky Linux (9.2)#
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.2.sh
Or, run the commands contained within the script manually:
# This repo has CUnit-devel + meson
dnf install -y 'dnf-command(config-manager)'
dnf config-manager --set-enabled crb
# 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 \
libuuid-devel \
make \
meson \
nasm \
ncurses \
numactl-devel \
openssl-devel \
patch \
pkgconfig \
procps \
python3-devel \
python3-pip \
python3-pyelftools \
unzip \
wget \
zlib-devel
# Install packages via the Python package-manager (pip)
python3 -m pip install --upgrade pip
python3 -m pip install \
pipx
#
# 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 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 --libdir=/usr/lib64 --libdevdir=/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.0.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.2: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
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:
# This repos has CUnit-devel
dnf install -y 'dnf-command(config-manager)'
dnf config-manager --set-enabled crb
# 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 \
libuuid-devel \
make \
nasm \
ncurses \
numactl-devel \
openssl-devel \
patch \
pkgconfig \
procps \
python3-devel \
python3-pip \
unzip \
wget \
zlib-devel
# Install packages via the Python package-manager (pip)
python3 -m pip install --upgrade pip # Otherwise too old to understand new Manylinux formats
python3 -m pip install \
meson \
ninja \
pipx \
pyelftools
#
# 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 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 --libdir=/usr/lib64 --libdevdir=/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.0.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)
meson setup builddir
# build xNVMe
meson compile -C builddir
# install xNVMe
meson install -C builddir
# uninstall xNVMe
# cd builddir && meson --internal uninstall
Debian Testing (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.0.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 Stable (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.0.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 Oldstable (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.0.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
Fedora (41)#
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-41.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.0.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-41: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 (40)#
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-40.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.0.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-40: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 (39)#
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-39.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.0.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-39: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
Ubuntu Latest (lunar)#
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-lunar.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.0.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-lunar: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 (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.0.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
Ubuntu LTS (focal)#
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-focal.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.0.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-focal: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 \
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.0.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
:
# 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
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.0.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.