Installing Citrix ICA client in 64-bit Ubuntu/Linux Mint Redux

A couple of years ago, I wrote about installing the Citrix ICA client in 64-bit versions of Ubuntu Linux. Since then, Ubuntu has changed A LOT and those instructions are no longer valid. And, unfortunately, the process to get Citrix ICA client running on 64-bit Ubuntu 13.10 and later (I’m writing this on 14.04 LTS) is now very complicated. Hopefully, this guide will help you, but be warned that it involves a good bit of tweaking of your system and plenty of patience.

As with the previous instructions, you need to install a few required packages on your system to begin with. Open a Terminal window and enter this command:

sudo apt-get install libxaw7 libmotif4 lib32z1 libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 nspluginwrapper

As well, we need to install some i386-specific packages:

sudo apt-get install libncurses5:i386 libstdc++6:i386 zlib1g:i386

Now, we must download a couple of package files from Ubuntu 10.04 LTS (Lucid Lynx):
ia32-libs
lib32bz2-1.0

We also need two other packages from Ubuntu 10.04. However, these packages have some problems with respect to their dependency configurations. These don’t cause any problems with installing and using these packages, but they will cause errors when running apt-get to update your system or install new packages. To avoid these errors, I have slightly modified the packages to correct the dependency versions. You can download them here:
lib32asound2  (original package here)
lib32v4l-0  (original package here)
See this article for information about how to correct such dependency errors.

After downloading these four package files, change to the Downloads directory in the Terminal and using the dpkg command to install them:

sudo dpkg -i lib32bz2-1.0_1.0.5-4ubuntu0.2_amd64.deb
sudo dpkg -i lib32asound2_1.0.22-0ubuntu7_amd64_fixed.deb
sudo dpkg -i lib32v4l-0_0.6.4-1ubuntu1_amd64_fixed.deb
sudo dpkg -i ia32-libs_2.7ubuntu26.1_amd64.deb

While it should not be necessary, in some situations, you may need to force the configuration of the installed packages:

sudo dpkg --configure --force-all --pending

After these packages are installed and configured, download the 64-bit version of the ICA client (sometimes called Citrix Receiver) package from the Citrix web site. (At the time of this writing, version 13.0 of the client is the latest version.) Download the 64-bit version with the .deb extension, such as icaclient_13.0.0.256735_amd64.deb. I recommend bypassing the Citrix Download Manager and clicking on the “Download your file manually” link when prompted.

In the Terminal, install the ICA client:

sudo dpkg -i icaclient_13.0.0.256735_amd64.deb

Of course, replace the file name with the name of the .deb file that you downloaded. After installing the ICA client, you should have a “Citrix Receiver” menu item under the “Internet” menu.

To use the ICA client, select the “Citrix Receiver” menu item and then open your organization’s Citrix access web site. When you click on the remote access link, the usual Citrix client windows should be displayed and you should be able to log into your system as usual.

If you receive errors related to “SSL Error 61”, you may need to modify the SSL certificates in your ICA client installation to include those installed with the Mozilla Firefox browser (which is installed by default in Ubuntu). To do this, run these commands in the Terminal:

sudo mv /opt/Citrix/ICAClient/keystore/cacerts /opt/Citrix/ICAClient/keystore/cacerts_old
sudo cp /opt/Citrix/ICAClient/keystore/cacerts_old/* /usr/share/ca-certificates/mozilla/
sudo ln -s /usr/share/ca-certificates/mozilla /opt/Citrix/ICAClient/keystore/cacerts

References
How to workaround apt-get unmet dependencies error
Public Key Certificate Locations in Windows

Setting up Named Virtual Hosts on Ubuntu Linux

In recent versions of Ubuntu Linux (I’m writing this on 14.04 LTS), Apache 2.4 is the standard version of the Apache web server. Version 2.4 has a few differences from version 2.2 that make setting up Named Virtual Hosts a bit quirky. Here are some instructions for how to set them up.

For this example, I’m going to use my projects folder in my home directory (e.g., /home/tim/projects) as the virtual host root (top-level) directory.  Ubuntu contains two directories for your virtual hosts files:  /etc/apache2/sites-available and /etc/apache2/sites-enabled.  As you might expect from the names, these directories contain the virtual host configuration files for all of the sites (“available”) and for those that are currently active (“enabled”).

First, in the terminal shell, create a new configuration in file in /etc/apache2/sites-available:

sudo touch /etc/apache2/sites-available/projects.conf

replacing projects with the desired configuration name. The .conf file extension is required (unless you want to change the parameters is /etc/apache2/apache2.conf).

Make yourself the owner of this file using the chown command:

sudo chown username:username /etc/apache2/sites-available/projects.conf

where username should be replaced with your Ubuntu account username.

Now, open this file in your favorite text editor (I like medit!) and paste in the following code:

<VirtualHost projects>
	ServerName projects
	ServerAlias www.projects.com
	ServerAdmin admin@admin
	DocumentRoot /home/tim/projects

	<Directory /home/tim/projects/>
	DirectoryIndex index.php
	Options Indexes FollowSymLinks
	AllowOverride All
	Require all granted
	</Directory>

	ErrorLog ${APACHE_LOG_DIR}/projects_error.log
	CustomLog ${APACHE_LOG_DIR}/projects_access.log combined
	LogLevel warn
</VirtualHost>

Of course, you’ll need to adjust the names and paths appropriately for your situation. A couple of important points to pay special attention to:

  • On line #1, ensure that you use the desired virtual host name. This is different from earlier versions of Apache, where you would typically specify *:80.
  • On line #2, set ServerName to the alias that you want to use in your browser for the new virtual host. In this example, projects means that the URL for the virtual host will be http://projects.
  • On line #7, make sure that you include the trailing slash (/) in the path name for the Directory specification.

To activate your new virtual host, create a symbolic link to the new configuration in the /etc/apache2/sites-enabled directory:

sudo ln -s /etc/apache2/sites-available/projects.conf /etc/apache2/sites-enabled/projects.conf

Alternately, you can use the a2ensite helper command:

sudo a2ensite projects.conf

Finally, you’ll need to restart the Apache web server to make the new virtual host available:

sudo service apache2 reload

To confirm that the new virtual host is working properly, create a simple PHP script named phpinfo.php to display the PHP environment configuration in your root (“home”) directory for the new virtual host (/home/tim/projects in this example):

<?php
	echo phpinfo();
?>

In your web browser, enter the the URL for the new virtual host with the name of the PHP script: http://projects/phpinfo.php. If everything is working you should see the details provided by the PHP phpinfo() function.


References
Virtual host on ubuntu 13.10 and apache 2.4.6 – Stack Overflow
Setting Up Name Based Virtual Hosting – Ubuntu Tutorials
How To Set Up Apache Virtual Hosts on Ubuntu 12.04 LTS – Digital Ocean
How to Create Name Based and IP Based Virtual hosts in Apache – Ubuntu Geek