Welcome to mirror list, hosted at ThFree Co, Russian Federation.

compilation-guide.html - gitlab.com/Remmina/wiki.remmina.org.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 608a7bb2e298526c03b06fd8afb13aad8686542d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
<!--
title: Compilation guide
description: A guide to compile Remmina from source on different operating systems
published: true
date: 2021-08-31T09:31:19.445Z
tags: 
editor: code
dateCreated: 2021-07-18T10:35:58.314Z
-->

<h2>Introduction to the guide</h2>

<p>Throughout the guide, we follow the following rules:</p>
<ul>
	<li>all commands are tested in BASH;</li>
	<li>FreeRDP repository folder is located in <code>$HOME/freerdp</code>;</li>
	<li>Remmina repository folder is located in <code>$HOME/remmina</code>.</li>
	<li>when building FreeRDP or Remmina, we always create a <code>build</code> subfolder where we actually build the program.</li>
</ul>

<blockquote class="is-warning"><p>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.</p></blockquote>

<p>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.</p>

<h2>Guide configuration</h2>

<p>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.</p>

<table>
	<thead>
		<tr style='text-align: left;'>
			<th>Remmina version</th>
			<th>Package manager</th>
			<th>Distribution</th>
			<th>Distribution version</th>
			<th>Guide type</th>
			<th>Installation root</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>
				<select name='remminaVersion' onchange='main(this)'>
					<option value='1.0' style='color: green;'>1.0</option>
					<option value='1.1'>1.1</option>
					<option value='1.2'>1.2</option>
					<option value='1.3'>1.3</option>
				</select>
			</td>
			<td>
				<select name='packageManager' onchange='main(this)'>
					<option value='dnf'>DNF</option>
					<option value='pacman'>Pacman</option>
					<option value='apt'>APT</option>
					<option value='yum'>YUM</option>
					<option value='emerge'>Emerge</option>
					<option value='pkg'>PKG</option>
				</select>
			</td>
			<td>
				<select name='distro' onchange='main(this)'>
					<option value='arch'>Arch Linux</option>
					<option value='debian'>Debian</option>
					<option value='freebsd'>FreeBSD</option>
					<option value='ubuntu'>Ubuntu</option>
					<option value='fedora'>Fedora</option>
					<option value='centos'>CentOS</option>
					<option value='gentoo'>Gentoo</option>
				</select>
			</td>
			<td>
				<select name='distroVersion' onchange='main(this)'>
					<option value='1'>1</option>
					<option value='2'>2</option>
					<option value='3'>3</option>
					<option value='4'>4</option>
				</select>
			</td>
			<td>
				<select name='guideType' onchange='main(this)'>
					<option value='html'>HTMl guide</option>
					<option value='bash'>BASH script</option>
				</select>
			</td>
			<td>
				<select name='installationRoot' onchange='main(this)'>
					<option value='usr'>Default (<code>/usr</code>)</option>
					<option value='opt'>Custom (<code>/opt</code>)</option>
				</select>
			</td>
		</tr>
	</tbody>
</table>

<div id='content'>
	<h2 id='build'>Build instructions</h2>

	<h2>Remove previous installation of Remmina nad FreeRDP</h2>

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

	<h3>Remmina/FreeRDP installed via package manager<h3>
		<h3 class='tabset'>Tab</h3>

		<h4>apt</h4>
		<pre>
			<code>sudo apt purge "?name(^remmina.*)" "?name(^libfreerdp.*)" \</code>
			<code>  "?name(^freerdp.*)" "?name(^libwinpr.*)"</code>
		</pre>

		<h4>dnf</h4>
		<pre>
			<code>sudo dnf -y remove freerdp\* remmina\*</code>
		</pre>

		<h4>pacman</h4>
		<pre>
			<code>sudo pacman -Rs remmina freerdp</code>
		</pre>

		<h4>yum</h4>
		<pre>
			<code>sudo yum -y remove freerdp\* remmina\*</code>
		</pre>

	<h3>Remmina/FreeRDP installed from sources<h3>
		<h3 class='tabset'>Tab</h3>

		<h4>FreeRDP</h4>

		<blockquote class="is-warning"><p>This works only when FreeRDP is installed using <code>sudo make install</code>. When the <code>build/</code> folder is removed or when you only run <code>make</code>, <code>install_manifest.txt</code> does not exist.</p></blockquote>

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

		<h4>Remmina</h4>
		<pre>
			<code>cd "$HOME/remmina/build" && sudo make uninstall</code>
		</pre>

	<h2>Dependencies installation</h2>
	<p>The following dependencies are needed to build a full Remmina distribution, you may need to tailor it as per your needs.</p>
	<p>The distributions below are sorted alphabetically by there names and then by their versions (latest first).</p>

	<blockquote class="is-info"><p>We need to compile FreeRDP from source, therefore we need to install also the dependencies of FreeRDP.</p></blockquote>
	<blockquote class="is-warning"><p>TODO: We might want to divide the dependencies by features (like RDP, SSH, VNC, etc).</p></blockquote>

	<h3>All dependencies for Remmina and FreeRDP</h3>

		<h4 class='tabset'>Tab</h4>

			<h5>Arch Linux-based distributions</h5>
				<pre>
					<code>sudo pacman -S base-devel git avahi gtk3 libssh libvncserver gnome-keyring kwallet \</code>
					<code>  libgnome-keyring libpulse libsodium vte3 cmake libappindicator-gtk3 \</code>
					<code>  docbook-utils docbook-xsl pcre pcre2 spice-gtk spice-protocol gtk-vnc</code>
				</pre>

			<h5>Debian 10</h5>
				<pre>
					<code>sudo apt install build-essential git-core gtk-vnc libssh-dev cmake libx11-dev \</code>
					<code>  libxext-dev libxinerama-dev  libxcursor-dev libxdamage-dev \</code>
					<code>  libxv-dev libxkbfile-dev libasound2-dev libcups2-dev libxml2 \</code>
					<code>  libxml2-dev  libxrandr-dev libgstreamer1.0-dev \</code>
					<code>  libgstreamer-plugins-base1.0-dev  libxi-dev libavutil-dev \</code>
					<code>  libjson-glib-dev libavcodec-dev libxtst-dev libgtk-3-dev \</code>
					<code>  libgcrypt20-dev  libpulse-dev  libvte-2.91-dev libxkbfile-dev \</code>
					<code>  libtelepathy-glib-dev libjpeg-dev  libgnutls28-dev \</code>
					<code>  libsecret-1-dev libavahi-ui-gtk3-dev libvncserver-dev  \</code>
					<code>  libappindicator3-dev intltool libsecret-1-dev \</code>
					<code>  libwebkit2gtk-4.0-dev libsystemd-dev  libsodium-dev \</code>
					<code>  libkf5wallet-dev libusb-1.0-0-dev libpcre2-dev</code>
				</pre>

			<h5>Debian 9</h5>
				<pre>
					<code>sudo apt purge libssl-dev</code>
					<code></code>
					<code>sudo apt install build-essential git-core gtk-vnc libssh-dev cmake libx11-dev \</code>
					<code>  libxext-dev libxinerama-dev  libxcursor-dev libxdamage-dev \</code>
					<code>  libxv-dev libxkbfile-dev libasound2-dev libcups2-dev libxml2 \</code>
					<code>  libxml2-dev  libxrandr-dev libgstreamer1.0-dev \</code>
					<code>  libgstreamer-plugins-base1.0-dev  libxi-dev libavutil-dev \</code>
					<code>  libjson-glib-dev libavcodec-dev libxtst-dev libgtk-3-dev \</code>
					<code>  libgcrypt11-dev  libpulse-dev  libvte-2.91-dev libxkbfile-dev \</code>
					<code>  libtelepathy-glib-dev libjpeg-dev  libgnutls28-dev \</code>
					<code>  libgnome-keyring-dev libavahi-ui-gtk3-dev libvncserver-dev  \</code>
					<code>  libappindicator3-dev intltool libsecret-1-dev \</code>
					<code>  libwebkit2gtk-4.0-dev libsystemd-dev  libsodium-dev libpcre2-dev</code>
				</pre>

			<h5>FreeBSD 11</h5>
				<pre>
					<code>sudo pkg install cmake gccmakedep git pkgconf libX11 libXext libXinerama libXcursor \</code>
					<code>  libXdamage libXv libxkbfile alsa-lib cups ffmpeg pulseaudio libssh \</code>
					<code>  libXi libXtst libXrandr xmlto gstreamer1 gstreamer1-plugins ffmpeg \</code>
					<code>  libx264 qt5-qmake qt5-buildtools pcre2 gtk-vnc</code>
				</pre>

			<h5>Ubuntu 20.04+</h5>
				<pre>
					<code>sudo apt install build-essential git-core cmake libssl-dev libx11-dev \</code>
					<code>  libxext-dev libxinerama-dev  libxcursor-dev libxdamage-dev \</code>
					<code>  libxv-dev libxkbfile-dev libasound2-dev libcups2-dev libxml2 \</code>
					<code>  libxml2-dev  libxrandr-dev libgstreamer1.0-dev \</code>
					<code>  libgstreamer-plugins-base1.0-dev  libxi-dev libavutil-dev  \</code>
					<code>  libavcodec-dev libxtst-dev libgtk-3-dev libgcrypt20-dev \</code>
					<code>  libssh-dev libpulse-dev  libvte-2.91-dev libxkbfile-dev \</code>
					<code>  libtelepathy-glib-dev libjpeg-dev  libgnutls28-dev \</code>
					<code>  libavahi-ui-gtk3-dev libvncserver-dev  libappindicator3-dev \</code>
					<code>  intltool libsecret-1-dev libwebkit2gtk-4.0-dev libsystemd-dev  \</code>
					<code>  libsoup2.4-dev libjson-glib-dev libavresample-dev \</code>
					<code>  libsodium-dev  libusb-1.0-0-dev libpcre2-dev</code>
				</pre>

			<h5>Ubuntu 18.04</h5>
				<pre>
					<code>sudo apt install build-essential git-core cmake libssl-dev libx11-dev \</code>
					<code>  libxext-dev libxinerama-dev libxcursor-dev libxdamage-dev \</code>
					<code>  libxv-dev libxkbfile-dev libasound2-dev libcups2-dev libxml2 \</code>
					<code>  libxml2-dev libxrandr-dev libgstreamer1.0-dev \</code>
					<code>  libgstreamer-plugins-base1.0-dev libxi-dev libavutil-dev \</code>
					<code>  libavcodec-dev libxtst-dev libgtk-3-dev libgcrypt11-dev \</code>
					<code>  libssh-dev libpulse-dev libvte-2.91-dev libxkbfile-dev \</code>
					<code>  libtelepathy-glib-dev libjpeg-dev libgnutls28-dev \</code>
					<code>  libgnome-keyring-dev libavahi-ui-gtk3-dev libvncserver-dev \</code>
					<code>  libappindicator3-dev intltool libsecret-1-dev \</code>
					<code>  libwebkit2gtk-4.0-dev libsystemd-dev libsoup2.4-dev \</code>
					<code>  libjson-glib-dev libavresample-dev libsodium-dev \</code>
					<code>  libusb-1.0-0-dev libpcre2-dev</code>
				</pre>

			<h5>Red Hat-based distributions</h5>

			<blockquote class="is-info"><p>We use <code>yum</code> for all commands as it’s still an alias on those distros which migrated to <code>dnf</code>.</p></blockquote>

			<blockquote class="is-warning"><p>We should create separate commands for Fedora, CentOS / Red Hat 7 and CentOS / Red Hat 8.</p></blockquote>

			<p><b>Add repositories</b></p>

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

			<p><b>Update <code>yum</code> cache and packages</b></p>

			<pre>
				<code>sudo yum -y upgrade</code>
			</pre>
			
			<p><b>Install dependencies</b></p>

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

	<h3>FreeRDP</h3>

		<p>TODO</p>

	<h2>Clone Remmina repository</h2>

	<h2>Additional information</h2>

</div>