[MDEV-24677] libmysqlclient.so.21 missing for OL8 Created: 2021-01-25  Updated: 2021-03-05  Resolved: 2021-01-25

Status: Closed
Project: MariaDB Server
Component/s: N/A
Affects Version/s: 10.5.5, 10.5.6, 10.5.7, 10.5.8
Fix Version/s: N/A

Type: Bug Priority: Major
Reporter: Philippe Kueck Assignee: Sergei Golubchik
Resolution: Not a Bug Votes: 0
Labels: None
Environment:

Oracle Linux 8.3



 Description   

Some packages require libmysqlclient.so.21 which is solely provided by mysql 8.

Please include libmysqlclient.so.21 in MariaDB-compat to make mariadb a drop-in replacement for mysql.

$ dnf repoquery --whatrequires 'libmysqlclient.so.21()(64bit)' --qf '%{name}'
airinv
airrac
airtsp
icinga2-ido-mysql
mysql-devel
nagios-plugins-mysql
opentrep
postfix-mysql
preludedb-mysql
python3-mysqlclient
python3-opentrep
python3-rmol
python3-trademgen
rmol
sevmgr
simcrs
simfqt
soci-mysql
stdair
trademgen
travelccm
wgrib2
 
$ dnf whatprovides '*/libmysqlclient.so.21'
mysql-libs-8.0.17-3.module+el8.0.0+5253+1dce7bb2.x86_64 : The shared libraries required for MySQL clients
Repo        : ol8_appstream
Matched from:
Filename    : /usr/lib64/mysql/libmysqlclient.so.21
 
mysql-libs-8.0.21-1.module+el8.2.0+7793+cfe2b687.x86_64 : The shared libraries required for MySQL clients
Repo        : ol8_appstream
Matched from:
Filename    : /usr/lib64/mysql/libmysqlclient.so.21



 Comments   
Comment by Sergei Golubchik [ 2021-01-25 ]

Sources for libmysqlclient.so.21 are not in the mariadb repositories. It's Oracle product, just as, for example, MySQL Workbench is. You have to get it from Oracle.

Comment by Philippe Kueck [ 2021-01-25 ]

Hi Sergei, thanks for your reply.

So the packages from EPEL that are compiled against libmysqlclient.so.21 are not supposed to work with the MariaDB 10.5.x packages for EL8?

Even though I'm using Oracle Linux the issue probably affects all RHEL derivates, CentOS for example:

$ curl -sO http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/Packages/mysql-libs-8.0.21-1.module_el8.4.0+589+11e12751.x86_64.rpm
$ rpm -qp mysql-libs*rpm --provides |& grep libmysqlclient
libmysqlclient.so.21()(64bit)
libmysqlclient.so.21(libmysqlclient_21.0)(64bit)

To clarify:

EPEL and icinga2 packages are compiled using BuildRequires: mysql-devel, which is, at the moment, mysql 8.0.21. This way the binaries are linked against the mysql-provided libmysqlclient_21.0.
MariaDB does not provide this lib, so to use these EPEL/icinga2 packages I need to install mysql-libs/-common 8.0.21. These packages conflict with MariaDB.

So either MariaDB should provide libmysqlclient.so.21 to be compatible with mysql 8.0.21 included in RHEL/CentOS/OracleLinux/… 8, or MariaDB should choose other directories for its installation to avoid conflicts with mysql and to allow installing both MariaDB and mysql.

Comment by David Rees [ 2021-03-04 ]

I'm curious as to why this was closed without comment.

Digging around, I suppose the reason is here?
https://jira.mariadb.org/browse/MDEV-21430?focusedCommentId=142231&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-142231

The problem is, how is one supposed to use MariaDB as a drop-in replacement for mysql on CentOS 8 and variants when you have a package that requires libmysqlclient.so.21 ?

Comment by Sergei Golubchik [ 2021-03-05 ]

See the first comment in this issue — it's the issue closing comment.

Comment by David Rees [ 2021-03-05 ]

Thanks for responding. That makes sense. If that is the case, then we need to be able to install mysql-libs and MariaDB-libs side-by-side.

But mysql-libs requires mysql-common and mysql-common conflicts with MariaDB-common (files in /usr/share/mysql/charsets).

I ended up hacking around the issue by doing a force install of mysql-libs with nodeps. I'm not sure what issues would arise if MariaDB-libs moved files out of /usr/share/mysql/charsets to avoid conflicts...

Generated at Thu Feb 08 09:31:49 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.