Why is Percona-Server-shared-compat-57 a dependency of Percona-Server-client-57?

Hello,

We’re running Percona 5.7 on RHEL 8. When using dnf to install Percona from the yum repos, it wants to install Percona-Server-shared-compat-57.

$ sudo dnf install Percona-Server-server-57
Last metadata expiration check: 0:29:39 ago on Tue 22 Aug 2023 05:19:02 PM UTC.
Dependencies resolved.
================================================================================
 Package                   Arch   Version          Repository              Size
================================================================================
Installing:
 Percona-Server-server-57  x86_64 5.7.43-47.1.el8  percona-release-x86_64  31 M
Installing dependencies:
 Percona-Server-client-57  x86_64 5.7.43-47.1.el8  percona-release-x86_64 7.7 M
 Percona-Server-shared-57  x86_64 5.7.43-47.1.el8  percona-release-x86_64 817 k
 Percona-Server-shared-compat-57
                           x86_64 5.7.43-47.1.el8  percona-release-x86_64 1.2 M
 compat-openssl10          x86_64 1:1.0.2o-4.el8_6 appstream              1.1 M
 libaio                    x86_64 0.3.112-1.el8    baseos                  31 k

Transaction Summary
================================================================================
Install  6 Packages

Total size: 42 M
Installed size: 43 M

According to the install guide:

The Percona-Server-shared-compat package includes shared libraries for software compiled against older versions of the client library. The following libraries are included in this package: libmysqlclient.so.12, libmysqlclient.so.14, libmysqlclient.so.15, libmysqlclient.so.16, and libmysqlclient.so.18.

I understand why Percona would provide a package with these libraries, but why make it a dependency rather than instruct those using older mysql clients to opt into installing it?

Would you rather have 1,000 people install your software and it just works out of the box, or have 1,000 people opening support tickets asking why the latest version of Percona Server doesn’t work on their system? :wink:

If you don’t need it, you can remove it. rpm -e --nodeps

If you don’t need it, you can remove it. rpm -e --nodeps

If I remove it, won’t it just get reinstalled the next time Percona updates?

Probably. It’s not hurting anything to leave it there and not causing any other impact.

Side note, you do know that 5.7 dies in 40 days right? I’m hoping that this testing is prep for upgrade to 8.0 :slight_smile:

Probably. It’s not hurting anything to leave it there and not causing any other impact.

Well, it installs the compat-openssl10 package, which is affected by a number of CVEs right now. I know we’d only be affected by these CVEs if we were using a MySQL client that requires these older libraries, but it would be nice to have an easy, elegant way to remove the compatibility packages to keep our vulnerability scanner from complaining.

Side note, you do know that 5.7 dies in 40 days right? I’m hoping that this testing is prep for upgrade to 8.0 :slight_smile:

Yes! In fact you provided a very useful answer in another thread I opened regarding upgrading: InnoDB assertion failure crash when altering then optimizing table after upgrade from MySQL 5.7 to 8.0 - #6 by matthewb

But the MySQL 8 version of this compatibility package will also be installed as a dependency of the MySQL 8 version of the client. I just used 5.7 as an example since that’s the version my test VM happened to have installed when I started this thread.

I don’t think that’s correct. This is a RHEL9 system that I installed 8.0 on just two days ago. No compat packages here:

[root@db06-a data]# rpm -qa | grep -i percona
percona-release-1.0-27.noarch
percona-server-shared-8.0.33-25.1.el9.x86_64
percona-server-client-8.0.33-25.1.el9.x86_64
percona-icu-data-files-8.0.33-25.1.el9.x86_64
percona-server-server-8.0.33-25.1.el9.x86_64
percona-xtrabackup-80-8.0.34-29.1.el9.x86_64
percona-toolkit-3.5.4-2.el9.x86_64

[root@db06-a data]# rpm -qa | grep -i compat
libxcrypt-compat-4.4.18-3.el9.x86_64
polkit-pkla-compat-0.1-21.el9.x86_64
openldap-compat-2.6.2-3.el9.x86_64

[root@db06-a data]# rpm -qa | grep -i openssl
xmlsec1-openssl-1.2.29-9.el9.x86_64
openssl-libs-3.0.7-16.el9_2.x86_64
openssl-3.0.7-16.el9_2.x86_64

I just spun up a fresh Rocky 8 VM to check myself. When installing percona-server-server, the compat packages did get installed:

[vagrant@percona2 ~]$ rpm -qa | grep -i percona
percona-server-shared-compat-8.0.33-25.1.el8.x86_64
percona-icu-data-files-8.0.33-25.1.el8.x86_64
percona-server-shared-8.0.33-25.1.el8.x86_64
percona-server-server-8.0.33-25.1.el8.x86_64
percona-toolkit-3.5.4-2.el8.x86_64
percona-server-client-8.0.33-25.1.el8.x86_64
percona-xtrabackup-80-8.0.34-29.1.el8.x86_64
[vagrant@percona2 ~]$ rpm -qa | grep -i compat
polkit-pkla-compat-0.1-12.el8.x86_64
percona-server-shared-compat-8.0.33-25.1.el8.x86_64
compat-openssl10-1.0.2o-4.el8_6.x86_64
ncurses-compat-libs-6.1-9.20180224.el8.x86_64

The documentation does say this:

This package is not included in downloads for Red Hat Enterprise Linux 9 and derivatives.

Confirmed by spinning up a Rocky 9 VM and installing percona-server-server. Neither the percona compat package nor the openssl compat package were pulled in as dependencies:

[vagrant@localhost ~]$ rpm -qa | grep -i percona
percona-server-shared-8.0.33-25.1.el9.x86_64
percona-server-client-8.0.33-25.1.el9.x86_64
percona-icu-data-files-8.0.33-25.1.el9.x86_64
percona-server-server-8.0.33-25.1.el9.x86_64
[vagrant@localhost ~]$ rpm -qa | grep -i compat
libxcrypt-compat-4.4.18-3.el9.x86_64
openldap-compat-2.6.2-3.el9.x86_64
polkit-pkla-compat-0.1-21.el9.x86_64