Citrix receiver on Ubuntu Lucid

Jurjen Bokma

November 2011

Loosely following a Citrix Support article, we try to install the Citrix Receiver on Lucid.

  1. We fetch the OpenMotif RPM the article suggests we fetch:

    apprentice@testbox:~$ wget -q

    Then the article suggests we use alien to convert the RPM to a DEB archive. On a 64-bit Debian however, the resulting package won't be installable, because it's built for the wrong architecture. Besides, it appears that only very few files from the package are actually needed, and having an alien package in a system always composes something of a risk. So we don't. Instead, we convert the pacakge to a tarball:

    apprentice@testbox:~$ alien --to-tgz openmotif-2.3.3-1.el5.3.i386.rpm
    apprentice@testbox:~$ mkdir unpacked-openmotif-tarball
    apprentice@testbox:~$ tar zxC unpacked-openmotif-tarball -f openmotif-2.3.3.tgz

  2. Now, as luck would have it, the only files from the OpenMotif suite that the Citrix Receiver seems to needs are the Xm libraries. And it doesn't look for them in the proper places thad /etc/ suggests, but instead it seems to start looking for hardcoded paths, some of which don't even exist on an Ubuntu/Debian system. This is all very ugly, but we can use it to our advantage: we create one of the nonexisting paths, and we copy the libraries from the unpacked tarball to that directory, where they won't interfere with the rest of the system:

    apprentice@testbox:~$ sudo mkdir /lib/i486-linux-gnu
    apprentice@testbox:~$ sudo cp unpacked-openmotif-tarball/usr/lib/* /lib/i486-linux-gnu/

  3. Through the downloads section of the Citrix page, we fetch icaclient_12.0.0_amd64.deb. Examining the contents of that file, we see that the client installs to /opt, which goes against the Debian Policy. And the postinst script is a generic-installer-made-specific that does e.g. its own checks on whether a previously existing version should be overwritten. This is error-prone, and my guess is that this will just create a big mess when we do apt-get install of an older version over a newer one. But what the heck, this is just a test, and maybe I'm just too much of a pessimist. So here goes:

    apprentice@testbox:~$ dpkg -i ./icaclient_12.0.0_amd64.deb

    (no output except for the EULA question).

  4. According to /usr/share/menu/icaclient, the command to run the client is: /opt/Citrix/ICAClient/wfcmgr -icaroot /opt/Citrix/ICAClient.

    apprentice@testbox:~$ /opt/Citrix/ICAClient/wfcmgr -icaroot /opt/Citrix/ICAClient

    Figure 1.  Screenshot of Citrix Receiver
    Screen shot of the initial screen of the Citrix Receiver running on 64-bit Unbuntu Lucid

    Further testing shows that it actually works: you can run Windows apps from Linux, which then run on the remote system. But how to configure that client-side is highly dependent on the server(s) and beyond the scope of these notes.

Conclusion: It's ugly. And I wouldn't want to maintain it. But when hacked, it seems to work.

Before this is actually maintainable, a few things need to be done: