Adventures in Linux: Making Citrix Receiver work - This 8-Bit Life
I spend a surprising amount of time using Citrix’ software. I use it at work every day as many of my clients rely on virtualized apps and virtualized servers for their day to day work. I administer these servers and troubleshoot the issues with Citrix Receiver (ICA Client) on a daily basis. I personally rely on the virtualized apps at school.
I am a Linux user primarily, but I have regularly booted to Windows to do any lab work that required Citrix as my previous experiences with the ICA Client on Linux had been frustrating at best. I have made a commitment to myself this session to complete all of my course work and lab work using Linux. I am putting an emphasis on open-source tools but in this particular case I have no choice but to use Citrix’ client.
The problem? The 64-bit package for the Citrix ICA Client that they host on their site will not install without a bit of poking and prodding What follows is a guide following the steps I used recently to get it working on my Ubuntu 13.04 machine:
To begin with, let’s download the 64-bit .deb file from Citrix’ site here: http://www.citrix.com/downloads/citrix-receiver/receivers-by-platform/receiver-for-linux-121.html#ctx-dl-eula
Once this is downloaded we can attempt to install it with the following command:
sudo dpkg --install Downloads/icaclient_12.1.0_amd64.deb
After you accept the EULA you will likely see the following output:
This outputs the following error:
Selecting previously unselected package icaclient.
(Reading database … 212683 files and directories currently installed.)
Unpacking icaclient (from …/icaclient_12.1.0_amd64.deb) …
dpkg: dependency problems prevent configuration of icaclient:
icaclient depends on libc6-i386 (>= 2.7-1); however:
Package libc6-i386 is not installed.
icaclient depends on ia32-libs; however:
Package ia32-libs is not installed.
icaclient depends on lib32z1; however:
Package lib32z1 is not installed.
icaclient depends on lib32asound2; however:
Package lib32asound2 is not installed.
icaclient depends on nspluginwrapper; however:
Package nspluginwrapper is not installed.
dpkg: error processing icaclient (–install):
dependency problems – leaving unconfigured
Errors were encountered while processing:
Most Linux users will recognize that these are dependencies required by the ICA Client to function. No matter this is easily solved by installing the packages we see listed:
sudo apt-get install -y libc6-i386 ia32-libs lib32z1 lib32asound2 nspluginwrapper
Once these packages are installed you could run dpkg with the install flag again but this will fail citing an inability to properly configure the package. What we need to do is fix a the post-install file that the .deb install file parses after installation to configure the package for your machine. Particularly we need to edit the icaclient.postinst file to reflect the processor architecture as 64-bit. **This is laziness on the part of the Citrix developers. It’s quite clear that they did not test this package before releasing it or they would have caught this.
What we need to do is edit line 2648 of this file to reflect the correct architecture:
sudo nano /var/lib/dpkg/info/icaclient.postinst
From here we need to use the PgDn key to scoll down to line 2648 we can check this by using CTRL-C in nano to print the cursor’s current line. Once there we simply replace the faulty line with the following:
echo $Arch|grep -iE "x86_64" >/dev/null
Once you have saved this in nano with CTRL-O you can exit. Then we need to run the following command to configure the client:
sudo dpkg --configure icaclient
If all went well you should now have the client installed and functioning. Hooray! Sadly though, this will likely not be the end of your woes. It’s very likely that when you visit your Citrix Web Interface and try to launch an app it will scream at you about missing a cert. Maybe even a certificate that you already have installed! Now why the hell would that be?
Well, Citrix chose to have their application search for certificates in it’s own directory rather than common /usr/share/ca-certificates directory. Nope, it want’s everything in /opt/Citrix/ICAClient/keystore/cacerts/.
What you will need to do is copy or download whatever cert you need and then place it in this directory. When getting things working for school I needed a particular cert from Verisign. You can use this same command to move whatever cert you need to the proper directory:
sudo mv ~/Downloads/pca3-g5.crt /opt/Citrix/ICAClient/keystore/cacerts/Class3PCA_G5_v2.crt