Как вы знаете, i386 означает, что пакет, который вы пытаетесь установить, предназначен для 32-битной системы.
Как объяснено здесь: https://askubuntu.com/questions/522372/install-32-bit-libraries-on-ubuntu-14-04-lts-64-bit вы можете установить 32-битные библиотеки в 64-битной системе.
По этой ссылке мы читаем https://bugs.launchpad.net/ubuntu/+source/mesa/+bug/949606 :
Пакеты 64-битной разработки содержат 64-битную версию библиотечного файла (ов), которую они предоставляют для связывания, но не 32-битную версию библиотечного файла (ов). В предыдущих версиях Ubuntu, однако, было возможно скомпилировать 32-битные приложения, используя 64-битные пакеты dev, установив ia32-libs, который содержал необходимые 32-битные библиотечные файлы.
При переходе на multiarch 32-битные библиотечные файлы удаляются из ia32-libs. Multiarch (я полагаю) стремится разделить архитектуру, поэтому обычно предполагаемое решение заключается в установке версии i386 пакета dev при компиляции 32-битных приложений, то есть параллельно с 64-битным пакетом dev.
Однако некоторые 64-разрядные пакеты разработки конфликтуют с 32-разрядным эквивалентом. Это создает регрессивную ситуацию, когда их невозможно установить рядом - вы вынуждены либо установить 32-битный пакет, который нарушает 64-битные компиляции, либо 64-битный пакет, который нарушает 32-битные компиляции.
Примером является libglu1-mesa-dev, который конфликтует с libglu1-mesa-dev:i386. Файл libglu1-mesa-dev содержит все необходимые файлы разработки для 32-разрядной версии, кроме 32-разрядной библиотеки. Он содержит 64-битный файл библиотеки. Поскольку файл библиотеки является частью файлов разработки, libglu1-mesa-dev не содержит всех необходимых файлов разработки для 32-разрядных, то есть он не содержит все необходимые файлы разработки для мультиархии. Я думаю, что он должен содержать все необходимые файлы для сборки приложений мультиарх.
Два обходных пути:
Перед компиляцией 32-битных приложений вручную переустановите требуемые пакеты i386 dev, а затем вручную переустановите необходимые пакеты amd64 dev перед компиляцией 64-битных приложений. Это настоящая боль.
Установите двоичный пакет i386 (например, libglu1-mesa:i386) и пакет dev amd64 (например, libglu1-mesa-dev) и вручную создайте символические ссылки для пакета lib38YZ.so i386 (например, sudo ln -s /usr /lib /i386). -linux-gnu /libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so). Это более постоянное решение, но его очень сложно настроить, так как вам нужно найти каждую отсутствующую библиотеку вручную, а некоторые библиотечные файлы, такие как mesa /libGL.so.1, находятся в подпапках.