Bug #21341 Shared compatibilty library RPMs are incomplete (4.1.21)
Submitted: 29 Jul 2006 14:24 Modified: 4 Aug 2006 19:37
Reporter: [ name withheld ] Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Packaging Severity:S2 (Serious)
Version:4.1.21 OS:Any (all Linux)
Assigned to: Joerg Bruehe CPU Architecture:Any

[29 Jul 2006 14:24] [ name withheld ]
Description:
The shared compatibility libraries available for download on this page:

http://dev.mysql.com/downloads/mysql/4.1.html

Appear to be incomplete. I tested this using the RPMs from the "Red Hat Enterprise Linux 3 RPM (x86) downloads" section, but judging from the file sizes reported for other platforms it appears that in all cases the "shared compatibility libraries" are identical to the standard "shared libraries".

This is a serious problem because anything that depends on the older shared libraries will cease to function, resulting in a denial of service. In my case I noticed the problem when Apache refused to restart:

"Cannot load /etc/httpd/modules/mod_auth_mysql.so into server: libmysqlclient.so.10: cannot open shared object file: No such file or directory"

To see the cause of the problem, compare the file sizes of the following RPMs (for the previous version, 4.1.20):

1663373 MySQL-shared-compat-4.1.20-0.rhel3.i386.rpm
1183446 MySQL-shared-standard-4.1.20-0.rhel3.i386.rpm

Note that the shared compatibility variant is significantly larger, because it contains the older compatibility versions of the shared libraries. But look at the file sizes for version 4.1.21 below, and note that the compatibility variant is actually a few bytes smaller!

1173276 MySQL-shared-compat-4.1.21-0.rhel3.i386.rpm
1184092 MySQL-shared-standard-4.1.21-0.rhel3.i386.rpm

Here is a listing of the contents of the 4.1.21 compatibility RPM, produced using "rpm -q --dump --package":

/usr/lib/libmysqlclient.so 24 1153391670 00000000000000000000000000000000 0120777 root root 0 0 1793 libmysqlclient.so.14.0.0
/usr/lib/libmysqlclient.so.14 24 1153391670 00000000000000000000000000000000 0120777 root root 0 0 2560 libmysqlclient.so.14.0.0
/usr/lib/libmysqlclient.so.14.0.0 1174404 1153391671 042ee1c839ea36cbdb8c322319b2880b 0100755 root root 0 0 1792 X
/usr/lib/libmysqlclient_r.so 26 1153391670 00000000000000000000000000000000 0120777 root root 0 0 18692 libmysqlclient_r.so.14.0.0
/usr/lib/libmysqlclient_r.so.14 26 1153391670 00000000000000000000000000000000 0120777 root root 0 0 18700 libmysqlclient_r.so.14.0.0
/usr/lib/libmysqlclient_r.so.14.0.0 1182664 1153391671 a7dbf18b56a1b1f6313d954d2d63398a 0100755 root root 0 0 0 X

And note that it is almost identical to the contents of the non-compatibility RPM:

/usr/lib/libmysqlclient.so 24 1153331468 00000000000000000000000000000000 0120777 root root 0 0 35523 libmysqlclient.so.14.0.0
/usr/lib/libmysqlclient.so.14 24 1153331468 00000000000000000000000000000000 0120777 root root 0 0 12627 libmysqlclient.so.14.0.0
/usr/lib/libmysqlclient.so.14.0.0 1180748 1153333472 96ca3a562098a4f8e4b2c70490b5071b 0100755 root root 0 0 0 X
/usr/lib/libmysqlclient_r.so 26 1153331468 00000000000000000000000000000000 0120777 root root 0 0 0 libmysqlclient_r.so.14.0.0
/usr/lib/libmysqlclient_r.so.14 26 1153331468 00000000000000000000000000000000 0120777 root root 0 0 16991 libmysqlclient_r.so.14.0.0
/usr/lib/libmysqlclient_r.so.14.0.0 1189008 1153333474 b51c25cb41e28d6eaeebf818ab7b3a33 0100755 root root 0 0 12696 X

Compare this with version 4.1.20 of the compatibility libraries, and note that they contain more files:

/usr/lib/libmysqlclient.so 24 1148687703 00000000000000000000000000000000 0120777 root root 0 0 0 libmysqlclient.so.14.0.0
/usr/lib/libmysqlclient.so.10 24 1148687704 00000000000000000000000000000000 0120777 root root 0 0 0 libmysqlclient.so.10.0.0
/usr/lib/libmysqlclient.so.10.0.0 224606 1148687704 579c6fecfad48cb3e8748811026f4890 0100755 root root 0 0 0 X
/usr/lib/libmysqlclient.so.12 24 1148687703 00000000000000000000000000000000 0120777 root root 0 0 0 libmysqlclient.so.12.0.0
/usr/lib/libmysqlclient.so.12.0.0 251559 1148687703 2fae279de1a3929b178d89333103eacc 0100755 root root 0 0 0 X
/usr/lib/libmysqlclient.so.14 24 1148687703 00000000000000000000000000000000 0120777 root root 0 0 0 libmysqlclient.so.14.0.0
/usr/lib/libmysqlclient.so.14.0.0 1174404 1148687704 3321ec4c92a8aa37869f45ae461d6a0b 0100755 root root 0 0 0 X
/usr/lib/libmysqlclient_r.so 26 1148687703 00000000000000000000000000000000 0120777 root root 0 0 0 libmysqlclient_r.so.14.0.0
/usr/lib/libmysqlclient_r.so.10 26 1148687704 00000000000000000000000000000000 0120777 root root 0 0 0 libmysqlclient_r.so.10.0.0
/usr/lib/libmysqlclient_r.so.10.0.0 230560 1148687704 f358f523cb4a364eb8105d9a0f49f943 0100755 root root 0 0 17384 X
/usr/lib/libmysqlclient_r.so.12 26 1148687703 00000000000000000000000000000000 0120777 root root 0 0 0 libmysqlclient_r.so.12.0.0
/usr/lib/libmysqlclient_r.so.12.0.0 259501 1148687703 ab26ebef4759527211545190ccedebb5 0100755 root root 0 0 0 X
/usr/lib/libmysqlclient_r.so.14 26 1148687703 00000000000000000000000000000000 0120777 root root 0 0 0 libmysqlclient_r.so.14.0.0
/usr/lib/libmysqlclient_r.so.14.0.0 1182664 1148687704 975c049c8d71a123c30392fdb182cf98 0100755 root root 0 0 0 X

How to repeat:
Download the RPMs from http://dev.mysql.com/downloads/mysql/4.1.html

Perform comparisons using "rpm -q --dump --package full-name-of.rpm"

Suggested fix:
Workaround:

Go back to 4.1.20:

Permanent fix:

Repackage the RPM files for 4.1.21 so that they contain missing files.
[29 Jul 2006 16:32] Valeriy Kravchuk
Thank you for a bug report. Verified just as described (with yet another RPM):

$ rpm -q --dump --package MySQL-shared-compat-4.1.21-0.i386.rpm
warning: MySQL-shared-compat-4.1.21-0.i386.rpm: V3 DSA signature: NOKEY, key ID
5072e1f5
/usr/lib/libmysqlclient.so 24 1153392656 00000000000000000000000000000000 012077
7 root root 0 0 0 libmysqlclient.so.14.0.0
/usr/lib/libmysqlclient.so.14 24 1153392656 00000000000000000000000000000000 012
0777 root root 0 0 0 libmysqlclient.so.14.0.0
/usr/lib/libmysqlclient.so.14.0.0 1402629 1153392656 070159098f2f510751a223b7d71
975de 0100755 root root 0 0 0 X
/usr/lib/libmysqlclient_r.so 26 1153392656 00000000000000000000000000000000 0120
777 root root 0 0 0 libmysqlclient_r.so.14.0.0
/usr/lib/libmysqlclient_r.so.14 26 1153392656 00000000000000000000000000000000 0
120777 root root 0 0 0 libmysqlclient_r.so.14.0.0
/usr/lib/libmysqlclient_r.so.14.0.0 1410570 1153392656 319bbbe450341c67f9ec03ee0
b87262e 0100755 root root 0 0 0 X

Looks like there are no older libraries included, really.
[3 Aug 2006 16:23] Joerg Bruehe
Done.

New "shared-compat" RPMs of 4.1.21 have been created as "release 1" (RPM),
so the file names are like this:

MySQL-shared-compat-4.1.21-1.<platform>.rpm

They should now propagate through the mirrors, the download page will be switched when propagation is ok.
The old, broken ones (MySQL-shared-compat-4.1.21-0.*.rpm), have been removed from the publishing space, they should automatically disappear from the mirrors.
[4 Aug 2006 19:37] [ name withheld ]
Did a test with the new release of the shared compatibility RPMs (Red Hat Enterprise Linux 3 RPM x86). Verified fixed.