• AnyStream is having some DRM issues currently, Netflix is not available in HD for the time being.
    Situations like this will always happen with AnyStream: streaming providers are continuously improving their countermeasures while we try to catch up, it's an ongoing cat-and-mouse game. Please be patient and don't flood our support or forum with requests, we are working on it 24/7 to get it resolved. Thank you.

Resolved [Ubuntu 1690] libmysqlclient.so.20 is long gone

Status
Not open for further replies.

0x0x0x0x0

Well-Known Member
Thread Starter
Joined
Sep 21, 2020
Messages
1,343
Likes
604
Latest AnyStream for Linux depends on libmysqlclient.so.20 (and it doesn't seem to have been manifested as a dependency, at least AS installed without complaining), Ubuntu 20 has replaced that with libmysqlclient.so.21; basically leaving the user with either rolling back or a tedious task of manually finding and installing the library. Welcome to Linux dependency hell (and they were taking the Mickey out of DLL-hell :ROFLMAO:)
 
Same issue here on Arch after updating to 1.6.9.0

"./AnyStream: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory"
 
Looks like a handful of database libraries got added as dependencies in 1.6.9.0... Seems like an odd thing for AS to need.

ldd /usr/bin/AnyStream | grep not\ found
libmysqlclient.so.20 => not found
libodbc.so.2 => not found
libpq.so.5 => not found
libsybdb.so.5 => not found

Gentoo also installs libmysqlclient.so.21 rather than 20. (not sure whether the symlink trick would work, because...) I'm also, having trouble finding a package to install libsybdb.so.5
 
So it seems AS 1.6.9.0 depends on libssl1.1 which is way outdated and shouldn't be used anymore @Pete

Temporary (but dangerous and scary) fix is by installing the ssl 1.1 dependencies manually from ubuntu archive:

Download them and start terminal.
--> cd Downloads
sudo dpkg -i libmysqlclient20_5.7.42-0ubuntu0.18.04.1_amd64.deb libssl1.1_1.1.1f-1ubuntu2.20_amd64.deb libssl-dev_1.1.1f-1ubuntu2.20_amd64.deb

For the other missing dependencies install with apt:
sudo apt install libpq-dev libsybdb5 libodbc2 libmysqlclient-dev

Try starting AS in terminal and look if some errors or still missing dependencies show up. If yes try sudo apt install *name of missing dependency*:

just type:
AnyStream

hope it helps for ppl that upgraded to newest version and doesn't start up at all terminating with silent errors in the background.


Startup report for AS developers:

$ AnyStream qt.network.ssl: Discarding errors: "error:25066067:DSO support routines:dlfcn_load:could not load the shared library, error:25070067:DSO support routines:DSO_load:could not load the shared library, error:0E07506E:configuration file routines:module_load_dso:error loading dso, error:0E076071:configuration file routines:module_run:unknown module name" terminate called without an active exception Caught SIGABRT: usually caused by an abort() or assert() Force exit
 
Last edited:
I gave up trying to install the dependencies for Gentoo and ended up running the program with Ubuntu inside of distrobox instead.

However, I did figure out a few things:

dev-db/freetds provides libsybdb.so.5.

symlinking libmysqlclient.so.20 to libmysqlclient.so.21 does not appear to work.
 
symlinking libmysqlclient.so.20 to libmysqlclient.so.21 does not appear to work.

Some thoughts on this.

What Symlinking Does in This Context​

  • Creating a Shortcut: By creating a symlink named libmysqlclient.so.20 that points to libmysqlclient.so.21, you're essentially telling any application that requests libmysqlclient.so.20 to use libmysqlclient.so.21 instead.
  • Bypassing the Missing Library Issue: Since your application is looking for libmysqlclient.so.20 and can't find it, the symlink tricks the application into using the newer version (libmysqlclient.so.21) that is present on your system.

Why It's Not Recommended​

  • Compatibility Issues: Different versions of a library can have different functionalities or ways of handling processes. If libmysqlclient.so.21 is not fully backward compatible with libmysqlclient.so.20, the application might behave unpredictably, crash, or not work at all.
  • Maintenance and Updates: When your system updates libmysqlclient.so.21, it might introduce changes that are incompatible with the expectations of an application that was designed for libmysqlclient.so.20. This can lead to further issues down the line.
  • Hidden Problems: Symlinking masks the underlying issue (the application depending on an outdated library) rather than resolving it. This can lead to more complex problems in the future, as the root cause is never addressed.
  • Security Risks: Using outdated libraries can pose security risks, especially if they contain unpatched vulnerabilities. Symlinking to an older version might expose your system to these risks.

When You Might Consider It​

  • Last Resort: If you've exhausted all other options (like updating the application, installing the old library correctly, using a container, etc.), and you urgently need the application to run, symlinking can be a temporary workaround.
  • Controlled Environments: In a controlled or testing environment where you can closely monitor the application's behavior and where security risks are minimized, symlinking can be a useful tool for troubleshooting or temporary usage.
 
To add my experience to this. I get the same error trying to install on a Fedora 38 based distro:

Error:
Problem: conflicting requests
- nothing provides libmysqlclient.so.20()(64bit) needed by AnyStream-1.6.9.0-1.x86_64 from @commandline
- nothing provides libmysqlclient.so.20(libmysqlclient_20.0)(64bit) needed by AnyStream-1.6.9.0-1.x86_64 from @commandline
 
Status
Not open for further replies.
Back
Top