Dependencies

Jami is a large and complex piece of software, and depends on several external free software libraries. The dependencies and how to install them on some systems are outlined below.

jami-daemon

Building the Jami daemon requires the following tools and libraries:

On dpkg/Debian-based GNU/Linux distributions (such as Debian, Trisquel, Ubuntu, and Linux Mint), the packages can be installed with 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 GNU/Linux distributions (such as Fedora and openSUSE), the packages can be installed with dnf, yum, or zypper as follows:

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

If there are any issues with missing dependencies, please check:

  • The Jami package definitions, distributed on dl.jami.net; and

  • The build.py script, on the jami-project repository.

jami-client-qt

Note: For complete instructions on how to build the Qt Desktop client, please refer to the INSTALL.md file.

Building the Jami client 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 required Qt 6 dependencies on supported dpkg/Debian-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 is not yet packaged in the distribution’s official repositories. To install this package providing the Qt 6 dependencies on a supported distribution:

  1. Add the respective dl.jami.net repository by following the instructions on the Download Jami for GNU/Linux webpage; and

  2. Install the package using the Terminal command sudo apt-get install libqt-jami (for dpkg/Debian-based GNU/Linux distributions) or sudo dnf install jami-libqt (for RPM-based GNU/Linux distributions).

On dpkg/Debian-based GNU/Linux distributions (such as Debian, Trisquel, Ubuntu, and Linux Mint), the packages can be installed with 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

To install the optional Qt WebEngine packages:

sudo apt-get install libqt6webengine6-data \
  libqt6webenginecore6-bin qt6-webengine-dev \
  qt6-webengine-dev-tools qml6-module-qtwebengine \
  qml6-module-qtwebchannel

On RPM-based GNU/Linux distributions (such as Fedora and openSUSE), the packages can be installed with dnf, yum, or zypper as follows:

sudo dnf install qt6-qtbase-devel qt6-qtsvg-devel \
  qt6-qtmultimedia-devel qt6-qtdeclarative-devel qrencode-devel \
  NetworkManager-libnm-devel

To install the optional Qt WebEngine packages:

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/Debian-based or RPM-based GNU/Linux distribution, respectively. This would ensure that:

  • All the required Qt 6 dependencies are fetched; and

  • The application is as similar as possible at what is being built and tested.