Installing on OpenSUSE Tumbleweed

SundayDIY's profile image SundayDIY posted 1 month ago in Installation Permalink

Just wondering if HeidiSQL is supposed to be installable on OpenSUSE Tumbleweed.

I tried to install it but ran into dependency issues. Please see below:

user@localhost:~/Downloads> sudo zypper install ./heidisql-12.17-1.x86_64.rpm 
[sudo] password for root: 
'./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): c

The system is running the KDE Plasma DE.

I installed libQt6Pas6 with zypper, and the software seems to work now (at least for postgres. I haven't tested anything else).

zypper install libQt6Pas6

However, zypper seems to be unable to resolve the dependency automatically when it's fed the RPM, and the library it's looking for appears to be different.

Thanks in advance :)

ansgar's profile image ansgar posted 1 month ago Permalink

For Ubuntu up to 24.x I added a note on the download page for that missing libqt6pas, while I am not aware of other Linuxes wich do not yet have that in the repositories.

The rpm package is built with libqt6pas as a dependency: https://github.com/HeidiSQL/HeidiSQL/blob/b8313e5edc0fcda538ca64b2227edd5d80fb57d9/Makefile#L123

Do you have any recommendation for the end users getting the same issue? Should zypper be probably preferred over yum for the rpm install?

ansgar's profile image ansgar posted 1 month ago Permalink

An AI recommends:

If Tumbleweed cannot install Qt6, that’s a distro/repo issue: the user should first fix their system (e.g. sudo zypper dup, remove conflicting/old Qt6 from 3rd‑party repos, ensure the OSS repo with qt6-base is enabled) before installing HeidiSQL.

SundayDIY's profile image SundayDIY posted 1 month ago Permalink

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:

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

  2. Make a dedicated rpm package for OpenSUSE Tumbleweed with the dependency names that zypper expects.

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

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

SundayDIY's profile image SundayDIY posted 1 month ago Permalink

An AI recommends:

If Tumbleweed cannot install Qt6, that’s a distro/repo issue: the user should first fix their system (e.g. sudo zypper dup, remove conflicting/old Qt6 from 3rd‑party repos, ensure the OSS repo with qt6-base is enabled) before installing HeidiSQL.

I love using AI to help with various things, but I don't think that the AI response is very helpful here.

I was testing HeidiSQL on a nearly fresh install of Tumbleweed, with KDE Plasma installed, and most optional packages deselected during install. So QT6 was present, and there should have been no conflicting or old packages to cause issues.

Side note: Annoyingly, the AI kept trying to convince me to run HeidiSQL with Wine or to switch to a completely different database management product.

Please login to leave a reply, or register at first.