--- Type: article Title: Installing dependencies on CentOS Project: HandBrake Project_URL: https://handbrake.fr/ Project_Version: Latest Language: English Language_Code: en Authors: [ Bradley Sepos (BradleyS) ] Copyright: 2020 HandBrake Team License: Creative Commons Attribution-ShareAlike 4.0 International License_Abbr: CC BY-SA 4.0 License_URL: https://handbrake.fr/docs/license.html --- Installing dependencies on CentOS ================================= ## CentOS 8 The following instructions are for [CentOS](https://centos.org) 8.1. Basic requirements to run commands: - curl - sudo (for normal user accounts) Dependencies: - Development Tools - cmake - fribidi-devel - git - jansson-devel - numactl-devel - python3 - xz-devel Additional dependencies not available in the base repository: - lame-devel [PowerTools] - libass-devel [EPEL] - libogg-devel [PowerTools] - libsamplerate-devel [PowerTools] - libtheora-devel [PowerTools] - libvorbis-devel [PowerTools] - libvpx-devel [PowerTools] - meson [PowerTools] - nasm [PowerTools] - ninja-build [PowerTools] - opus-devel [PowerTools] - speex-devel [PowerTools] - x264-devel [RPM Fusion] Intel Quick Sync Video dependencies (optional): - libva-devel - libdrm-devel Graphical interface dependencies: - dbus-glib-devel - gstreamer1-devel - gstreamer1-plugins-base-devel - intltool - libnotify-devel - webkit2gtk3-devel Additional graphical interface dependencies not available in the base repository: - gstreamer1-libav [RPM Fusion] - libgudev1-devel [PowerTools] Install dependencies. sudo dnf update sudo dnf groupinstall "Development Tools" sudo dnf install cmake fribidi-devel git jansson-devel numactl-devel python3 xz-devel Enable the CentOS PowerTools repository and install related additional dependencies. sudo dnf config-manager --set-enabled PowerTools sudo dnf install lame-devel libogg-devel libsamplerate-devel libtheora-devel libvorbis-devel libvpx-devel meson nasm ninja-build opus-devel speex-devel Install the [EPEL](https://fedoraproject.org/wiki/EPEL) repository and related additional dependencies. sudo dnf install epel-release sudo dnf install libass-devel Install the [RPM Fusion](http://rpmfusion.org) Free repository and related additional dependencies. sudo dnf localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm sudo dnf install x264-devel To build with Intel Quick Sync Video support, install the QSV dependencies. sudo dnf install libva-devel libdrm-devel To build the GTK [GUI](abbr:Graphical User Interface), install the graphical interface dependencies. sudo dnf install dbus-glib-devel gstreamer1-devel gstreamer1-libav gstreamer1-plugins-base-devel intltool libgudev1-devel libnotify-devel webkit2gtk3-devel CentOS is now prepared to build HandBrake. See [Building HandBrake for Linux](build-linux.html) for further instructions. ## CentOS 7 The following instructions are for [CentOS](https://centos.org) 7.7. Basic requirements to run commands: - curl - sudo (for normal user accounts) Dependencies: - Development Tools - fribidi-devel - git - jansson-devel - libogg-devel - libsamplerate-devel - libtheora-devel - libvorbis-devel - numactl-devel - python3 - speex-devel - xz-devel Additional dependencies not available in the base repository: - devtoolset-7 [SCL] (optional/recommended for HandBrake [CLI](abbr:Command Line Interface)) - lame-devel [RPM Fusion] - libass-devel [EPEL] - libvpx - meson [EPEL] - nasm [NASM] - ninja-build [EPEL] - opus-devel [EPEL EL6] - x264-devel [RPM Fusion] Intel Quick Sync Video dependencies (optional): - libva-devel - libdrm-devel Graphical interface dependencies: - dbus-glib-devel - gstreamer1-devel - gstreamer1-plugins-base-devel - intltool - libgudev1-devel - libnotify-devel - webkitgtk4-devel Additional graphical interface dependencies not available in the base repository: - devtoolset-7 [SCL] - gstreamer1-libav [RPM Fusion] Install dependencies. sudo yum update sudo yum groupinstall "Development Tools" sudo yum install fribidi-devel git jansson-devel libogg-devel libsamplerate-devel libtheora-devel libvorbis-devel numactl-devel python3 speex-devel xz-devel Install the [EPEL](https://fedoraproject.org/wiki/EPEL) repository and related additional dependencies. sudo yum install epel-release sudo yum install libass-devel meson ninja-build The `opus-devel` package provided by CentOS 7 is too old. Install a newer version provided by EPEL for CentOS 6[^opus-el6]. sudo yum localinstall $(curl -L -s 'https://dl.fedoraproject.org/pub/epel/6/x86_64/Packages/o/' | grep -Eo 'opus-[^">]+\.x86_64\.rpm' | sort -u | awk '{ print "https://dl.fedoraproject.org/pub/epel/6/x86_64/Packages/o/"$0 }') The `nasm` package provided by CentOS 7 is too old. Install a newer version provided by the NASM project[^nasm-repo]. sudo curl -L 'https://nasm.us/nasm.repo' -o /etc/yum.repos.d/nasm.repo sudo yum install nasm The `libvpx-devel` package provided by CentOS 7 is too old. Build and install a newer version from source[^libvpx-source]. # remove old package if installed sudo yum remove libvpx-devel # libvpx curl -L https://github.com/webmproject/libvpx/archive/v1.8.1.tar.gz -o libvpx-1.8.1.tar.gz tar -xf libvpx-1.8.1.tar.gz cd libvpx-1.8.1 ./configure --enable-shared --enable-static --as=nasm --enable-pic --enable-runtime-cpu-detect --enable-vp8 --enable-vp9 make -j$(nproc) sudo make install .. # make shared libraries findable export CFLAGS="${CFLAGS:-} -I/usr/local/include" export LDFLAGS="${LDFLAGS:-} -L/usr/local/lib" echo 'export CFLAGS="${CFLAGS:-} -I/usr/local/include"' >> "${HOME}/.bashrc" echo 'export LDFLAGS="${LDFLAGS:-} -L/usr/local/lib"' >> "${HOME}/.bashrc" if ! grep '\/usr\/local\/lib' /etc/ld.so.conf >/dev/null 2>&1; then echo '/usr/local/lib' | sudo tee --append /etc/ld.so.conf sudo ldconfig fi The `lame-devel` and `x264-devel` packages are now provided by the RPM Fusion repository. If you previously installed the [ZMREPO](https://zmrepo.zoneminder.com) repository for these packages, remove them and the repository before continuing. # Only necessary if previously installed ZMREPO sudo yum repo-pkgs zmrepo remove sudo yum remove zmrepo Install the [RPM Fusion](http://rpmfusion.org) Free repository and related additional dependencies. sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm sudo yum install lame-devel x264-devel To build with Intel Quick Sync Video support, install the QSV dependencies. sudo yum install libva-devel libdrm-devel To build the GTK [GUI](abbr:Graphical User Interface), install the graphical interface dependencies. sudo yum install dbus-glib-devel gstreamer1-devel gstreamer1-libav gstreamer1-plugins-base-devel intltool libgudev1-devel libnotify-devel webkitgtk4-devel The GNU Compiler Collection and related packages provided by CentOS 7 are old. Install and enable a newer version provided by Software Collections (SCL)[^gcc-scl]. This is recommended for building the HandBrake [CLI](abbr:Command Line Interface) and required for building the GTK [GUI](abbr:Graphical User Interface). sudo yum install centos-release-scl sudo yum install devtoolset-7 sudo scl enable devtoolset-7 bash # launches a bash session with the appropriate tools enabled # make shared libraries findable by root export CFLAGS="${CFLAGS:-} -I/usr/local/include" export LDFLAGS="${LDFLAGS:-} -L/usr/local/lib" echo 'export CFLAGS="${CFLAGS:-} -I/usr/local/include"' >> "${HOME}/.bashrc" echo 'export LDFLAGS="${LDFLAGS:-} -L/usr/local/lib"' >> "${HOME}/.bashrc" CentOS is now prepared to build HandBrake. See [Building HandBrake for Linux](build-linux.html) for further instructions. [^opus-el6]: Installing newer packages than those available in the base repository may lead to incompatibility with other software expecting specific package versions. [^nasm-repo]: Installing newer packages than those available in the base repository may lead to incompatibility with other software expecting specific package versions. [^libvpx-source]: Installing newer packages than those available in the base repository may lead to incompatibility with other software expecting specific package versions. [^gcc-scl]: SCL packages are isolated from base repository versions of similar packages. You can enable these packages using the `scl` command line tool. When you are finished using these packages, simply log out of the active shell to resume using packages provided by the base repository.