If you want to compile the tools yourself then you must first decide if you want to use a 'proper' release version or the current development version. As both Matroska and MKVToolNix are under heavy development there might be features available in the Git source code repository that are not available in the releases. On the other hand the Git source code repository version might not even compile.
Note that I sign my released source code tarballs with the same GPG key I use for email and my Debian/Ubuntu APT repositories: sub-key ID 0x74AF00AD F2E32C85 of key ID 0x0F92290A 445B9007. Commits in Git are not signed.
You can download older releases from the sources directory.
In order to compile MKVToolNix you need a couple of libraries and programs. Most of them should be available pre-compiled for your distribution. You can find the up-to-date list in the README.md file.
Building binary packages for Debian and Ubuntu either from my Git
sources or from a release tarball is pretty easy. The following
steps assume that you're not
root but may
Now install a couple of packages needed for building MKVToolNix:
sudo apt install build-essential debhelper ruby \ libbz2-dev liblzo2-dev zlib1g-dev libmagic-dev \ libflac-dev libogg-dev libvorbis-dev libboost-dev \ qt5-default qtbase5-dev qtbase5-dev-tools qtmultimedia5-dev \ nlohmann-json-dev libgtest-dev libfmt-dev libcmark-dev \ libdvdread-dev libpcre2-dev libpcre2-8-0 pkg-config po4a docbook-xsl xsltproc
Attention: Ubuntu 19.10 "Eoan" and newer: note that you have to install
nlohmann-json3-dev instead of
Attention: Debian 11 "Buster": note that you have to install the
clang package for the clang compiler which is used due to a
bug in the gcc version shipped with Debian 11.
Next download either a release tarball or get a development snapshot from my git repository, rename one of its sub-directories, call a helper script and lastly build the packages themselves. For a release tarball, e.g. v60.0.0, you have to do the following:
curl -O https://mkvtoolnix.download/sources/mkvtoolnix-60.0.0.tar.xz tar xJf mkvtoolnix-60.0.0.tar.xz cd mkvtoolnix-60.0.0 cp -R packaging/debian debian dpkg-buildpackage -b -uc -us
For a development snapshot from my git repository the steps are the following:
sudo apt-get install autoconf automake git git clone https://gitlab.com/mbunkus/mkvtoolnix.git mkvtoolnix-60.0.0 cd mkvtoolnix-60.0.0 git submodule init git submodule update cp -R packaging/debian debian ./autogen.sh cd .. tar -cf - --exclude mkvtoolnix-60.0.0/.git mkvtoolnix-60.0.0 | xz > mkvtoolnix_60.0.0.orig.tar.xz cd mkvtoolnix-60.0.0 dpkg-buildpackage -b -rfakeroot -uc -us
Afterwards the two new packages
mkvtoolnix-gui will have been built in the same
directory the source code directory (