desktop
desktop copied to clipboard
Client not compatible with Ubuntu 24.10 (oracular) and 25.04 (plucky)
Hey folks!
I'm getting the following error when trying to run the PIA client on Ubuntu 24.10:
./pia-client: /opt/piavpn/bin/../lib/libQt6Core.so.6: version 'Qt_6.6' not found (required by /usr/lib/x86_64-linux-gnu/libQt6OpenGL.so.6)
./pia-client: /opt/piavpn/bin/../lib/libQt6Core.so.6: version 'Qt_6.6' not found (required by /usr/lib/x86_64-linux-gnu/libQt6QuickTemplates2.so.6)
./pia-client: /opt/piavpn/bin/../lib/libQt6Core.so.6: version 'Qt_6.6' not found (required by /usr/lib/x86_64-linux-gnu/libQt6DBus.so.6)
The issue appears to be that the client requires QT 6.4 exactly (which is what Ubuntu 24.04 noble has as standard), so attempting to install on systems with newer versions of QT fail.
Using the qt6-base-dev package as a benchmark, here are the QT6 versions for all current Ubuntu versions...
Jammy (22.04 LTS): QT 6.2.4: https://packages.ubuntu.com/jammy/qt6-base-dev Noble (24.04 LTS): QT 6.4.2: https://packages.ubuntu.com/noble/qt6-base-dev Oracular (24.10): QT 6.6.2: https://packages.ubuntu.com/oracular/qt6-base-dev Plucky (25.04): QT 6.8.1: https://packages.ubuntu.com/plucky/qt6-base-dev
I know 25.04 Plucky is still not officially released, but I did include it for reference as the QT version is paired with the planned KDE 6.3 desktop package. Which presents a challenge in that Ubuntu users using KDE in 24.10 and 25.04 can not downgrade QT to a version compatible with the current PIA client.
Hello there! pia-desktop comes with Qt embedded in the install, it shouldn't be using or expecting any specific version from the OS. I just installed and run PIA on a fresh ubuntu 24.10 install without any issue. Could you add more details about the system or how to reproduce?
Hey, thanks for responding and sorry for the delay! It took a while to consistently reproduce this issue. I'm attaching 2 files in a .zip here - a dockerfile and docker compose file.
Instructions for local Docker deployment:
- Drop these in the same folder
- Update the docker compose file line 35 to your local IP address
- Run
docker compose -f docker-compose-ubuntu.yml up -d --build --force-recreateto deploy the container - Once it is up and running, you can access the desktop via http://localhost:8080
The as-posted version will work fine.
To reproduce the issue:
- Open the Dockerfile and uncomment (delete the
#) lines 91-118. This will perform a dist upgrade from 24.04 (the base) to 24.10 on the base image. - Repeat steps 3-4 above to rebuild and re-deploy the image.
You will see the PIA client no longer loads, and you can see the error details if you attempt to launch the PIA client via BaSH (/opt/piavpn/bin/pia-client if I recall the path correctly), however you should still be able to establish a VPN connection via the CLI.
Note: You can comment/uncomment lines 91-118 in the dockerfile as desired. When commented out, the deployed container will be Ubuntu 24.04 and the PIA client will run . When uncommented, the deployed container will be Ubuntu 24.10 and the PIA client will not run. The Ubuntu version can be confirmed by running lsb_release -a in a terminal window.
Right! But then the problem may not be an Ubuntu 24.10 issue, but a specific situation with the docker environment.
The client should not be loading the system's QtOpengl lib at /usr/lib/x86_64-linux-gnu/libQt6OpenGL.so.6, but /opt/piavpn/lib/libQt6OpenGL.so.6 instead.
Could you try to fix this by modifying the PATH so the client will load the embedded libraries?
Something like:
PATH="/opt/piavpn/lib:${PATH}" /opt/piavpn/bin/pia-client
Unfortunately I cannot test your example as it seems depends on nvidia hardware.
Thanks again for the reply! I might have accidentally left the engine reference in the compose file, but it should be able to be run without a nvidia (or any) GPU. But anyways...
Your suggest sadly didn't work, but it was pretty darn close! It's not the PATH that needed to be updated, but the LD_LIBRARY_PATH. So LD_LIBRARY_PATH="/opt/piavpn/lib:${LD_LIBRARY_PATH}" /opt/piavpn/bin/pia-client got the client to run fine.
Once I figured that out, I updated my dockerfile to update the PIA desktop shortcut, and that now works as well. Here is the sed command:
sed -i "s|Exec=env XDG_SESSION_TYPE=X11 /opt/piavpn/bin/pia-client %u|Exec=env 'LD_LIBRARY_PATH=/opt/piavpn/lib:${LD_LIBRARY_PATH}' /opt/piavpn/bin/pia-client %u|" /usr/share/applications/piavpn.desktop
Here is what my now-working /usr/share/applications/piavpn.desktop file looks like:
Type=Application
Name=Private Internet Access
Comment=Private Internet Access VPN client
Path=/opt/piavpn/bin/
Exec=env 'LD_LIBRARY_PATH=/opt/piavpn/lib:${LD_LIBRARY_PATH}' /opt/piavpn/bin/pia-client %u
Icon=piavpn
Terminal=false
Categories=Network
StartupWMClass=pia-client
MimeType=x-scheme-handler/piavpn
This causes the client to prioritize the libraries found inside the PIA lib folder, which is the desired behavior. It will only look to the other system library locations if a library is needed that is not included in the PIA library location. It might not be a bad idea to update this in the standard shortcut that the installer creates.
Ah, you are absolutely right, I should have said LD_LIBRARY_PATH.
What surprises me here is that it would be loading the system libs on that ubuntu version in the first place. Our install is set up to look for the libraries in its own /lib directory first, so this should not happen. I believe either something in the new ubuntu version and/or your dockerfile/compose environment is setting LD_LIBRARY_PATH as well, forcing pia to load system libraries first.