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. .. TODO: distinguish between build time and run time dependencies ? .. TODO: give separate instructions for dnf and zypper ? 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:: Given the newness of Qt 6, it may not be fully (or at all) packaged in the official repositories of your GNU/Linux distribution of choice yet. In that case, 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.