Introduction to the guide

Throughout the guide, we follow the following rules:

TODO: Add a note on distros vs package managers (possible add a list of distros to the package managers) that when changing distros, the package managers are changed too, but when changing the package manager, the distro is left untouched.

You can help by keeping this document updated and adding info about other distributions. You can simply edit the document, but you are required to sign up and log in.

Guide configuration

Below you can configure the guide for the specified distribution and/or package manager. You can also specify a Remmina version, as the guide may differ from version to version. By default, the guide contains a general guide for all tested operating systems for the latest stable Remmina version, while the differences are output using tabs.

Remmina version Package manager Distribution Distribution version Guide type Installation root

Build instructions

Remove previous installation of Remmina nad FreeRDP

It is important that no other Remmina or FreeRDP version is installed, therefore we need to remove it prior to installation.

Remmina/FreeRDP installed via package manager

Tab

apt

			sudo apt purge "?name(^remmina.*)" "?name(^libfreerdp.*)" \
			  "?name(^freerdp.*)" "?name(^libwinpr.*)"
		

dnf

			sudo dnf -y remove freerdp\* remmina\*
		

pacman

			sudo pacman -Rs remmina freerdp
		

yum

			sudo yum -y remove freerdp\* remmina\*
		

Remmina/FreeRDP installed from sources

Tab

FreeRDP

This works only when FreeRDP is installed using sudo make install. When the build/ folder is removed or when you only run make, install_manifest.txt does not exist.

			cd "$HOME/freerdp/build" && sudo rm $(cat install_manifest.txt)
		

Remmina

			cd "$HOME/remmina/build" && sudo make uninstall
		

Dependencies installation

The following dependencies are needed to build a full Remmina distribution, you may need to tailor it as per your needs.

The distributions below are sorted alphabetically by there names and then by their versions (latest first).

We need to compile FreeRDP from source, therefore we need to install also the dependencies of FreeRDP.

TODO: We might want to divide the dependencies by features (like RDP, SSH, VNC, etc).

All dependencies for Remmina and FreeRDP

Tab

Arch Linux-based distributions
					sudo pacman -S base-devel git avahi gtk3 libssh libvncserver gnome-keyring kwallet \
					  libgnome-keyring libpulse libsodium vte3 cmake libappindicator-gtk3 \
					  docbook-utils docbook-xsl pcre pcre2 spice-gtk spice-protocol gtk-vnc
				
Debian 10
					sudo apt install build-essential git-core gtk-vnc libssh-dev cmake libx11-dev \
					  libxext-dev libxinerama-dev  libxcursor-dev libxdamage-dev \
					  libxv-dev libxkbfile-dev libasound2-dev libcups2-dev libxml2 \
					  libxml2-dev  libxrandr-dev libgstreamer1.0-dev \
					  libgstreamer-plugins-base1.0-dev  libxi-dev libavutil-dev \
					  libjson-glib-dev libavcodec-dev libxtst-dev libgtk-3-dev \
					  libgcrypt20-dev  libpulse-dev  libvte-2.91-dev libxkbfile-dev \
					  libtelepathy-glib-dev libjpeg-dev  libgnutls28-dev \
					  libsecret-1-dev libavahi-ui-gtk3-dev libvncserver-dev  \
					  libappindicator3-dev intltool libsecret-1-dev \
					  libwebkit2gtk-4.0-dev libsystemd-dev  libsodium-dev \
					  libkf5wallet-dev libusb-1.0-0-dev libpcre2-dev
				
Debian 9
					sudo apt purge libssl-dev
					
					sudo apt install build-essential git-core gtk-vnc libssh-dev cmake libx11-dev \
					  libxext-dev libxinerama-dev  libxcursor-dev libxdamage-dev \
					  libxv-dev libxkbfile-dev libasound2-dev libcups2-dev libxml2 \
					  libxml2-dev  libxrandr-dev libgstreamer1.0-dev \
					  libgstreamer-plugins-base1.0-dev  libxi-dev libavutil-dev \
					  libjson-glib-dev libavcodec-dev libxtst-dev libgtk-3-dev \
					  libgcrypt11-dev  libpulse-dev  libvte-2.91-dev libxkbfile-dev \
					  libtelepathy-glib-dev libjpeg-dev  libgnutls28-dev \
					  libgnome-keyring-dev libavahi-ui-gtk3-dev libvncserver-dev  \
					  libappindicator3-dev intltool libsecret-1-dev \
					  libwebkit2gtk-4.0-dev libsystemd-dev  libsodium-dev libpcre2-dev
				
FreeBSD 11
					sudo pkg install cmake gccmakedep git pkgconf libX11 libXext libXinerama libXcursor \
					  libXdamage libXv libxkbfile alsa-lib cups ffmpeg pulseaudio libssh \
					  libXi libXtst libXrandr xmlto gstreamer1 gstreamer1-plugins ffmpeg \
					  libx264 qt5-qmake qt5-buildtools pcre2 gtk-vnc
				
Ubuntu 20.04+
					sudo apt install build-essential git-core cmake libssl-dev libx11-dev \
					  libxext-dev libxinerama-dev  libxcursor-dev libxdamage-dev \
					  libxv-dev libxkbfile-dev libasound2-dev libcups2-dev libxml2 \
					  libxml2-dev  libxrandr-dev libgstreamer1.0-dev \
					  libgstreamer-plugins-base1.0-dev  libxi-dev libavutil-dev  \
					  libavcodec-dev libxtst-dev libgtk-3-dev libgcrypt20-dev \
					  libssh-dev libpulse-dev  libvte-2.91-dev libxkbfile-dev \
					  libtelepathy-glib-dev libjpeg-dev  libgnutls28-dev \
					  libavahi-ui-gtk3-dev libvncserver-dev  libappindicator3-dev \
					  intltool libsecret-1-dev libwebkit2gtk-4.0-dev libsystemd-dev  \
					  libsoup2.4-dev libjson-glib-dev libavresample-dev \
					  libsodium-dev  libusb-1.0-0-dev libpcre2-dev
				
Ubuntu 18.04
					sudo apt install build-essential git-core cmake libssl-dev libx11-dev \
					  libxext-dev libxinerama-dev libxcursor-dev libxdamage-dev \
					  libxv-dev libxkbfile-dev libasound2-dev libcups2-dev libxml2 \
					  libxml2-dev libxrandr-dev libgstreamer1.0-dev \
					  libgstreamer-plugins-base1.0-dev libxi-dev libavutil-dev \
					  libavcodec-dev libxtst-dev libgtk-3-dev libgcrypt11-dev \
					  libssh-dev libpulse-dev libvte-2.91-dev libxkbfile-dev \
					  libtelepathy-glib-dev libjpeg-dev libgnutls28-dev \
					  libgnome-keyring-dev libavahi-ui-gtk3-dev libvncserver-dev \
					  libappindicator3-dev intltool libsecret-1-dev \
					  libwebkit2gtk-4.0-dev libsystemd-dev libsoup2.4-dev \
					  libjson-glib-dev libavresample-dev libsodium-dev \
					  libusb-1.0-0-dev libpcre2-dev
				
Red Hat-based distributions

We use yum for all commands as it’s still an alias on those distros which migrated to dnf.

We should create separate commands for Fedora, CentOS / Red Hat 7 and CentOS / Red Hat 8.

Add repositories

				## Get some info of the currently installed distribution
				## Note: This is used to determine what repositories need to be be installed
				## and to create the relevant URLs
				distro_name="$(grep -Po '^ID="*\K[^"]*' /etc/os-release)"
				distro_version="$(rpm -E %$distro_name)"
				
				if [ "$distro_name" = 'fedora' ]; then
				  distro_name_short='fedora'
				else
				  distro_name_short='el'
				  epel_repo='epel-release'
				fi
				
				## epel (on CentOS only): required for `openjpeg2-devel`, `openssl-devel`
				## rpmfusion-free-updates (on both CentOS and Fedora): required for `ffmpeg-devel`
				## PowerTools (on CentOS 8+ only)
				## okay (on CentOS 8+); required for `avahi-ui-devel`
				sudo yum -y install $epel_repo \
				  https://download1.rpmfusion.org/free/${distro_name_short}/rpmfusion-free-release-${distro_version}.noarch.rpm
				
				if [ "$distro_name" = 'centos' ] && [ "$distro_version" = 8 ]; then
				  sudo dnf config-manager --enable PowerTools
				  sudo rpm -ivh http://repo.okay.com.mx/${distro_name}/${distro_version}/x86_64/release/okay-release-1-3.el${distro_version}.noarch.rpm
				
				  # Disable okay repo for potential package conflicts
				  sudo dnf config-manager --disable okay
				fi
			

Update yum cache and packages

				sudo yum -y upgrade
			

Install dependencies

				sudo yum -y install alsa-lib-devel atk-devel avahi-ui-gtk3 cairo-devel cmake3 \
				  cups-devel docbook-style-xsl ffmpeg-devel gcc gcc-c++ git \
				  glib2-devel gnutls-devel gstreamer1-devel \
				  gstreamer1-plugins-base-devel gtk3-devel harfbuzz-devel \
				  json-glib-devel libappindicator-gtk3 \
				  libappindicator-gtk3-devel libgcrypt-devel \
				  libsecret-devel libSM-devel libsodium libsodium-devel \
				  libsoup-devel libssh-devel libusb-devel \
				  libvncserver-devel libX11-devel libXcursor-devel \
				  libXdamage-devel libXext-devel libXi-devel \
				  libXinerama-devel libxkbfile-devel libXrandr-devel \
				  libxslt libxslt-devel libXtst-devel libXv-devel make \
				  ninja-build openjpeg2-devel openssl-devel pango-devel \
				  pulseaudio-libs-devel vte291 vte291-devel \
				  webkitgtk4-devel xmlto xorg-x11-server-utils pcre2 pcre2-devel
			

FreeRDP

TODO

Clone Remmina repository

Additional information