Dependencies
Jami is a large and complex piece of software, and depends on several external free software libraries. Here we outline these dependencies and how to install them with a few popular package systems.
jami-daemon
Building the Jami daemon currently requires the following tools and libraries:
GNU Autotools (autoconf, autoconf-archive, autopoint, and automake)
GCC (GNU Compiler Collection) C++ compiler (g++)
GNU Make
GNU gettext
GNU Libtool
GnuTLS
argon2
asio
dbus
dbus-c++
libupnp
libssl
libpulse
libasound2
libexpat
pcre3
yaml-cpp
libxext
libxfixes
speex
speexdsp
uuid
FFmpeg’s libavcodec, libavdevice, libswscale, libavutil
opus
udev
fmt
gsm
pjproject (Jami’s custom fork needed)
jsoncpp
libarchive
libnatpmp
libva
libcrypto++
libvdpau
libsecp256k1
libgit2
http-parser
nasm
yasm
nettle
opendht
restinio
webrtc-audio-processing
zlib
On dpkg/deb-based GNU/Linux distributions such as Debian, Trisquel,
and Ubuntu you can install these using packages using apt-get
or
apt
as follows:
sudo apt-get install autoconf autoconf-archive autopoint automake \
cmake make dbus doxygen graphviz g++ gettext libasound2-dev \
libavcodec-dev libavdevice-dev libavformat-dev libboost-dev \
libcppunit-dev libdbus-1-dev libdbus-c++-dev libexpat1-dev \
libgnutls28-dev libgtk-3-dev libjack-dev libopus-dev \
libpcre3-dev libpulse-dev libssl-dev libspeex-dev \
libspeexdsp-dev libswscale-dev libtool libudev-dev \
libyaml-cpp-dev sip-tester swig uuid-dev yasm libjsoncpp-dev \
libva-dev libvdpau-dev libmsgpack-dev pandoc nasm dpkg-dev
On rpm-based distributions like Fedora and openSUSE the dependencies
can be installed using dnf
, yum
, or zypper
like so:
sudo dnf install autoconf autoconf-archive automake cmake make \
speexdsp-devel pulseaudio-libs-devel libtool dbus-devel \
expat-devel pcre-devel doxygen graphviz yaml-cpp-devel \
boost-devel dbus-c++-devel dbus-devel libXext-devel \
libXfixes-devel yasm speex-devel chrpath check uuid-c++-devel \
gettext-devel gcc-c++ which alsa-lib-devel systemd-devel \
libuuid-devel uuid-devel gnutls-devel nettle-devel opus-devel \
speexdsp-devel yaml-cpp-devel swig jsoncpp-devel patch \
libva-devel openssl-devel libvdpau-devel msgpack-devel \
sqlite-devel openssl-static pandoc nasm bzip2
We will do our best to keep the above list up-to-date, but in case you
face any issues with missing dependencies you can always check the
package definitions for Jami packages distributed via dl.jami.net, as
well as the build.py
script, available in the jami-project
repository.
jami-client-qt
Note
For complete instructions on how to build the Qt client, please refer to te the INSTALL.md file.
Building the Jami client currently requires the following tools and libraries:
jami-daemon
libnm
libnotify
libqrencode
libayatana-appindicator or libappindicator (optional, for notifications)
qt6-base
qt6-declarative
qt6-graphicaleffects
qt6-multimedia
qt6-networkauth
qt6-svg
qt6-tools
qt6-webengine (optional, currently for link previews and some media file previews)
The libqt-jami and jami-libqt packages from dl.jami.net provide the
needed Qt 6 dependencies on supported dpkg/deb-based and rpm-based
GNU/Linux distributions respectively. This is especially useful for
building Jami on slightly older versions of these distributions where
Qt 6 was not yet packaged in the distribution’s official repositories.
To install this package providing the Qt 6 dependencies on a supported
distribution, first add the respective dl.jami.net repository by
following the instructions on the Download Jami for GNU/Linux page of the Jami website,
then install the package using a command like sudo apt-get install
libqt-jami
(for dpkg/deb-based GNU/Linux distributions) and sudo
dnf install jami-libqt
(for rpm-based GNU/Linux distributions).
On dpkg/deb-based GNU/Linux distributions such as Debian, Trisquel,
and Ubuntu you can install these using packages using apt-get
or
apt
as follows:
sudo apt-get install qt6-base-dev qt6-tools-dev \
qt6-tools-dev-tools qt6-l10n-tools libqt6sql6-sqlite \
libqt6core5compat6-dev libqt6networkauth6-dev \
qt6-multimedia-dev libqt6svg6-dev qt6-declarative-dev \
qml6-module-qt-labs-qmlmodels \
qml6-module-qt5compat-graphicaleffects \
qml6-module-qtqml-workerscript qml6-module-qtmultimedia \
qml6-module-qtquick qml6-module-qtquick-controls \
qml6-module-qtquick-dialogs qml6-module-qtquick-layouts \
qml6-module-qtquick-shapes qml6-module-qtquick-window \
qml6-module-qtquick-templates qml6-module-qt-labs-platform \
libqrencode-dev libnm-dev libnotify-dev
And for the optional Qt WebEngine dependencies:
sudo apt-get install libqt6webengine6-data \
libqt6webenginecore6-bin qt6-webengine-dev \
qt6-webengine-dev-tools qml6-module-qtwebengine \
qml6-module-qtwebchannel
On rpm-based distributions like Fedora and openSUSE the dependencies
can be installed using dnf
or zypper
like so:
sudo dnf install qt6-qtbase-devel qt6-qtsvg-devel \
qt6-qtmultimedia-devel qt6-qtdeclarative-devel qrencode-devel \
NetworkManager-libnm-devel
And for the optional Qt WebEngine dependencies:
sudo dnf install qt6-qtwebengine-devel
Note
The easiest approach would be to install the libqt-jami or jami-libqt package on your supported dpkg/deb-based and rpm-based GNU/Linux distribution respectively, to get all of the needed Qt 6 dependencies of Jami. And to be as similar as possible at what we are testing and building.