Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save DannyQuah/44df50362677ce7eb2c6fe1546dbef72 to your computer and use it in GitHub Desktop.
Save DannyQuah/44df50362677ce7eb2c6fe1546dbef72 to your computer and use it in GitHub Desktop.
Pulse Secure Client on Ubuntu Linux

Pulse Secure Client on Ubuntu Linux

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).

  1. On one of my systems, doing this:
sudo apt install libproxy1-plugin-webkit
sudo apt install libwebkitgtk-1.0

sufficed.

  1. 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.

  1. 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:

  1. UWO.ca
  2. Tribuga
  3. Pulse-Secure-42721
@R4YM3
Copy link

R4YM3 commented Jun 14, 2021

When I try sudo dpkg -i ps-pulse-linux-9.1r11.4-b8575-64-bit-installer.deb and after install go to /user/local then the folder pulse does not exist. Do i have a new version which doesn't work with this fix? I am on Ubuntu 20.04.
Any help would be greatly appreciated

@d2a-raudenaerde
Copy link

d2a-raudenaerde commented Dec 2, 2021

I recently switched (on Ubuntu 21.10) to use the NetworkManager-openconnect VPN plugin. Works like a charm!
See https://wiki.gnome.org/Projects/NetworkManager/VPN and https://gitlab.gnome.org/GNOME/NetworkManager-openconnect

sudo apt install network-manager-openconnect
sudo apt install network-manager-openconnect-gnome 

@AsmaaSamyMohamedMahmoud

@R4YM3 did you solve it ? I have the same issue. There is no pulse folder in /usr/local
I am on Ubuntu 20.04 as well.

@DannyQuah
Copy link
Author

@R4YM3 @AsmaaSamyMohamedMahmoud - I'm not sure why that first dpkg didn't put things in /usr/local (never intended for /user/local, that must have been a typo in @R4YM3 's comment). Perhaps one of your ENV variables redirected dpkg output elsewhere in your filesystem; there's no way for me to tell. But you can try doing a find -L to see. You'll notice others have installed this or subsequent versions successfully on 20.04 and 20.10

@babaMar
Copy link

babaMar commented Feb 22, 2023

Does anyone know where I can get the pulse-9.1R5.x86_64.deb package?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment