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
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
Tab
FreeRDP
This works only when FreeRDP is installed using
sudo make install
. When thebuild/
folder is removed or when you only runmake
,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 todnf
.
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