Traducción(es): Brasileiro - English - Español - Français - Русский
Contents
¿Qué es la multiarquitectura?
La multiarquitectura le permite instalar bibliotecas de múltiples arquitecturas en el mismo sistema. Esto es útil en múltiples casos, pero principalmente para instalar paquetes de 32 y 64 bits en la misma máquina y disponer de las dependencias automáticamente resueltas. En general, podrá tener bibliotecas de más de una arquitectura instaladas juntas y aplicaciones de una arquitectura u otra instaladas como alternativas. Téngase en cuenta que esto no permite la instalación simultánea de múltiples versiones de programas.
Conceptos
Se dispone de una arquitectura en la máquina, como refleja dpkg --print-architecture. Está integrada en la instalación actual de dpkg.
Obsérvese que con "arquitectura" se refiere a una "ABI" (interfaz de binarios de aplicaciones), no a un conjunto de instrucciones (ISA). De este modo, armel y armhf son distintas "arquitecturas", a pesar de que usan prácticamente el mismo conjunto de instrucciones, ya que tienen distintas ABIs.
Los paquetes pueden ser especificados como "paquete:arquitectura" prácticamente en cualquier lugar en el que antes se introducía solamente "paquete", así que disponemos de libc:i386 y libc:amd64. Por desgracia, por ahora la semántica en dpkg y apt es ligeramente distinta, por lo que se podrían obtener resultados distintos; pero en debiera ser siempre seguro e inequívoco archivar paquetes. El nombre puro "paquete" se refiere a la arquitectura actual de la máquina en apt.
Otras arquitecturas disponibles son mostradas mediante dpkg --print-foreign-architectures. dpkg administrará paquetes para esas arquitecturas así como para la arquitectura nativa de la máquina.
Hay una cabecera Multi-Arch en los metadatos de cualquier paquete adaptado para multiarquitectura.
Disponibilidad
Necesitará un dpkg y un apt compatibles con multiarquitectura. En el dpkg de Debian, dicha compatibilidad está presente desde la versión 1.16.2. En Ubuntu está presente desde Natty (v1.15.8.10ubuntu1). Puede comprobarlo viendo si ejecutar dpkg --print-foreign-architectures retorna los resultados correctos.
apt es compatible con multiarquitectura si soporta -o APT::Architectures. Está disponible desde la versión 0.8.13; no obstante, hay muchas mejoras y correcciones de errores relevantes en versiones posteriores de apt (algunas requeridas por Debian dpkg 0.8.13 y superiores para activar la multiarquitectura), tal que soporte multiarquitectura para apt build-dep -a; por lo que es mejor disponer de al menos la versión 0.9.4.
Antes de apt 0.9 en Debian, dpkg podía atascarse con multiarquitectura activada durante actualizaciones si no se le especificaba qué arquitectura debiera estar configurando con apt (dpkg: error: --configure needs a valid package name but 'gcc-4.7-base' is not: ambiguous package name 'gcc-4.7-base' with more than one installed instance). dpkg --configure -a deshará esto.
Edit conflict - other version:
Edit conflict - your version:
Los paquetes existentes funcionarán correctamente en un entorno multiarquitectura, como lo hacían de antemano; pero para obtener los beneficios de la co-instalación o de las dependencias de arquitectura cruzada, muchos paquetes han de ser adaptados a multiarquitectura.
Para un paquete sin cambios ha de escoger qué versión de qué arquitectura desea escoger (por ejemplo, amd64 o i386).
Si un paquete está marcado como Multi-Arch: foreign, entonces puede satisfacer dependencias de un paquete en una arquitectura diferente (p. ej. "make:amd64" satisfacerá una dependencia en make para paquetes de cualquier arquitectura.
Para disponer de más de una versión de arquitectura de un paquete instalado simultáneamente (en general, bibliotecas y paquetes dev-), los archivos tendrán que ser movidos para que no se confronten. Estos paquetes están marcados como Multi-Arch: same.
Los paquetes marcados como Multi-Arch: allowed pueden ser tratados como same or foreign según su relación de dependencia.
Los empaquetadores están trabajando en la distribución, comenzando por los paquetes más útiles, para hacerla multiarquitectura. Véase el ?HowTo de implementación para obtener detalles sobre cómo funciona el proceso, y cómo actualizar paquetes para que puedan aprovechar esta funcionalidad.
End of edit conflict
Uso
Configuración de arquitecturas
Para añadir una arquitectura adicional (en Debian, desde dpkg 1.16.2):
# dpkg --add-architecture <arquitectura>
Por ejemplo:
# dpkg --add-architecture i386
Obsérvese que no habrán cambios perceptibles hasta que realice un
# apt update
para actualizar la lista de paquetes disponibles.
Para eliminar una arquitectura:
# dpkg --remove-architecture <arquitectura>
Las arquitecturas de dpkg son almacenadas en /var/lib/dpkg/arch.
Tenga en cuenta que necesitará desinstalar todos los paquetes de una arquitectura antes de eliminarla:
apt purge ".*:<arqutectura>"
Considérese que el dpkg de Ubuntu en Natty (1.16.0~ubuntu7 (reporta 1.15.8.10)), Oneiric y Precise (1.16.1.2ubuntu7) usa una sintaxis distinta:
echo "foreign-architecture <arquitectura>" >> /etc/dpkg/dpkg.cfg.d/architectures
Configuración de los orígenes de apt
Por defecto, apt usa el conjunto de arquitecturas reportado por dpkg, y cualquier línea de arquitectura no calificada en /etc/apt/sources.list, que es habitualmente el comportamiento deseado. Esto puede ser invalidado usando APT::Architecture=<arquitectura> para ajustar la arquitectura predeterminada o APT::Architectures="<arquitectura> <arquitectura>".
apt-sources puede ser calificado por arquitectura con esta sintaxis. Esto es muy útil en el archivo dividido de Ubuntu. No es normalmente necesario en Debian, salvo que su archivo habitual no replique las arquitecturas adicionales en las que esté interesado.
deb [arch=amd64,i386] http://es.archive.ubuntu.com/ubuntu/ quantal main universe deb [arch=armel,armhf] http://ports.ubuntu.com/ubuntu-ports quantal main universe
Las líneas de deb-src calificadas por arquitectura son ilógicas.
Nota: hay un error entre las vesiones de apt >=0.9.7 y <0.9.7.2, por el que poner arch=armel,armhf en una línea no funcionaba; es necesario escribir dos líneas.
No olvide ejecutar
apt update
tras añadir las nuevas arquitecturas.
