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

libmariadb missing version info for libmariadbclient_18

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

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

            elenst Elena Stepanova added a comment - $ sudo exim4 exim4: /usr/lib/x86_64-linux-gnu/libmariadbclient.so.18: version `libmariadbclient_18' not found (required by exim4)
            R1CH Richard Stanway added a comment - - edited

            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.

            R1CH Richard Stanway added a comment - - edited 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.

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

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

            A simple

            apt-get install --reinstall libmariadbclient18
            

            solved that for me, after the upgrade to 10.2.9.

            bashgeek Daniel Schmitz added a comment - A simple apt-get install --reinstall libmariadbclient18 solved that for me, after the upgrade to 10.2.9.

            People

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

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.