0

I'm trying to setup a multi-platform build environment for amd64 and arm64. It is based on debian 12 (amd64). I install all requored amd64 packages

and then I install the reqired packages for arm64 support

dpkg --add-architecture arm64
apt update
apt install g++-11-aarch64-linux-gnu libssl-dev:arm64 libcurl4-openssl-dev:arm64 liblzma-dev:arm64

I install libssl-dev:arm64 libcurl4-openssl-dev:arm64 liblzma-dev:arm64 , because the sources that I will build, depend on them.

Everything is correct until now - libssl-dev:arm64 libcurl4-openssl-dev:arm64 liblzma-dev:arm64 have both the amd64 version and the arm64 version, so that I can compile both for amd64 and arm64 against them.

ii  libssl3:amd64                       3.0.13-1~deb12u1               amd64        Secure Sockets Layer toolkit - shared libraries
ii  libssl3:arm64                       3.0.13-1~deb12u1               arm64        Secure Sockets Layer toolkit - shared libraries

The problem comes when trying to install default-libmysqlclient-dev:arm64

apt install default-libmysqlclient-dev:arm64

The following packages will be REMOVED:
  default-libmysqlclient-dev libmariadb-dev libmariadb-dev-compat

The installation of default-libmysqlclient-dev:arm64 is trying to remove default-libmysqlclient-dev

After that, if I try to install default-libmysqlclient-dev:

apt install default-libmysqlclient-dev

The following packages will be REMOVED:
  default-libmysqlclient-dev:arm64 libmariadb-dev:arm64 libmariadb-dev-compat:arm64

If I try to install both default-libmysqlclient-dev and default-libmysqlclient-dev:arm64:

apt install default-libmysqlclient-dev default-libmysqlclient-dev:arm64

The following packages have unmet dependencies:
 default-libmysqlclient-dev:arm64 : Depends: libmariadb-dev-compat:arm64 but it is not installable

If I try to install both libmariadb-dev libmariadb-dev:arm64 (actually, these are the base packages that are required)

apt install libmariadb-dev libmariadb-dev:arm64

The following packages have unmet dependencies:
  libmariadb-dev : Conflicts: libmariadb-dev:arm64 but 1:10.11.6-0+deb12u1 is to be installed
  libmariadb-dev:arm64 : Conflicts: libmariadb-dev but 1:10.11.6-0+deb12u1 is to be installed

It looks like the amd64 and arm64 versions of mariadb cannot exist at the same time. This defeats the idea of crosscompilation. There is no issue with the other packages to have different architectures at the same time. Is there an easy solution? Other than manually copying arm64 headers and libraries for mariadb in corresponding system directories.

1 Answer 1

1

Under multiarch, packages must explicitly declare that they can be installed for multiple architectures with a "multi-arch: same" line in the package metadata. Many do so, but it's far from all. Sometimes there is a good reason for not allowing it, other times it's simply a case that no-one has got around to it yet.

Ultimately your options are.

  1. Use separate environments for amd64 and arm64 builds.
  2. Modify the mariadb package to allow co-installation (and hope there wasn't a good reason for not allowing it......)
  3. Hack things up manually.

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.