[debian-mysql] Bug#739452: Bug#739452: libmariadbclient18: arch-dependent files in "Multi-Arch: same" package
Kristian Nielsen
knielsen at knielsen-hq.org
Wed Apr 23 08:05:17 UTC 2014
Jakub Wilk <jwilk at debian.org> writes:
> If a package is marked as "Multi-Arch: same", it should be
> co-installable with itself. This is currently not the case because of
> the two files mentioned in my original mail:
>
> Selecting previously unselected package libmariadbclient18:amd64.
> Preparing to unpack .../libmariadbclient18_5.5.36-1_amd64.deb ...
> Unpacking libmariadbclient18:amd64 (5.5.36-1) ...
> Selecting previously unselected package libmariadbclient18:i386.
> Preparing to unpack .../libmariadbclient18_5.5.36-1_i386.deb ...
> Unpacking libmariadbclient18:i386 (5.5.36-1) ...
> dpkg: error processing archive /var/cache/apt/archives/libmariadbclient18_5.5.36-1_i386.deb (--unpack):
> trying to overwrite shared '/usr/lib/mysql/plugin/dialog.so', which is different from other instances of package libmariadbclient18:i386
Otto: So apparently the problem here is the client-side plugins. IIUC,
pluggable authentication uses shared objects (like dialog.so) that are loaded
on demand by libmariadbclient. So to install both 32-bit and 64-bit client
library on amd64, we will need to put the client plugins under an
architecture-specific name. Like /usr/lib32/mysql/plugin/dialog.so or
whatever. Then 32-bit and 64-bit applications, running on the same 64-bit
system, can each load the correct plugin into their library.
I am not sure about the correct file/directory names to use. I believe that libc,
for example, does dynamic loading of eg. resolver libraries, so it must be
solving the similar problem. Maybe looking at how that works could be a good
start.
Wrt. the build scripts, presumably the path /usr/lib/mysql/plugin/ comes from
somewhere and could be overridden with the appropriate CMake directive; maybe
Serg (Cc:'ed) could help with how to do this.
Hope this helps,
- Kristian.
More information about the pkg-mysql-maint
mailing list