by Danny Quah, June 2020 (revised Jan 2022)
Pulse Secure Client is a VPN client that allows secure connection to a Pulse Connect Secure SSL VPN gateway. Many universities use that latter for faculty, staff, and student access to their computer systems. However, because Linux comes in many different flavors, the standard Pulse Secure Client installer does not always run to completion. (For one, UWO.ca suggests "PulseSecure's understanding of Linux package managers and distributions in general seems very limited.") The user is then either forced to use a Windows machine, somehow, or fail VPN access when traveling with their Linux notebook.
This Gist describes the steps I took to install Pulse Secure Client on my Ubuntu-based Linux machines, including a Pixelbook running GalliumOS 3.1 and Dell desktops running Ubuntu 18.04 and 20.04. Other writeups elsewhere that I've looked at describe the same problems I encountered, but were either out-dated, overly localised, or did not provide me the critical information I needed to complete the job.
The Pulse Secure Client itself is typically provided somewhere on an organisation's file servers. Retrieve that (sometimes that needs to be unzipped or otherwise extracted, so I don't assume being able to get it using just a wget
or curl
). In my case, I retrieved onto my local disk from my university's servers the file pulse-9.1R5.x86_64.deb
for my 64-bit machines. Of course, by when this Gist is read, the latest version will almost surely have different numbers, but the filename will likely retain still some resemblance.
Start to install Pulse Secure Client with:
sudo dpkg --install pulse-9.1R5.x86_64.deb
If that works with no error messages, you're done.
Typically, however, the script detects missing dependencies and asks that the user execute:
sudo /usr/local/pulse/PulseClient_x86_64.sh install_dependency_packages
Go ahead and try that. Again, if no error messages appear, then you're good to go.
However, all my systems at this point show some combination of errors including:
cannot remove /usr/local/pulse/libwebp.so.6: No such file or directory
and references to unary operators expected (when, for instance, the shell script is unable to find a correct OS/release label and replaces it instead with just a blank).
From here, I took advice from UWO.ca and Tribuga, but updated and modified to run the following by hand. The critical difference in the below is whether libwebkitgtk-1.0
is available on your system (GalliumOS 3.1; Ubuntu 18.04; and possibly others) or is not (Ubuntu 20.04 and possibly others).
- On one of my systems, doing this:
sudo apt install libproxy1-plugin-webkit
sudo apt install libwebkitgtk-1.0
sufficed.
- On others I had to execute:
sudo apt install lib32z1
sudo apt install libwebkitgtk-1.0
sudo apt install libproxy1v5
sudo apt install libproxy1-plugin-gsettings
sudo apt install libproxy1-plugin-webkit
sudo apt install libdconf1
sudo apt install dconf-gsettings-backend
(with some systems asserting that some of what I was attempting to install was already present and up to date; this is of course without harm).
Whichever of 1.-2. above works for you, however, Pulse Secure Client is now available.
You'll find that an entry has been created in your App drawer or menu with the appropriate name, and containing:
/usr/bin/env LD_LIBRARY_PATH=/usr/local/pulse:$LD_LIBRARY_PATH /usr/local/pulse/pulseUi
Run that. Alternatively, doing:
LD_LIBRARY_PATH=/usr/local/pulse:$LD_LIBRARY_PATH
/usr/local/pulse/pulseUi &
should give you the VPN sign-on screen, from where you can now fill in your organisation's VPN specifics.
- On Ubuntu 20.04, however, neither of the above works. The key problem is
libwebkitgtk-1.0.so.0
is not in Ubuntu 20.04. A number of solutions suggest ways to install that library nonetheless. These proposals range from temporarily telling your system it's an 18.04 machine; to pointing to 18.04 repositories, and then switching back; and so on (e.g., Pulse-Secure-42721).
I prefer not to inter-mingle libraries on my machine. So I chose to install what was needed, not in my general load library locations, but instead only in a subfolder of /usr/local/pulse
, and then telling PulseSecure to look there. To do this I followed Tribuga:
cd /usr/local/pulse
sudo mkdir debs extra
# Get needed packages and store them in the debs/ folder
cd ./debs
sudo wget http://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu60_60.2-3ubuntu3_amd64.deb
sudo wget http://archive.ubuntu.com/ubuntu/pool/universe/w/webkitgtk/libjavascriptcoregtk-1.0-0_2.4.11-3ubuntu3_amd64.deb
sudo wget http://archive.ubuntu.com/ubuntu/pool/universe/w/webkitgtk/libwebkitgtk-1.0-0_2.4.11-3ubuntu3_amd64.deb
# Extract those just downloaded into the extra/ folder
cd ..
sudo dpkg -x debs/libicu60_60.2-3ubuntu3_amd64.deb ./extra
sudo dpkg -x debs/libjavascriptcoregtk-1.0-0_2.4.11-3ubuntu3_amd64.deb ./extra
sudo dpkg -x debs/libwebkitgtk-1.0-0_2.4.11-3ubuntu3_amd64.deb ./extra
# adjust your load library path
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pulse/extra/usr/lib/x86_64-linux-gnu/
My system already had libenchant1c2a
. If yours does not, install it with
sudo apt install libenchant1c2a
You're now good to go. However, again as in 1.-2. above, depending on how you launch PulseSecure pulseUi
generally, you might want to make your launch script aware of these new load libraries. The leading way of doing this by adjusting the invocation line. On some machines, I right-click PulseSecure
in my Apps Launcher and Edit Application
to change the command line to
/usr/bin/env LD_LIBRARY_PATH=/usr/local/pulse/extra/usr/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH /usr/local/pulse/pulseUi
On Ubuntu 20.04 more generally, navigate to /usr/share/applications
, and sudo
edit pulseUi.desktop
so its Exec
line is, as above,
/usr/bin/env LD_LIBRARY_PATH=/usr/local/pulse/extra/usr/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH /usr/local/pulse/pulseUi
References:
thanks !