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

md__builds__remmina_remmina-ci__remmina_8wiki__compilation__compilation-guide-for-_r_h_e_l.html « public - gitlab.com/Remmina/remminadoc.gitlab.io.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: da3eba9086a2d8673b0c0aa79e2dc4b1c3918faf (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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Remmina - The GTK+ Remote Desktop Client: Compilation-guide-for-RHEL</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="org.remmina.Remmina.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Remmina - The GTK+ Remote Desktop Client
   &#160;<span id="projectnumber">v1.4.33</span>
   </div>
   <div id="projectbrief">Remmina is a remote desktop client written in GTK+, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large monitors or tiny netbooks. Remmina supports multiple network protocols in an integrated and consistent user interface. Currently RDP, VNC, NX, XDMCP and SSH are supported.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('md__builds__remmina_remmina-ci__remmina_8wiki__compilation__compilation-guide-for-_r_h_e_l.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">Compilation-guide-for-RHEL </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p><b>How to install <a href="https://extensions.gnome.org/extension/615/appindicator-support/">KStatusNotifierItem/AppIndicator Support</a> extension</b></p>
<p>These are the instructions for people who want to test the latest version of Remmina (<code>master</code> branch) on RHEL-like operating systems.</p>
<p>Current version of this guide was tested on vanilla CentOS 7 GNOME Desktop (specifically: <a href="http://tux.rainside.sk/centos/7.7.1908/isos/x86_64/">CentOS-7-x86_64-DVD-1908.iso</a>), CentOS 8 Workstation (specifically: <a href="http://tux.rainside.sk/centos/8.1.1911/isos/x86_64/">CentOS-8.1.1911-x86_64-dvd1.iso</a>) and Fedora 31 x86_64 (specifically: <a href="https://download.fedoraproject.org/pub/fedora/linux/releases/31/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-31-1.9.iso">Fedora-Workstation-Live-x86_64-31-1.9.iso</a>). However, it should work on all CentOS 7+, Red Hat 7+ and Fedora 20+ versions. If you find anything not working, raise an <a href="https://gitlab.com/Remmina/Remmina/issues/new">issue</a>.</p>
<p>Note that although on CentOS 8 and Fedora, they use <code>dnf</code> package manager, there is still the <code>yum</code> symlink to <code>dnf</code>, so we decided to keep <code>yum</code> in this guide to make it usable on all of these distributions without any modifications.</p>
<p>If you want to uninstall the program, follow the instructions in the step 0.</p>
<p><b>0.</b> It is important that no other Remmina or FreeRDP version is installed, therefore we need to remove it. ``<code>bash &lt;h1&gt;To check if a program is installed, we can use</code>whereis [program(s)]` whereis freerdp remmina</p>
<h1>When FreeRDP is installed from the CentOS repo, use this command to remove it</h1>
<p>sudo yum -y remove freerdp*</p>
<h1>When FreeRDP is installed from source code, enter the FreeRDP source code folder</h1>
<h1>and run the following command</h1>
<p>cd ${HOME}/freerdp sudo rm $(cat install_manifest.txt)</p>
<h1>When Remmina is installed from the CentOS repo, use this command to remove it</h1>
<p>sudo yum -y remove remmina*</p>
<h1>When Remmina is installed from source code, enter the <code>build</code> folder</h1>
<h1>in Remmina source code folder and run the following command</h1>
<p>cd ${HOME}/remmina/build sudo make uninstall</p>
<h1>Finally, we need to delete the empty folders of Remmina and FreeRDP</h1>
<h1>This needs to be run for uninstallation of either programs</h1>
<p>sudo rmdir $(find $(whereis freerdp remmina | grep -Po "^[^:]*: \K.*$") -type d | tac) ```</p>
<p><b>1.</b> Add necessary repos. Note that on CentOS 7 GNOME Desktop only <code>epel</code> and <code>rpmfusion-free-updates</code> are not installed by default. I presume that <code>base</code>, <code>extras</code> and <code>updates</code> repos are installed on all version of CentOS 7. ```bash </p><h1>Get some information of the currently installed distribution</h1>
<h1>Note: This is used to determine what repositories are need to be be installed</h1>
<h1>and to create the relevant URLs</h1>
<p>distro_name="$(grep -Po '^ID="*[^"]*' /etc/os-release)" distro_version="$(rpm -E %$distro_name)"</p>
<p>if [ "$distro_name" = 'fedora' ]; then distro_name_short='fedora' else distro_name_short='el' epel_repo='epel-release' fi</p>
<h1>epel (on CentOS only): required for <code>openjpeg2-devel</code>, <code>openssl-devel</code></h1>
<h1>rpmfusion-free-updates (on both CentOS and Fedora): required for <code>ffmpeg-devel</code></h1>
<h1>PowerTools (on CentOS 8+ only)</h1>
<h1>okay (on CentOS 8+); required for <code>avahi-ui-devel</code>, <code>openh264</code>, <code>libopenh264-devel</code>, <code>libx264-devel</code></h1>
<p>sudo yum -y install $epel_repo \ <a href="https://download1.rpmfusion.org/free/${distro_name_short}/rpmfusion-free-release-${distro_version}.noarch.rpm">https://download1.rpmfusion.org/free/${distro_name_short}/rpmfusion-free-release-${distro_version}.noarch.rpm</a></p>
<p>if [ "$distro_name" = 'centos' ] &amp;&amp; [ "$distro_version" = 8 ]; then sudo dnf config-manager &ndash;enable PowerTools sudo rpm -ivh <a href="http://repo.okay.com.mx/${distro_name}/${distro_version}/x86_64/release/okay-release-1-3.el${distro_version}.noarch.rpm">http://repo.okay.com.mx/${distro_name}/${distro_version}/x86_64/release/okay-release-1-3.el${distro_version}.noarch.rpm</a></p>
<h1>Disable okay repo for potential package conflicts</h1>
<p>sudo dnf config-manager &ndash;disable okay fi</p>
<p>if [ "$distro_name" = 'fedora' ]; then sudo dnf config-manager &ndash;enable fedora-cisco-openh264 fi </p><div class="fragment"><div class="line">**3.** Update `yum` cache and packages. This step might require a reboot.</div><div class="line">```bash</div><div class="line">sudo yum -y upgrade</div></div><!-- fragment --><p><b>4.</b> Install dependencies of FreeRDP and Remmina. Note that the installation dependencies for FreeRDP and Remmina was merged. If you want to know exactly which program requires which package, see the <a href="#dependencies">Dependencies</a> section at the end of this document. </p><div class="fragment"><div class="line">sudo yum -y install alsa-lib-devel atk-devel avahi-ui-gtk3 cairo-devel cmake3 \</div><div class="line">  cups-devel docbook-style-xsl ffmpeg-devel gcc gcc-c++ git glib2-devel gnutls-devel \</div><div class="line">  gstreamer1-devel gstreamer1-plugins-base-devel gtk3-devel harfbuzz-devel \</div><div class="line">  json-glib-devel libappindicator-gtk3 libappindicator-gtk3-devel libgcrypt-devel \</div><div class="line">  libsecret-devel libSM-devel libsodium libsodium-devel libsoup-devel libssh-devel \</div><div class="line">  libusb-devel libvncserver-devel libX11-devel libXcursor-devel libXdamage-devel \</div><div class="line">  libXext-devel libXi-devel libXinerama-devel libxkbfile-devel libXrandr-devel libxslt \</div><div class="line">  libxslt-devel libXtst-devel libXv-devel make ninja-build openjpeg2-devel \</div><div class="line">  openssl-devel pango-devel pulseaudio-libs-devel vte291 vte291-devel webkitgtk4-devel \</div><div class="line">  xmlto xorg-x11-server-utils pcre2 pcre2-devel</div><div class="line"></div><div class="line"># On CentOS 8</div><div class="line">if [ &quot;$distro_name&quot; = &#39;centos&#39; ] &amp;&amp; [ &quot;$distro_version&quot; = 8 ]; then</div><div class="line">  sudo yum -y install --enablerepo=okay avahi-ui-devel openh264 libopenh264-devel libx264-devel</div><div class="line">fi</div><div class="line"></div><div class="line"># On Fedora</div><div class="line">if [ &quot;$distro_name&quot; = &#39;fedora&#39; ]; then</div><div class="line">  # TODO: Do we really need `libx264`? Or even `openh264` (that for CentOS too)?</div><div class="line">  sudo yum -y install avahi-ui-devel libx264 libx264-devel openh264 openh264-devel</div><div class="line">fi</div></div><!-- fragment --><p><b>5.</b> Clone FreeRDP and Remmina repos. You may want to modify the <code>${HOME}/{freerdp,remmina}</code> paths and the folder names. </p><div class="fragment"><div class="line">git clone --branch 2.0.0 https://github.com/FreeRDP/FreeRDP.git ${HOME}/freerdp</div><div class="line">git clone https://gitlab.com/Remmina/Remmina.git ${HOME}/remmina</div></div><!-- fragment --><p><b>6.</b> Build FreeRDP. ```bash mkdir ${HOME}/freerdp/build cd ${HOME}/freerdp/build </p><h1>In the following line, the <code>DWITH_PULSE=ON</code> option needs to be included</h1>
<h1>Note: <code>-DCMAKE_INSTALL_LIBDIR=/usr/lib64</code> is required when <code>-DCMAKE_INSTALL_PREFIX:PATH</code></h1>
<h1>is not <code>/usr</code>; otherwise Remmina will not find the <code>libfreerdp*</code> libraries</h1>
<h1>Note: <code>-DWITH_OPENH264=ON -DWITH_X264=OFF</code> makes FreeRDP use H264 which results</h1>
<h1>in extreme good quality for a quite good performance</h1>
<p>cmake3 -DCMAKE_BUILD_TYPE=Debug -DWITH_SSE2=ON -DWITH_PULSE=ON -DWITH_CUPS=on -DWITH_WAYLAND=off \ -DCMAKE_INSTALL_LIBDIR=/usr/lib64 -DCMAKE_INSTALL_PREFIX:PATH=/opt -DWITH_OPENH264=ON \ -DWITH_X264=OFF .. make &amp;&amp; sudo make install</p>
<h1>If you install FreeRDP and Remmina to <code>/opt</code>, you need to add <code>/opt/bin</code> to PATH</h1>
<p>export PATH="$PATH:/opt/bin" echo 'export PATH="$PATH:/opt/bin"' &gt;&gt; ${HOME}/.bashrc</p>
<h1>You can test FreeRDP by connecting to an RDP host</h1>
<p>xfreerdp +clipboard /sound:rate:44100,channel:2 /v:hostname /u:username </p><div class="fragment"><div class="line">**7.** Make your system dynamic loader aware of the new libraries you installed</div><div class="line">```bash</div><div class="line">sudo ldconfig</div></div><!-- fragment --><p><b>8.</b> Build Remmina. ```bash mkdir ${HOME}/remmina/build cd ${HOME}/remmina/build </p><h1>Note: <code>-DCMAKE_INSTALL_LIBDIR=/usr/lib64</code> is not required to successfully run Remmina,</h1>
<h1>but <code>/usr/lib64</code> is the proper location for the libraries; again, it is not required</h1>
<h1>at all when Remmina is installed to <code>/usr</code></h1>
<p>cmake3 -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=/opt -DCMAKE_INSTALL_LIBDIR=/usr/lib64 \ -DCMAKE_PREFIX_PATH=/opt &ndash;build=build .. make &amp;&amp; sudo make install </p><div class="fragment"><div class="line">**9.** If Remmina is installed to a custom path (e.g. for use `/opt`), we need to create some symlinks in order to .</div><div class="line"></div><div class="line">```bash</div><div class="line">sudo mkdir -p /usr/share/icons/hicolor/scalable/panel /usr/share/icons/hicolor/apps</div><div class="line"></div><div class="line">for old in /opt/share/applications/*desktop $(find /opt/share/icons -type f | grep &#39;svg$\|png$&#39;); do</div><div class="line">   new=&quot;${old/opt/usr}&quot;</div><div class="line">   sudo ln -s $old $new</div><div class="line">done</div></div><!-- fragment --><p><b>10.</b> Now you should be able to run Remmina with the following command or using the GUI. </p><div class="fragment"><div class="line">remmina &amp;&gt; /dev/null &amp;</div></div><!-- fragment --><h2>Notes</h2>
<h3>Remmina in the system tray on GNOME 3</h3>
<p>Current GNOME Shell versions does not include system tray, therefore vanilla GNOME will not show the Remmina system tray icon and menu. Press <code>Super</code>+<code>M</code> to see the Remmina icon on the message bar. If you want to fix this, you could install either <a href="https://extensions.gnome.org/extension/615/appindicator-support/">KStatusNotifierItem/AppIndicator Support</a>.</p>
<p>Below is a guide how to install the extension. For more information on installing the <code>chrome-gnome-shell</code> , see the <a href="https://wiki.gnome.org/Projects/GnomeShellIntegrationForChrome/Installation">documentation</a></p>
<p>&lt;details&gt;</p>
<p>This method installs the extension locally (i.e. for current user only).</p>
<ol type="1">
<li>Install <code>chrome-gnome-shell</code> package.</li>
</ol>
<div class="fragment"><div class="line">sudo yum -y install chrome-gnome-shell</div></div><!-- fragment --><ol type="1">
<li>Install the browser extension. Go to <a href="https://extensions.gnome.org">GNOME extension website</a> and click on <em>Click here to install browser extension</em>; or you can install it from <a href="https://addons.mozilla.org/en-US/firefox/addon/gnome-shell-integration/">Firefox Browser Add-ons</a>.</li>
<li>Install the <a href="https://extensions.gnome.org/extension/615/appindicator-support/">KStatusNotifierItem/AppIndicator Support</a> extension by clicking on the toggle on that page (it must be on <code>on</code> position). Then confirm the installation.</li>
<li>Don't forget to re-login the GNOME. :smiley: &lt;/details&gt;</li>
</ol>
<h3>Remmina in the system tray on Xfce</h3>
<blockquote class="doxtable">
<p>:information_source: This might be outdated. If you know the current state of this issue or any workaround(s), open an <a href="https://gitlab.com/Remmina/Remmina/issues/new">issue</a>. </p>
</blockquote>
<p>Xfce and other desktop environments without app indicator support, will not show you the system tray icon if you are executing Remmina from its compilation folder (e.g. <code>~/remmina</code>) because it contains a folder named <code>remmina</code>. For more infomation, see <a href="https://bugs.launchpad.net/libappindicator/+bug/1363277">Bug #1363277 on Launchpad</a>.</p>
<h3>Dependencies</h3>
<ol type="1">
<li>If you are cloning the repositories, you need <code>git</code>.</li>
<li>FreeRDP dependencies:</li>
</ol>
<div class="fragment"><div class="line"># Official guide (src: https://github.com/FreeRDP/FreeRDP/wiki/Compilation [rhel based])</div><div class="line">gcc cmake ninja-build openssl-devel libX11-devel libXext-devel libXinerama-devel \</div><div class="line">  libXcursor-devel libXi-devel libXdamage-devel libXv-devel libxkbfile-devel \</div><div class="line">  alsa-lib-devel cups-devel ffmpeg-devel glib2-devel libusb-devel</div><div class="line"># We had to install these at least on CentOS 8, but they are probably required on CentOS 7 too;</div><div class="line">#   otherwise the build failed</div><div class="line">make gcc-c++ pulseaudio-libs-devel libXrandr-devel</div><div class="line"># Recommended: these are required to build man pages</div><div class="line">libxslt libxslt-devel docbook-style-xsl</div><div class="line"># Recommended: for multimedia redirection, audio and video playback</div><div class="line">gstreamer1-devel gstreamer1-plugins-base-devel</div><div class="line"># Recommended: for some X11 addon</div><div class="line">xorg-x11-server-utils</div><div class="line"># Recommended: at build-time, FreeRDP states that this is &#39;required by virtual:world&#39;</div><div class="line">cairo-devel</div></div><!-- fragment --><ol type="1">
<li>Remmina dependencies (besides FreeRDP and its dependencies):</li>
</ol>
<div class="fragment"><div class="line">atk-devel avahi-ui-devel avahi-ui-gtk3 cmake3 gnutls-devel gtk3-devel harfbuzz-devel \</div><div class="line">  json-glib-devel libappindicator-devel libappindicator-gtk3 libappindicator-gtk3-devel \</div><div class="line">  libgcrypt-devel libopenh264-devel libsecret-devel libSM-devel libsodium libsodium-devel \</div><div class="line">  libsoup-devel libssh-devel libvncserver-devel libx264-devel libXtst-devel openh264 \</div><div class="line">  openjpeg2-devel pango-devel vte291 vte291-devel webkitgtk4-devel xmlto</div></div><!-- fragment --> </div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>