How to install Corel AfterShot Pro 3 on Fedora 32

Corel hasn’t been maintaining its Linux distribution packages of AfterShot Pro 3 too well. It gave me trouble installing the RPM from the AfterShot website on a recent version of Fedora Linux. Here’s how I got the software up and running on Fedora 32.

This article is divided into two parts: Part one is step-for-step instructions for how to install AfterShot Pro 3 on Fedora 32. The instructions might work for other recent versions as well. In the second part, I’ll explain in more detail about how I came up with the step-for-step instructions.

Installing AfterShot Pro 3

The first step is to install the RPM package from Corel’s website. It depends on some specific outdated library versions. We’ll install the RPM, but ignore its dependencies. The following command downloads, and installs the RPM without its dependencies:

rpm -ivh --nodeps https://dwnld.aftershotpro.com/trials/3/AfterShotPro3.rpm

The RPM installs into /opt/AfterShot3\(64-bit\)/. The AfterShot binary is dynamically linked, but the installation includes dozens of outdated libraries that don’t play well with current versions of Fedora. We’ll move all those old libraries — except one proprietary library that is specific to AfterShot — out of the way first. The following commands does make these changes happen:

cd /opt/AfterShot3\(64-bit\)/lib/
mkdir ./backup/
mv ./* ./backup/
mv ./backup/libbibblesdk.so.5 ./

Now that the outdated libraries are out of the way, it’s time to fetch some newer versions from the Fedora library. The following command installs all the libraries AfterShot Pro 3 requires:

dnf install \
      libglvnd-glx \
      libICE libSM \
      libXcomposite \
      libXext \
      libXi \
      libsecret \
      ocl-icd \
      compat-openssl10 \
      libgpg-error \
      qt \
      qt5-designer \
      qt5-qtmultimedia \
      qt5-qtbase \
      qt5-qtbase-gui \
      qt5-qtsvg \
      qt5-qtwebkit \
      qtkeychain-qt5

AfterShot 3 also bundles its own Qt configuration file that causes some problems. It’s not needed, so we’ll simply move it out of the way with the following command:

cd /opt/AfterShot3\(64-bit\)/bin/
my ./qt.conf ./qt.conf.backup

That’s it! You should be able to run AfterShot 3 now. Continue reading if you want to learn more about how I came up with these instructions.

How I found the required libraries

Out-of-repository RPM (and DEB) installation packages tend to get outdated very fast. Out-of-repository software vendors — whether they be proprietary or open source — can keep their packages current a bit longer by shipping statically linked binaries that contain all their dependencies. Corel has done something in between and created a mess in the process.

Luckily, it’s not impossible to work around issues like this. As long as the binary dynamically loads libraries from the system, we can get it to have it run newer versions. The first step in this instance was to look at the bundled libraries and install them through the system’s package manager.

However, the RPM also wanted the system to install additional dependencies. You can get a list of these dependencies by inspecting the RPM using the following command:

rpm -qpR https://dwnld.aftershotpro.com/trials/3/AfterShotPro3.rpm

That still wasn’t enough to get AfterShot to run, though. It also had some additional undeclared and unbundled dependencies. I completed the list by inspecting the binary to see what libraries it needed to load:

ldd /opt/AfterShot3\(64-bit\)/bin/AfterShot

At this point, I had almost all the dependencies. That’s the one library we copied back out of the backup directory and into the library directory. That specific library is AfterShot-specific.

Fixing the last problem

When I tried to start AfterShot, I ran into one last problem:

“Fatal: This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.”

This is a common error for Qt applications. AfterShot bundles its own qt.conf file that referenced a non-existent directory path. That directory path now resides inside the backup directory I’d created earlier. Rather than updating the reference, I just moved AfterShot’s configuration file aside. It didn’t do any good, anyway.