rdesktop has been spewing error messages since the update to CentOS 6.4. Aside from the continuous stream of errors in the terminal window from which it was launched, there are a number of usability issues in the remote session. The pointer does not change shape when moving over various window components such as column separators, window borders, etc. The background doesn't refresh within scroll bars, making it difficult to tell where the scroll handle is. We've also found that MS Visio will crash and hang the remote system if run within rdesktop. Other strange phenomenon are also manifest in various applications. In short, rdesktop 1.6.0-10 is buggy and unstable. See this upstream bug report for more:
Bug 914279 - regression in 1.6.0-10.el6: Mousepointer and selections not drawn properly https://bugzilla.redhat.com/show_bug.cgi?id=914279
We've been putting up with it, hoping that an update would be published upstream. Even though this issue is affecting customers upstream, as evidenced in the bugzilla report, a bug-fix update doesn't appear to be imminent. I decided to rebuild the Fedora 19 SRPM on CentOS to resolve the issue. It appears from the bugzilla remarks that others have done this trivially. With a few simple precautions, we've done just that. I'm sharing our work-around in the hope that it will benefit others in similar circumstances.
This process assumes you have a build machine properly setup with an rpmbuild environment. If you don't, see this article:
Set Up an RPM Build Environment under CentOS http://wiki.centos.org/HowTos/SetupRpmBuildEnvironment
Note: Watch for line-wrap below.
Best Regards,
--Cal Webster
=============[Rdesktop Workaround]=============
##>> Retrieve and install the CentOS source RPM:
rpm -iv http://vault.centos.org/6.4/os/Source/SPackages/rdesktop-1.6.0-10.el6.src.rp...
##>> Set aside the sources:
[iseo@jato ~]$ cd rpmbuild/SOURCES/ [iseo@jato SOURCES]$ mkdir rdesktop-1.6.0-10 [iseo@jato SOURCES]$ mv *.patch rdesktop-1.6.0.tar.gz rdesktop-1.6.0-10/
##>> Rename the CentOS spec file:
[iseo@jato SOURCES]$ cd ../SPECS/ [iseo@jato SPECS]$ mv rdesktop.spec rdesktop.spec.centos
##>> Retrieve and install the Fedora source RPM from your favorite mirror: (watch for line-wrap in URL)
rpm -iv http://mirror.linux.duke.edu/pub/fedora/linux/releases/19/Everything/source/...
##>> Rename the Fedora spec file then use the CentOS spec file:
[iseo@jato SPECS]$ mv rdesktop.spec rdesktop.spec.fc19 [iseo@jato SPECS]$ cp rdesktop.spec.centos rdesktop.spec
##>> Edit the CentOS spec file:
Change version and release to reflect FC19 package Add version suffix to designate local RPM Remove original CentOS patch references and replace with those from FC19 Add comments in change log
[iseo@jato SPECS]$ vi rdesktop.spec ----------------------------------- Version: 1.7.1 Release: 2%{?dist}.1.iseo ... Patch0: %{name}-libao.patch ... %prep %setup -q %patch0 -p1 -b .ao ... %changelog * Fri Nov 1 2013 Cal Webster cwebster@bizec.rr.com 1.7.1-2 - Latest version not available upstream - This version from FC19 - Fixes regression errors (NOT IMPLEMENTED RDP5 opcodes, get cursor, etc) - Fixes mouse cursor not changing and background showing through - Fixes freeze on remote system - See https://bugzilla.redhat.com/show_bug.cgi?id=914279 -----------------------------------
##>> You might need to install pcsc-lite-devel if you get a build dependency error. It's not installed by default.
[root@jato ~]# yum install pcsc-lite-devel ... Installed: pcsc-lite-devel.x86_64 0:1.5.2-13.el6_4
Complete! [root@jato ~]#
##>> You will also need to modify /usr/include/ao/ao.h to overcome this build error:
------------------------------------------------------ [iseo@jato rpmbuild]$ rpmbuild -ba --sign --clean SPECS/rdesktop.spec ... gcc -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wall -I/usr/include -pthread -I/usr/include/PCSC -DPACKAGE_NAME= "rdesktop" -DPACKAGE_TARNAME="rdesktop" -DPACKAGE_VERSION="1.7.1" -DPACKAGE_STRING="rdesktop\ 1.7.1" -DPACKAGE_BUGREPORT="" -DPACKAGE_URL="" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DL_ENDIAN=1 -DHAVE_SYS_SELECT_H=1 -DHAVE_LOCALE_H=1 -DHAVE_LANGINFO_H=1 -DHAVE_SYSEXITS_H=1 -Dssldir= "/usr" -DHAVE_XRANDR=1 -DWITH_SCARD=1 -DEGD_SOCKET="/var/run/egd-pool " -DWITH_RDPSND=1 -DRDPSND_LIBAO=1 -DHAVE_DIRENT_H=1 -DHAVE_DIRFD=1 -DHAVE_DECL_DIRFD=1 -DHAVE_ICONV_H=1 -DHAVE_ICONV=1 -DICONV_CONST= -DHAVE_SYS_VFS_H=1 -DHAVE_SYS_STATVFS_H=1 -DHAVE_SYS_STATFS_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_MOUNT_H=1 -DSTAT_STATVFS=1 -DHAVE_STRUCT_STATVFS_F_NAMEMAX=1 -DHAVE_STRUCT_STATFS_F_NAMELEN=1 -DHAVE_MNTENT_H=1 -DHAVE_SETMNTENT=1 -DIPv6=1 -DKEYMAP_PATH= "/usr/share/rdesktop/keymaps/" -o orders.o -c orders.c rdpsnd_libao.c: In function 'libao_open': rdpsnd_libao.c:78: error: 'ao_sample_format' has no member named 'matrix' rdpsnd_libao.c: In function 'libao_set_format': rdpsnd_libao.c:117: error: 'ao_sample_format' has no member named 'matrix' make: *** [rdpsnd_libao.o] Error 1 make: *** Waiting for unfinished jobs.... error: Bad exit status from /var/tmp/rpm-tmp.wkIC6X (%build)
RPM build errors: Bad exit status from /var/tmp/rpm-tmp.wkIC6X (%build) [iseo@jato rpmbuild]$ ------------------------------------------------------
##>> Make a backup copy of ao.h:
cp /usr/include/ao/ao.h /usr/include/ao/ao.h.orig
##>> Open ao.h in vi editor and search for the ao_sample_format type definition. Then add the "matrix" line at the bottom.
vi /usr/include/ao/ao.h ----------------------- typedef struct ao_sample_format { int bits; /* bits per sample */ int rate; /* samples per second (in a single channel) */ int channels; /* number of audio channels */ int byte_format; /* Byte ordering in sample, see constants below */ char *matrix; /* channel input matrix */ } ao_sample_format; -----------------------
##>> Make a copy of the modified ao.h in case it gets overwritten later:
cp /usr/include/ao/ao.h /usr/include/ao/ao.h.withMatrix
##>> The build should now complete without incident:
---------------------------------------------------- [iseo@jato rpmbuild]$ rpmbuild -ba --sign --clean SPECS/rdesktop.spec ... Generating signature: 1005 Wrote: /home/iseo/rpmbuild/SRPMS/rdesktop-1.7.1-2.el6.1.iseo.src.rpm Generating signature: 1005 Wrote: /home/iseo/rpmbuild/RPMS/x86_64/rdesktop-1.7.1-2.el6.1.iseo.x86_64.rpm Generating signature: 1005 Wrote: /home/iseo/rpmbuild/RPMS/x86_64/rdesktop-debuginfo-1.7.1-2.el6.1.iseo.x86_64.rpm Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.JeWQeP + umask 022 + cd /home/iseo/rpmbuild/BUILD + cd rdesktop-1.7.1 + rm -rf /home/iseo/rpmbuild/BUILDROOT/rdesktop-1.7.1-2.el6.1.iseo.x86_64 + exit 0 Executing(--clean): /bin/sh -e /var/tmp/rpm-tmp.wRDJyS + umask 022 + cd /home/iseo/rpmbuild/BUILD + rm -rf rdesktop-1.7.1 + exit 0 [iseo@jato rpmbuild]$ ----------------------------------------------------
Your install RPM is in ~/rpmbuild/RPMS/{i386,x86_64}/ You can now copy the RPM to any CentOS 6.4 machine of the same architecture and update rdesktop.
yum localupdate rdesktop-1.7.1-2.el6.1.iseo.x86_64.rpm
-or-
If you maintain a local, custom repo like we do just copy the rpm there and update your repo metadata so it'll be installed during the next update cycle.
[root@pegasus ~]# yum list rdesktop Loaded plugins: downloadonly, fastestmirror, priorities, refresh-packagekit, : security Loading mirror speeds from cached hostfile * base: ftpserver 56 packages excluded due to repository priority protections Installed Packages rdesktop.i686 1.6.0-10.el6 @base Available Packages rdesktop.i686 1.7.1-2.el6.1.iseo localupdates [root@pegasus ~]#
=============[/Rdesktop Workaround]=============
On Thu, Nov 07, 2013 at 10:51:48AM -0500, Cal Webster wrote:
rdesktop has been spewing error messages since the update to CentOS 6.4. Aside from the continuous stream of errors in the terminal window from which it was launched, there are a number of usability issues in the remote session. The pointer does not change shape when moving over various window components such as column separators, window borders, etc. The background doesn't refresh within scroll bars, making it difficult to tell where the scroll handle is. We've also found that MS Visio will crash and hang the remote system if run within rdesktop. Other strange phenomenon are also manifest in various applications. In short, rdesktop 1.6.0-10 is buggy and unstable. See this upstream bug report for more:
Bug 914279 - regression in 1.6.0-10.el6: Mousepointer and selections not drawn properly https://bugzilla.redhat.com/show_bug.cgi?id=914279
there is a newer version upstream (meaning the author's web site), but I don't know if it solves these problems.
1.8.0 is available from http://www.rdesktop.org/#download
I know, we all hate to override the package manager with un-packaged programs, but sometimes you just gotta.
On Thu, 2013-11-07 at 13:50 -0500, Fred Smith wrote:
On Thu, Nov 07, 2013 at 10:51:48AM -0500, Cal Webster wrote:
rdesktop has been spewing error messages since the update to CentOS 6.4. Aside from the continuous stream of errors in the terminal window from which it was launched, there are a number of usability issues in the remote session. The pointer does not change shape when moving over various window components such as column separators, window borders, etc. The background doesn't refresh within scroll bars, making it difficult to tell where the scroll handle is. We've also found that MS Visio will crash and hang the remote system if run within rdesktop. Other strange phenomenon are also manifest in various applications. In short, rdesktop 1.6.0-10 is buggy and unstable. See this upstream bug report for more:
Bug 914279 - regression in 1.6.0-10.el6: Mousepointer and selections not drawn properly https://bugzilla.redhat.com/show_bug.cgi?id=914279
there is a newer version upstream (meaning the author's web site), but I don't know if it solves these problems.
1.8.0 is available from http://www.rdesktop.org/#download
I know, we all hate to override the package manager with un-packaged programs, but sometimes you just gotta.
It quickly becomes impossible to manage anything more than a handful of systems without a reliable package management system. Unmanaged apps suck away valuable time. I'm sure the latest-and-greatest will make its way into Fedora where a maintainer will re-package it into an RPM. For now, I'm happy to rebuild the Fedora SRPM until and upstream (Red Hat) SRPM is published. As I indicated, it's trivial to rebuild.
Cal Webster wrote:
In short, rdesktop 1.6.0-10 is buggy and unstable. See this upstream bug report for more:
There are more recent versions of rdesktop available via 3rd party repos e.g. http://pkgs.repoforge.org/rdesktop/
No idea if they fix your problem - but probably worth a try?
James Pearson
On Thu, 2013-11-07 at 19:17 +0000, James Pearson wrote:
Cal Webster wrote:
In short, rdesktop 1.6.0-10 is buggy and unstable. See this upstream bug report for more:
There are more recent versions of rdesktop available via 3rd party repos e.g. http://pkgs.repoforge.org/rdesktop/
No idea if they fix your problem - but probably worth a try?
James Pearson
The Fedora package we used is the best choice since (1) it has already proven to fix the issues as cited in the bug report, and (2) Fedora is the source for upstream vendor packages anyway.
I like to stay away from 3rd party repos as much as possible to avoid overlap. CentOS and EPEL have most everything our sites need. If there is something we really need that's not in one of those, we'll rebuild the source and put it in our custom LocalCentos repo.
Cal Webster wrote:
The Fedora package we used is the best choice since (1) it has already proven to fix the issues as cited in the bug report, and (2) Fedora is the source for upstream vendor packages anyway.
RHEL 6.5 will use rdesktop-1.7.1
If you have access to the RHEL 6.5 beta SRPMS, then that builds fine on CentOS 6.4
James Pearson
On Thu, Nov 07, 2013 at 08:00:53PM +0000, James Pearson wrote:
Cal Webster wrote:
The Fedora package we used is the best choice since (1) it has already proven to fix the issues as cited in the bug report, and (2) Fedora is the source for upstream vendor packages anyway.
RHEL 6.5 will use rdesktop-1.7.1
but not 1.8, which is available from the author. can't see why they wouldn't use it, I've compiled it on 6.4 and run it without trouble, so it couldn't be a portability issue.