SINOPSIS
dpkg-architecture [opciones] [órdenes]
DESCRIPCIÓN
dpkg-architecture facilita determinar y configurar la arquitectura de construcción y de la máquina anfitrión para la construcción de un paquete.La arquitectura de construcción siempre se determina con una invocación externa a dpkg(1), y no se puede definir en la línea de órdenes.
Puede definir la arquitectura del anfitrión introduciendo una o ambas opciones -a y -t. El valor por omisión es una invocación externa a gcc(1), o la misma que la arquitectura de construcción en caso de no disponer de CC o gcc. Es suficiente usar -a o -t, el valor del otro se definirá con un valor predefinido adecuado. De hecho, a veces es mejor definir sólo uno, ya que dpkg-architecture le avisará si su opción no encaja con la opción predefinida.
ÓRDENES
- -l
- Muestra las variables de entorno, una por línea, con el formato VARIABLE=valor. Esta es la acción predefinida.
- -edebian-architecture
- Revisa si la arquitectura es la misma. Por omisión, debian-architecture se compara con la arquitectura del sistema Debian actual, el sistema anfitrión. Esta acción no expande los comodines de arquitectura. La orden finaliza con un estado de salida de cero si coinciden, y de 1 en caso contrario.
- -icomodín-arquitectura
- Revisa la identidad de la arquitectura expandiendo comodin-arquitectura como un comodín de arquitectura, y comparándola con la arquitectura del sistema Debian actual. La orden finaliza con un estado de salida de cero si coincide, y de 1 en caso contrario.
- -qnombre-variable
- Muestra el valor de una única variable.
- -s
- Muestra una orden «export». Se puede usar para definir las variables de entorno mediante eval.
- -u
- Muestra una orden similar a -s, pero para eliminar la definición («unset») de todas las variables.
- -c orden
- Ejecuta una orden en un entorno cuyas variables ya están definidas con un valor predefinido.
- -L
- Muestra una lista de nombres de arquitectura válidos.
- --help
- Muestra el modo de uso y termina.
- --version
- Muestra la versión y termina.
OPCIONES
- -adebian-architecture
- Define la arquitectura de Debian.
- -ttipo-sistema-gnu
- Define el tipo de sistema GNU.
- -f
- Los scripts respetan los valores de variables de entorno preexistentes que tienen el mismo nombre que los valores contenidos en el script (por ejemplo, usados por dpkg-architecture), a menos que se use esta marca de forzado. Permite al usuario sobreescribir un valor, aún cuando la invocación a dpkg-architecture se encuentra en otro script (por ejemplo, dpkg-buildpackage(1)).
TÉRMINOS
- máquina de construcción
- La máquina en la que se construye el paquete.
- máquina anfitrión
- La máquina para la cual se construye el paquete.
- Arquitectura de Debian
- La cadena de la arquitectura de Debian, que especifica el árbol binario en el archivo FTP. Ejemplos: i386, sparc, hurd-i386.
- comodín de arquitectura
- Un comodín de arquitectura es una cadena especial de arquitectura que encaja con cualquier arquitectura real del que es parte. La forma habitual es <kernel>-<cpu>. Ejemplos: linux-any, any-i386, hurd-any.
- tipo de sistema GNU
- Una cadena de definición de arquitectura que consiste de dos partes separadas por un guión: el procesador y el sistema. Ejemplos: i386-linux-gnu, sparc-linux-gnu, i386-gnu, x86_64-netbsd.
VARIABLES
Las siguientes variables se definen mediante dpkg-architecture:- DEB_BUILD_ARCH
- La arquitectura de Debian de la máquina de construcción.
- DEB_BUILD_ARCH_OS
- El nombre del sistema Debian de la máquina de construcción.
- DEB_BUILD_ARCH_CPU
- El nombre de Debian del procesador de la máquina de construcción.
- DEB_BUILD_ARCH_BITS
- El tamaño del puntero de la máquina de construcción, en bits.
- DEB_BUILD_ARCH_ENDIAN
- El nivel de «endianización» de la máquina de construcción, «little» o «big».
- DEB_BUILD_GNU_CPU
- La parte CPU de DEB_BUILD_GNU_TYPE.
- DEB_BUILD_GNU_SYSTEM
- La parte de «System» de DEB_BUILD_GNU_TYPE.
- DEB_BUILD_GNU_TYPE
- El tipo de sistema GNU de la máquina de construcción.
- DEB_HOST_ARCH
- La arquitectura de Debian de la máquina anfitrión.
- DEB_HOST_ARCH_OS
- El nombre de sistema Debian de la máquina anfitrión.
- DEB_HOST_ARCH_CPU
- El nombre del procesador Debian de la máquina anfitrión.
- DEB_HOST_ARCH_BITS
- El tamaño del puntero de la máquina anfitrión, en bits.
- DEB_HOST_ARCH_ENDIAN
- El nivel de «endianización» de la máquina anfitrión, «little» o «big».
- DEB_HOST_GNU_CPU
- La parte de CPU de DEB_HOST_GNU_TYPE.
- DEB_HOST_GNU_SYSTEM
- La parte de «System» de DEB_HOST_GNU_TYPE.
- DEB_HOST_GNU_TYPE
- El tipo de sistema GNU de la máquina anfitrión.
DEBIAN/RULES
Las variables de entorno definidas por dpkg-architecture se introducen a debian/rules como variables de «make» (consulte la documentación de make). Por otra parte, no debería depender de ellos, ya que esto rompe la invocación manual del script. En lugar de ello, se deberían iniciar mediante dpkg-architecture con la opción «-q». Aquí hay algunos ejemplos, que muestran también como mejorar la compatibilidad de su paquete con la construcción para varias arquitecturas.
En lugar de:
-
ARCH=`dpkg --print-architecture` configure $(ARCH)-linux
use lo siguiente:
-
DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) configure --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE)
En lugar de:
-
ARCH=`dpkg --print-architecture` ifeq ($(ARCH),alpha) ... endif
use:
-
DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH) ifeq ($(DEB_HOST_ARCH),alpha) ... endif
o si sólo precisa revisar el tipo de sistema o CPU, use las variables «DEB_HOST_ARCH_OS» o «DEB_HOST_ARCH_CPU».
En general, invocar dpkg en el fichero de reglas («rules») para obtener la información de arquitectura está obsoleto (a menos que desee ofrecer compatibilidad con versiones anteriores, véase a continuación). La opción «--print-architecture» es particularmente inestable, ya que existen arquitecturas de Debian que no encajan con el nombre de un procesador.
COMPATIBILIDAD CON VERSIONES ANTERIORES
Las variables «DEB_*_ARCH_BITS» y «DEB_*_ARCH_ENDIAN» se introdujeron a partir de la versión 1.15.4 de dpkg-dev. Su uso en debian/rules requiere una dependencia de construcción sobre dpkg-dev (>= 1.15.4).Las variables «DEB_HOST_ARCH_CPU» y «DEB_HOST_ARCH_OS» se introdujeron a partir de la versión 1.13.2 de dpkg-dev. Antes, los ficheros debian/rules solían revisar aquellos valores de «DEB_HOST_GNU_CPU» o «DEB_HOST_GNU_TYPE» susceptibles de haber cambiado.
Se deberían actualizar aquellas partes de los ficheros debian/rules que revisan las variables que deciden el modo o el objetivo a compilar. Puede usar el siguiente código si desea permitir la compatibilidad con versiones anteriores de dpkg-dev:
-
DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU 2>/dev/null) DEB_HOST_ARCH_OS := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS 2>/dev/null) # Take account of old dpkg-architecture output. ifeq ($(DEB_HOST_ARCH_CPU),) DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_GNU_CPU) ifeq ($(DEB_HOST_ARCH_CPU),x86_64) DEB_HOST_ARCH_CPU := amd64 endif endif ifeq ($(DEB_HOST_ARCH_OS),) DEB_HOST_ARCH_OS := $(subst -gnu,,$(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM)) ifeq ($(DEB_HOST_ARCH_OS),gnu) DEB_HOST_ARCH_OS := hurd endif endif
Y de forma parecida con «DEB_BUILD_ARCH_CPU» y «DEB_BUILD_ARCH_OS».
Si desea la compatibilidad con versiones de dpkg-dev que no incluían dpkg-architecture, puede usar lo siguiente:
-
DEB_BUILD_ARCH := $(shell dpkg --print-architecture) DEB_BUILD_GNU_CPU := $(patsubst hurd-%,%,$(DEB_BUILD_ARCH)) ifeq ($(filter-out hurd-%,$(DEB_BUILD_ARCH)),) DEB_BUILD_GNU_SYSTEM := gnu else DEB_BUILD_GNU_SYSTEM := linux-gnu endif DEB_BUILD_GNU_TYPE=$(DEB_BUILD_GNU_CPU)-$(DEB_BUILD_GNU_SYSTEM) DEB_HOST_ARCH := $(DEB_BUILD_ARCH) DEB_HOST_GNU_CPU := $(DEB_BUILD_GNU_CPU) DEB_HOST_GNU_SYSTEM := $(DEB_BUILD_GNU_SYSTEM) DEB_HOST_GNU_TYPE := $(DEB_BUILD_GNU_TYPE)
Inserte un subconjunto de estas líneas al inicio del fichero «debian/rules»; estos valores predefinidos se sobreescribirán en caso de usar dpkg-architecture.
No necesita el conjunto completo. Seleccione un conjunto consistente que contenga los valores que usa en el fichero de reglas. Por ejemplo, si sólo necesita la arquitectura Debian del sistema de destino, tiene suficiente con «DEB_HOST_ARCH=`dpkg --print-architecture» (de hecho, esta es la arquitectura de Debian de la máquina de construcción, pero recuerde que sólo intentamos crear la compatibilidad con versiones anteriores que tienen una compilación nativa).
Las opciones -e y -i aparecieron en recientes versiones de dpkg-architecture (a partir de la versión 1.13.13 de dpkg).
EJEMPLOS
dpkg-buildpackage acepta la opción -a y la introduce a dpkg-architecture. Otros ejemplos:- CC=i386-gnu-gcc dpkg-architecture -c debian/rules build
- eval `dpkg-architecture -u`
Revisa si una arquitectura equivale a la arquitectura actual o dada:
- dpkg-architecture -elinux-alpha
- dpkg-architecture -amips -elinux-mips
Revisa si la arquitectura actual o introducida con «-a» es de un sistema Linux:
- dpkg-architecture -ilinux-any
- dpkg-architecture -ai386 -ilinux-any
FICHEROS
Todos los ficheros deben estar presentes para que dpkg-architecture funcione. Puede sobreescribir la ubicación en tiempo de ejecución mediante la variable de entorno «DPKG_DATADIR».- /usr/share/dpkg/cputable
- Tabla de nombres de CPU conocidos y su correlación con su nombre GNU.
- /usr/share/dpkg/ostable
- Tabla de sistemas operativos conocidos y su correlación con su nombre GNU.
- /usr/share/dpkg/triplettable
- Correlación entre tuples de 3 de la arquitectura de Debian, y los nombres de arquitectura de Debian.
AUTOR
dpkg-architecture y su página de manual fueron escritos originalmente por Marcus Brinkmann <[email protected]>.
TRADUCTOR
Rudy Godoy <[email protected]>, Rubén Porras <[email protected]>, Bruno Barrera C. <[email protected]>, Carlos Izquierdo <[email protected]>, Esteban Manchado y NOK. Debian L10n Spanish <[email protected]>.Revisiones por Santiago Vila <[email protected]>, Javier Fernández-Sanguino, Rubén Porras, Luis Uribe y Omar Campagne.