Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-13619

libmariadb missing version info for libmariadbclient_18

    XMLWordPrintable

    Details

      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
      

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              serg Sergei Golubchik
              Reporter:
              R1CH Richard Stanway
              Votes:
              3 Vote for this issue
              Watchers:
              7 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: