Skip to content

Instantly share code, notes, and snippets.

What would you like to do?

Disclaimer: This gist is a bit outdated now. The client download page now redirects to a login page that the downloads are guarded behind. You'll want to do a web search for a pulse secure deb file and install that now. Try: When I installed Pulse Secure 9.1R13, I didn't need to do anything else to get it working.

9.1R13 download:

To install Pulse Secure for Ubuntu 20.04, it is a bit complicated since the support isn't great.

First, we'll want to go through the form at You'll get an email with download links to the latest versions of pulse secure. Download the Linux one with the deb file and then you can install it using dpkg from your downloads folder.

$ cd ~/Downloads
$ sudo dpkg -i ps-pulse-linux-[your-pulse-version]-ubuntu-debian-64-bit-installer.deb

Now, we'll want to go into the pulse directory and install the dependencies. We update the shell script file first to recognize Ubuntu 20.

$ cd /usr/local/pulse/
$ sudo sed -i "s/UBUNTU_VER\ \=\ 18\ \]/& \|\|\ [\ \$UBUNTU_VER\ \=\ 20 \]/"
$ ./ install_dependency_packages
$ sudo apt-get install libenchant1c2a

Next, we'll want to create an extras and debs folder inside the pulse folder.

$ sudo mkdir /usr/local/pulse/extra
$ sudo mkdir /usr/local/pulse/debs   

Then we'll want to download the following debs into /usr/local/pulse/debs/.

$ cd /usr/local/pulse/debs
$ sudo wget
$ sudo wget
$ sudo wget

Next we will extract the debs into the extras folder.

$ cd /usr/local/pulse/extra
$ sudo dpkg -x /usr/local/pulse/debs/libicu60_60.2-3ubuntu3_amd64.deb .
$ sudo dpkg -x /usr/local/pulse/debs/libjavascriptcoregtk-1.0-0_2.4.11-3ubuntu3_amd64.deb .
$ sudo dpkg -x /usr/local/pulse/debs/libwebkitgtk-1.0-0_2.4.11-3ubuntu3_amd64.deb .

Then we'll want to add the library path to our shell startup file and for convience, the pulse secure command can be aliased as well. Likely .bashrc if you're using bash or .zshrc if zsh.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pulse/extra/usr/lib/x86_64-linux-gnu/
alias vpn=/usr/local/pulse/pulseUi

By default, pulse secure will have its output go directly to the terminal from which you ran it from. If you'd like to keep those separate and detach the program from the terminal when you run it, you can instead create the following alias: alias vpn="nohup /usr/local/pulse/pulseUi >| ~/.pulse_secure/pulse/pulse-output.log &" (thanks @GreyCardinal!)

Lastly, we want to make sure to source that same shell startup file e.g. source ~/.bashrc so the changes are loaded. We can then startup the client.

$ vpn

If you get disconnected and the GUI is stuck in a "reconnecting" status, you can use pulsesvc -K to kill the process.


Copy link

@miedzikd You can find downloads for it hosted on other sites if needed by doing a web search. For example:

Copy link

I faced the [: =: unary operator expected error on my Pop!_OS 20.04 and thanks to the link @eugenetriguba posted above I was able to make it finally work.
Keep in mind you need to replace OSNAME=$(lsb_release -d | grep -o "Ubuntu") to OSNAME=$(lsb_release -d | grep -o "Ubuntu\|Pop")
in both tmp/DEBIAN/postinst and /usr/local/pulse/ files

Copy link

@eugenetriguba I downloaded pulse secure deb file from your google drive and installed it. But when I type cd /usr/local/pulse/ in the terminal, I'm getting following error. Please help me to sort this out.
bash: cd: /usr/local/pulse/: No such file or directory

Copy link

@gihandilanka-github They put their files in /opt/pulsesecure. With newer versions, you'll want to make sure you also have their pulsesecure systemd service running as well.

Copy link

Thank you so much buddy, you made my day.

Copy link

songsfromthewood commented Aug 16, 2022

There is an article with version 22.2.R1 of PulseUI

Link to the deb package from article:

I've tried it and it work for me.

Copy link

Have you considered to use NetworkManager+Openconnect plugin ?
It works fine for me, no need for 3PP SW.

Copy link

Have you considered to use NetworkManager+Openconnect plugin ? It works fine for me, no need for 3PP SW.

Tried console client today. Works with additional parameter --protocol=pulse
Will try with networkmanager tomorrow

Copy link

Have you considered to use NetworkManager+Openconnect plugin ? It works fine for me, no need for 3PP SW.

NetworkManager+Openconnect works.

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