[MDEV-13619] libmariadb missing version info for libmariadbclient_18 Created: 2017-08-22  Updated: 2017-10-02  Resolved: 2017-09-28

Status: Closed
Project: MariaDB Server
Component/s: libmariadb, Platform Debian
Affects Version/s: 10.2.8
Fix Version/s: 10.2.9

Type: Bug Priority: Major
Reporter: Richard Stanway Assignee: Sergei Golubchik
Resolution: Fixed Votes: 3
Labels: None
Environment:

Debian Stretch 64bit


Issue Links:
Duplicate
duplicates MDEV-13588 /usr/lib/x86_64-linux-gnu/libmariadbc... Closed
Relates
relates to MDEV-12889 libmariadb3 no version information av... Closed
relates to MDEV-13593 dlopen failure loading after upgrade ... Closed
relates to MDEV-13615 MariaDB 10.2 client library (Debian 9... Closed

 Description   

As of Debian Stretch, Debian packages that use MariaDB are linking to libmariadbclient.so.18 with version hints in the symbols. When installing the mariadb.org version of MariaDB, libmariadbclient.so.18 is symlinked to libmariadb3 (MDEV-5482). This no longer works since the version information for libmariadbclient_18 is not present in libmariadb3.

This causes any packages built to use the Debian Stretch version of MariaDB incompatible with the mariadb.org distribution of MariaDB.

Example (exim4-daemon-heavy):

# dpkg -l | grep maria
ii  libmariadb3                              10.2.8+maria~stretch              amd64        MariaDB database client library
ii  libmariadbclient18                       10.2.8+maria~stretch              amd64        Virtual package to satisfy external depends
ii  mariadb-client-10.2                      10.2.8+maria~stretch              amd64        MariaDB database client binaries
ii  mariadb-client-core-10.2                 10.2.8+maria~stretch              amd64        MariaDB database core client binaries
ii  mariadb-common                           10.2.8+maria~stretch              all          MariaDB database common files (e.g. /etc/mysql/conf.d/mariadb.cnf)
ii  mariadb-server                           10.2.8+maria~stretch              all          MariaDB database server (metapackage depending on the latest version)
ii  mariadb-server-10.2                      10.2.8+maria~stretch              amd64        MariaDB database server binaries
ii  mariadb-server-core-10.2                 10.2.8+maria~stretch              amd64        MariaDB database core server files
ii  mysql-common                             10.2.8+maria~stretch              all          MariaDB database common files (e.g. /etc/mysql/my.cnf)
 
# ls -al /usr/lib/x86_64-linux-gnu/libmysql*
lrwxrwxrwx 1 root root 15 Aug 17 10:07 /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18 -> libmariadb.so.3
lrwxrwxrwx 1 root root 15 Aug 17 10:07 /usr/lib/x86_64-linux-gnu/libmysqlclient.so.19 -> libmariadb.so.3
lrwxrwxrwx 1 root root 15 Aug 17 10:07 /usr/lib/x86_64-linux-gnu/libmysqlclient.so.20 -> libmariadb.so.3
 
# # ls -al /usr/lib/x86_64-linux-gnu/libmaria*
lrwxrwxrwx 1 root root     15 Aug 17 10:07 /usr/lib/x86_64-linux-gnu/libmariadbclient.so.18 -> libmariadb.so.3
-rw-r--r-- 1 root root 332064 Aug 17 10:07 /usr/lib/x86_64-linux-gnu/libmariadb.so.3
 
# ./exim4
./exim4: /usr/lib/x86_64-linux-gnu/libmariadbclient.so.18: version `libmariadbclient_18' not found (required by ./exim4)
 
# ldd exim4
./exim4: /usr/lib/x86_64-linux-gnu/libmariadbclient.so.18: version `libmariadbclient_18' not found (required by ./exim4)
        linux-vdso.so.1 (0x00007ffcb288b000)
        libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fb8e692b000)
        libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007fb8e6713000)
        libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fb8e64db000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb8e61d7000)
        libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007fb8e5fc9000)
        libdb-5.3.so => /usr/lib/x86_64-linux-gnu/libdb-5.3.so (0x00007fb8e5c09000)
        libldap_r-2.4.so.2 => /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2 (0x00007fb8e59b8000)
        liblber-2.4.so.2 => /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2 (0x00007fb8e57a9000)
        libmariadbclient.so.18 => /usr/lib/x86_64-linux-gnu/libmariadbclient.so.18 (0x00007fb8e5556000)
        libpq.so.5 => /usr/lib/x86_64-linux-gnu/libpq.so.5 (0x00007fb8e5325000)
        libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007fb8e501d000)
        libsasl2.so.2 => /usr/lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007fb8e4e00000)
        libperl.so.5.24 => /usr/lib/x86_64-linux-gnu/libperl.so.5.24 (0x00007fb8e4a0d000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb8e4809000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb8e45ec000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb8e424d000)
        libgnutls.so.30 => /usr/lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007fb8e3eb4000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fb8e3c3f000)
        /lib64/ld-linux-x86-64.so.2 (0x000055e7f2ba7000)
        libaudit.so.1 => /lib/x86_64-linux-gnu/libaudit.so.1 (0x00007fb8e3a17000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fb8e37fd000)
        libssl.so.1.1 => /usr/lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007fb8e3591000)
        libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007fb8e30fe000)
        libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007fb8e2eb3000)
        libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007fb8e2c4c000)
        libidn.so.11 => /lib/x86_64-linux-gnu/libidn.so.11 (0x00007fb8e2a18000)
        libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007fb8e2805000)
        libnettle.so.6 => /usr/lib/x86_64-linux-gnu/libnettle.so.6 (0x00007fb8e25ce000)
        libhogweed.so.4 => /usr/lib/x86_64-linux-gnu/libhogweed.so.4 (0x00007fb8e2399000)
        libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007fb8e2116000)
        libcap-ng.so.0 => /lib/x86_64-linux-gnu/libcap-ng.so.0 (0x00007fb8e1f0e000)
        libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007fb8e1c34000)
        libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007fb8e1a01000)
        libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007fb8e17fd000)
        libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007fb8e15f1000)
        libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007fb8e13ed000)
        libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007fb8e11e2000)
 
# readelf -s exim4 | grep libmariadbclient_18
     7: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND mysql_fetch_row@libmariadbclient_18 (7)
    41: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND mysql_fetch_fields@libmariadbclient_18 (7)
    52: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND mysql_num_fields@libmariadbclient_18 (7)
   118: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND mysql_use_result@libmariadbclient_18 (7)
   131: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND mysql_options@libmariadbclient_18 (7)
   174: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND mysql_get_client_info@libmariadbclient_18 (7)
   240: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND mysql_free_result@libmariadbclient_18 (7)
   273: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND mysql_real_connect@libmariadbclient_18 (7)
   276: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND mysql_affected_rows@libmariadbclient_18 (7)
   301: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND mysql_next_result@libmariadbclient_18 (7)
   321: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND mysql_fetch_lengths@libmariadbclient_18 (7)
   327: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND mysql_field_count@libmariadbclient_18 (7)
   393: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND mysql_query@libmariadbclient_18 (7)
   395: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND mysql_init@libmariadbclient_18 (7)
   401: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND mysql_error@libmariadbclient_18 (7)
   429: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND mysql_close@libmariadbclient_18 (7)
 
# readelf -s /usr/lib/x86_64-linux-gnu/libmariadbclient.so.18 | grep mysql_fetch_row
   214: 000000000003ab60   268 FUNC    GLOBAL DEFAULT   12 mysql_fetch_row_cont@@libmariadb_3
   313: 000000000003aa60   255 FUNC    GLOBAL DEFAULT   12 mysql_fetch_row_start@@libmariadb_3
   362: 0000000000019c30   207 FUNC    GLOBAL DEFAULT   12 mysql_fetch_row@@libmysqlclient_18



 Comments   
Comment by Elena Stepanova [ 2017-08-23 ]

$ sudo exim4
exim4: /usr/lib/x86_64-linux-gnu/libmariadbclient.so.18: version `libmariadbclient_18' not found (required by exim4)

Comment by Richard Stanway [ 2017-10-02 ]

This is unfortunately not fixed in 10.2.9.

# # dpkg -l | grep mariadb
ii  libmariadb3                              10.2.9+maria~stretch              amd64        MariaDB database client library
ii  libmariadbclient18                       10.2.9+maria~stretch              amd64        Virtual package to satisfy external depends
rc  mariadb-client-10.1                      10.1.23-9+deb9u1                  amd64        MariaDB database client binaries
ii  mariadb-client-10.2                      10.2.9+maria~stretch              amd64        MariaDB database client binaries
ii  mariadb-client-core-10.2                 10.2.9+maria~stretch              amd64        MariaDB database core client binaries
ii  mariadb-common                           10.2.9+maria~stretch              all          MariaDB database common files (e.g. /etc/mysql/conf.d/mariadb.cnf)
ii  mariadb-server                           10.2.9+maria~stretch              all          MariaDB database server (metapackage depending on the latest version)
rc  mariadb-server-10.1                      10.1.23-9+deb9u1                  amd64        MariaDB database server binaries
ii  mariadb-server-10.2                      10.2.9+maria~stretch              amd64        MariaDB database server binaries
ii  mariadb-server-core-10.2                 10.2.9+maria~stretch              amd64        MariaDB database core server files
 
# exim4
exim4: error while loading shared libraries: libmariadbclient.so.18: cannot open shared object file: No such file or directory

EDIT: Manually symlinking libmariadbclient.so.18 to libmariadbclient.so got things working, but I was hoping such a step would be taken care of by the appropriate packages.

Comment by Michiel Hazelhof [ 2017-10-02 ]

Have you attemted to create a symlink from /lib/libmariadbclient.so.18 to /usr/lib/x86_64-linux-gnu/libmariadb.so.3 ?

Comment by Daniel Schmitz [ 2017-10-02 ]

A simple

apt-get install --reinstall libmariadbclient18

solved that for me, after the upgrade to 10.2.9.

Generated at Thu Feb 08 08:07:01 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.