Esta página documenta cómo usar paquetes multiarquitectura (multiarch). Puede consultar información de otros temas de multiarch en categoría de múltiples arquitecturas. Respecto a correr binarios de arquitecturas incompatibles, consulte emular con Qemu.

¿Qué es la multiarquitectura?

Multiarch le permite instalar paquetes de múltiples arquitecturas en el mismo sistema. Por ejemplo puede usar e instalar paquetes antiguoes de un paquete i386 en un PC moderno x86_64. Tenga en cuenta que los paquetes de bibliotecas (p.e. aquellos que instalan sus ficheros en /usr/lib) fueron diseñados para permitirle instalar versiones diseñadas para varias arquitecturas, mientras que los paquetes de aplicación (p.e. los paquetes que instalan sus ficheros en /usr/bin) no lo hacen: normalmente tendrá que desinstalar aplicaciones diseñadas para una arquitectura antes de instalar una versión diseñada para otra.

Una vez que ha instalado una aplicación multiarch, debería poder invocarla directamente si fue compilada para una arquitectura anterior a la suya (p.e. aplicaciones i386 instaladas en un PC x86_64 usando multiarch deberían andar sin necesidad de configuración adicional). Pero probablemente necesitará usar emulación de usuario de Qemu para lanzar binarios para una arquitectura completamente diferente (p.e. aplicaciones armhf en un x86_64). Si quiere utilizar binarios para un sistema operativo completamente diferente (p.e. binarios de FreeBSD en Linux), consulte QEMU en su lugar.

/!\ Esta página usa el término "arquitectura" para referirse a un nombre de arquitectura de Debian, otras páginas pueden usar el mismo término para referirse a "nombre multiarch"

Uso básico

Ver arquitecturas disponibles

# La arquitectura de su sistema:
dpkg --print-architecture
# Otras architecturas:
dpkg --print-foreign-architectures

Añadir otra arquitectura

# p.e. "i386":
sudo dpkg --add-architecture "<architecture>"
sudo apt update

Instalar un paquete de una arquitectura específica

# p.e. "libc6:i386":
sudo apt install "<package>:<architecture>"

Eliminar una arquitectura

# Desinstalar paquetes:
sudo apt purge ".*:<architecture>"
# Eliminar configuración:
sudo dpkg --remove-architecture "<architecture>"

Uso avanzado

Subrayar el encabezado de un paquete Multi-Arch

Algunos paquetes tienen el encabezado Multi-Arch que especifica su comportamiento multiarch. Puede consultar la especificación multiarch para más detalles.

apt-cache show "<package-name>" | grep --color "^\|^Multi-Arch: "

Establecer la arquitectura para ciertas fuentes(sources) específicas

Aveces puede ser útil especificar una arquitectura diferente para un repositorio APT. Por ejemplo, puede querer adicionar un repositorio que no ofrece su arquitectura nativa.

Añada [arch=arch1,arch2,...] a todas las líneas apropiadas de /etc/apt/sources.d:

deb http://supports-all-architectures.example.com/ stable main
deb [arch=amd64,i386] http://intel-only.example.com/ stable main
deb [arch=armel,armhf] http://arm-only.example.com/ stable main

# No se requiere especificar la arquitectura para los repositorios de fuentes:
#deb-src http://supports-all-architectures.example.com/ stable main
#deb-src http://intel-only.example.com/ stable main
#deb-src http://arm-only.example.com/ stable main

Recuerde hacer sudo apt-get update después de editar el listado de repositorios.

Cambiar la arquitectura predeterminada para apt

Cuando no especifica una arquitectura apt de forma predeterminada usa la arquitectura para la cual fue compilada. Si desea un comportamiento distinto por algún motivo, consulte MultiarchCross.

Instalar dependencias cruzadas

Para instalar dependencias de compilación(build-dependencies) de un paquete antes de hacer compilación cruzada:

sudo apt-get build-dep -a "<architecture>" "<package>"

Esto asume que las dependencias del paquete tienen encabezados Multi-Arch apropiados (consulte más detalles en Multiarch/Implementation). Si no es así, debería poder apt-get install dependencias individuales para su arquitectura nativa o para la arquitectura objetivo. Consulte también MultiarchCross.

Instalación de bibliotecas compat del SDK de Android

Si usa el SDK de Android y tiene problemas al lanzar build-tools o platform-tools en x86_64:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386

Reportar fallos de multi-arch

Si encuentra un fallo realacionado con multiarch en un paquete de Debian, asegure que su reporte contiene las líneas User y Usertags así:

Package: <name>
Version: <version>
Severity: <severity>
User: multiarch-devel@lists.alioth.debian.org
Usertags: multiarch

...

Puede ver fallos multiarch en fallos etiquetados con multiarch. Puede conocer más acerca de etiquetar fallos en tags de usuario y asignar tags a fallos.


CategoryPermalink CategorySystemAdministration CategoryPackageManagement CategoryMultiarch