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.