Do you have any recommendation for the end users getting the same issue? Should zypper be probably preferred over yum for the rpm install?
It's weird because:
Problem: 1: nothing provides 'libQt6Core.so.6' needed by the to be installed heidisql-12.17-1.x86_64
While:
user@localhost:~/Downloads> zypper search --provides libQt6Core.so.6
Loading repository data...
Reading installed packages...
S | Name | Summary | Type
---+-------------+-------------------+--------
i | libQt6Core6 | Qt 6 Core library | package
user@localhost:~/Downloads> sudo zypper install libQt6Core6
Loading repository data...
Reading installed packages...
'libQt6Core6' is already installed.
No update candidate for 'libQt6Core6-6.11.0-2.2.x86_64'. The highest available version is already installed.
Resolving package dependencies...
Nothing to do.
If we try to force install it with zypper, zypper appears to start hallucinating:
user@localhost:~/Downloads> sudo zypper install ./heidisql-12.17-1.x86_64.rpm
'./heidisql-12.17-1.x86_64.rpm' looks like an RPM file. Will try to use it.
Loading repository data...
Reading installed packages...
Resolving package dependencies...
Problem: 1: nothing provides 'libQt6Core.so.6' needed by the to be installed heidisql-12.17-1.x86_64
Solution 1: do not install heidisql-12.17-1.x86_64
Solution 2: break heidisql-12.17-1.x86_64 by ignoring some of its dependencies
Choose from above solutions by number or cancel [1/2/c/d/?] (c): 2
Resolving dependencies...
Resolving package dependencies...
The following recommended package was automatically selected:
glibc-gconv-modules-extra-32bit
The following 40 NEW packages are going to be installed:
glibc-32bit glibc-gconv-modules-extra-32bit heidisql krb5-32bit libbrotlicommon1-32bit libbrotlidec1-32bit libcom_err2-32bit libcurl4-32bit
libffi8-32bit libgmp10-32bit libgnutls30-32bit libhogweed6-32bit libidn2-0-32bit libjitterentropy3-32bit libkeyutils1-32bit libldap2-32bit
libleancrypto1-32bit libmariadb3-32bit libnettle8-32bit libnghttp2-14-32bit libnghttp3-9-32bit libngtcp2-16-32bit libngtcp2_crypto_ossl0-32bit
libopenssl3-32bit libp11-kit0-32bit libpcre2-8-0-32bit libpq5-32bit libpsl5-32bit libsasl2-3-32bit libselinux1-32bit libsqlite3-0-32bit
libssh4-32bit libsybdb5-32bit libtasn1-6-32bit libunistring5-32bit libverto1-32bit libz1-32bit libzstd1-32bit nss-mdns-32bit samba-client-32bit
40 new packages to install.
Package download size: 20.2 MiB
Package install size change:
| 54.5 MiB required by packages that will be installed
54.5 MiB | - 0 B released by packages that will be removed
Backend: classic_rpmtrans
Continue? [y/n/v/...? shows all options] (y): n
So I downloaded the pre-compiled build for amd64+qt6, and tried to run it:
user@localhost:~/Downloads/heidi/build-qt6-12.17> ./heidisql
./heidisql: error while loading shared libraries: libQt6Pas.so.6: cannot open shared object file: No such file or directory
At this stage sudo zypper install libQt6Pas6 was the magic fix to make the non-rpm, precompiled version, work. But I couldn't get zypper to install the packaged rpm at all.
The rpm file includes these deps. I think somewhere, something isn't geared for Tumbleweed:
user@localhost:~/Downloads> rpm -qpR heidisql-12.17-1.x86_64.rpm
libQt6Core.so.6
libQt6Gui.so.6
libQt6Pas.so.6
libQt6Widgets.so.6
libmariadb.so.3
libpq.so.5
libsqlite3.so.0
libssl.so.3
libsybdb.so.5
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Dep checks can be entirely bypassed using: sudo rpm -ivh --nodeps ./heidisql-12.17-1.x86_64.rpm. The package then installs blindly. The pascal binding library from above is still necessary, though. But the rpm installs this way.
I don't have any experience with building rpm packages, so I am not much help here. With that said, the way I see it, these are our options:
-
Add a section to the docs for OpenSUSE Tumbleweed specifically, and advise to install libQt6Pas6.
Keep in mind that my Tumbleweed install includes KDE which may already have other required libraries. So it's possible that someone with a non-KDE install might need to install other dependencies. I'm not sure. I can do a test run with a non-KDE install of Tumbleweed if you think it would be helpful.
-
Make a dedicated rpm package for OpenSUSE Tumbleweed with the dependency names that zypper expects.
-
Create a repository for OpenSUSE (and maybe other rpm based distros) for users to be able to install the package that way. This would be really nice for updating in the future, but it's more work for the maintainer.
-
Maybe there is a way to change the rpm so that it works on both Tumbleweed and other rpm based distros?
Hope this helps. I'm happy to help with testing.
To answer your question directly, I think it would be great if it were possible to install the rpm using zypper, as it typically installs all dependencies for you. It's just not working in this case for some reason. But hopefully this can be resolved. Using zypper over rpm should remove the need to manually hunt for dependencies and installing them separately from the application package.