Capítulo 5 - Archivos de control y sus campos

El sistema de gestión de paquetes manipula datos representados en un formato común, conocido como datos de control, almacenados en archivos de control. Los archivos de control se utilizan para los paquetes fuente, los paquetes binarios y los archivos .changes que controlan la instalación de los archivos incorporados [24].

5.1 Sintaxis de los archivos de control

Un archivo de control consiste de uno o más párrafos con campos [25]. Los párrafos están separados por líneas en blanco. Algunos archivos de control sólo permiten un párrafo; otros varios, en cuyo caso cada párrafo se refiere normalmente a un paquete distinto. (Por ejemplo, en los paquetes fuente, el primer párrafo se refiere al paquete fuente, los párrafos posteriores se refieren a paquetes binarios generados de los fuentes).

Cada párrafo consiste de una serie de campos de datos; cada campo consiste del nombre del campo, seguido de dos puntos y luego el valor/dato asociado con ese campo. Finaliza con el fín de la línea. Antes o después del valor puede existir espaciado horizontal (espacios y tabuladores) y es ignorado allí; convencionalmente se coloca un solo espacio después de los dos puntos. Por ejemplo, un campo podría ser:

el nombre del campo es Package y el valor del campo es libc6.

Algunos valores de campos pueden abarcar varias líneas; en este caso cada línea de continuación debe iniciarse con un espacio o tabulador. Todos los espacios o tabuladores al final de las líneas de valores de campo se ignoran.

Excepto donde se establece de otro modo, sólo se permite una línea de datos y el espacio en blanco no es significativo en el cuerpo de un campo. El espacio en blanco no debe aparecer en nombres (de paquetes, arquitecturas, archivos o cualquier otra cosa) o en números de versión, o entre los caracteres de las relaciones de versión multi-caracteres.

En los nombres de archivo no se distingue entre mayúsculas y minúsculas, pero es habitual colocar la mayúscula inicial en los nombres de campos, como se muestra más abajo.

No se permiten líneas en blanco, o líneas que consisten solamente de espacios y tabuladores dentro de los valores de campo o entre campos - eso significaría un nuevo párrafo.

5.2 Archivos de control de paquetes fuente -- debian/control

El archivo debian/control contiene la información más vital (y versión-independiente) sobre el paquete fuente y sobre los paquetes binarios que éste crea.

El primer párrafo del archivo de control contiene información sobre el paquete fuente en general. Los conjuntos subsecuentes describen cada uno un paquete binario construido por la ramificación fuente.

Los campos en el párrafo general (el primero, para el paquete fuente) son:

Los campos en los párrafos de paquetes binarios son:

La semántica y la sintaxis de los campos se describen más abajo.

Estos campos son utilizados por dpkg-gencontrol para generar archivos de control para los paquetes binarios (ver más abajo), por dpkg-genchanges para generar el archivo .changes para acompañar la incorporación, y por dpkg-source cuando crea el archivo de control de fuente .dsc como parte de un archivo fuente.

Los campos pueden contener referencias variables - sus valores serán sustituidos por dpkg-gencontrol, dpkg-genchanges o dpkg-source cuando estos generan archivos de control.

Vea los detalles en Sustitución de variables: debian/substvars, Sección 4.9.

5.3 Archivos de control de paquetes binarios -- DEBIAN/control

El archivo DEBIAN/control contiene la información más vital (y versión-dependiente) sobre un paquete binario.

Los campos en este archivo son:

5.4 Archivos de control Debian-fuente -- .dsc

Este archivo contiene una serie de campos identificados y separados como los campos en el archivo de control de un paquete binario. Los campos se listan más abajo; su sintaxis se describe en Archivos de control y sus campos (del antiguo Manual de Empaquetamiento) , Apéndice D.

dpkg-source genera el archivo de control de un paquete fuente cuando compila el archivo fuente, desde otros archivos en el paquete fuente, descritos anteriormente. Al desempaquetar, se revisa contra los archivos y directorios en los demás sitios del paquete fuente.

5.5 Archivos de cambios Debian -- .changes

El programa de mantenimiento del repositorio Debian utiliza los archivos .changes para procesar las actualizaciones a los paquetes. Estos contienen un sólo párrafo que contiene a su vez información del archivo debian/control y otros datos acerca del paquete fuente obtenidos vía debian/changelog y debian/rules.

Los campos en este archivo son:

5.6 Lista de campos 5.6.1 Source (fuente)

Este campo identifica el nombre del paquete fuente.

Este campo sólo puede contener el nombre del paquete fuente en un archivo .changes, .dsc o en la información de control de fuente.

En el archivo de control de un paquete binario puede ir seguido por un número de versión entre paréntesis [26]. Este número de versión se puede omitir (y así es, por dpkg-gencontrol) si tiene el mismo valor que el campo Version del paquete binario en cuestión. El campo en sí puede omitirse de una archivo de control de paquete binario cuando el paquete fuente tiene el mismo nombre y versión que el paquete binario.

5.6.2 Maintainer (encargado)

El nombre y la dirección de correo del encargado. El nombre debería ir en primer lugar, luego la dirección de correo entre <> (en formato RFC822).

Si el nombre del encargado contiene un punto entonces el campo no funcionará como dirección de correo debido a una confusión en la sintaxis especificada en RFC822; un programa que utilice este campo como dirección de correo debe revisar esto y corregir el problema si es necesario (por ejemplo, colocando el nombre entre paréntesis y llevándolo al final, y colocando la dirección de correo adelante).

5.6.3 Changed-By (cambiado por)

Nombre y dirección de correo de la persona que cambió el paquete. Normalmente, el nombre del encargado. Todas las reglas mencionadas para el campo Maintainer se aplican aquí también.

5.6.4 Section (sección)

Este campo especifica el área de aplicación en la cual se ha clasificado el paquete. Ver Subsecciones, Sección 2.4

Cuando aparece en el archivo debian/control proporciona el valor para el subcampo del mismo nombre en el campo Files del archivo .changes. También proporciona el valor predeterminado para el mismo campo en los paquetes binarios.

Por omisión, dpkg-gencontrol no incluye este campo en el archivo de control del paquete binario; use la opción -is (o -isp) para lograr esto.

5.6.5 Priority (prioridad)

Este campo representa cuán importante es que el usuario tenga el paquete instalado. Ver Prioridades, Sección 2.5

Cuando aparece en el archivo debian/control, proporciona el valor para el subcampo del mismo nombre en el campo Files del archivo .changes. También proporciona el valor predeterminado para el mismo campo en los paquetes binarios.

Por omisión, dpkg-gencontrol no incluye este campo en el archivo de control del paquete binario; use la opción -is (o -isp) para lograr esto.

5.6.6 Package (paquete)

El nombre del paquete binario.

Los nombres de paquetes deben consistir solamente de letras minúsculas (a-z), dígitos (0-9), signos más (+) y menos (-), y puntos (.). Deben ser de al menos dos caracteres de largo y deben comenzar con un caracter alfanumérico.

5.6.7 Architecture (arquitectura)

El campo Architecture puede incluir los siguientes conjuntos de valores, dependiendo del contexto y del archivo de control utilizado:

En el archivo principal debian/control del paquete fuente, o en el archivo de control .dsc del paquete fuente, se puede especificar una lista de arquitecturas separadas por espacios, o los valores especiales any o all.

Especificar any indica que el paquete fuente no depende de una arquitectura particular y debería compilar perfectamente en cualquiera de ellas. El(los) paquete(s) binario(s) producido será específico a cualquiera que sea la arquitectura donde se compile. [27]

Especificar una lista de arquitecturas indica que la fuente compilará un paquete dependiente de la arquitectura, y funcionará correctamente sólo en las arquitecturas listadas. [28]

En un archivo .changes, el campo Architecture lista la(s) arquitectura(s) del(los) paquete(s) que están siendo incorporados. El campo será una lista; si la fuente del paquete también se está incorporando, la entrada especial source también está presente.

Ver Libreto de compilación principal: debian/rules, Sección 4.8 para información de cómo disponer la arquitectura para el proceso de compilación.

5.6.8 Essential (esencial)

Este es un campo booleano que sólo puede aparecer en el archivo de control de un paquete binario o en un párrafo de campos de un archivo de datos de control de fuente prinicipal.

Si se coloca el valor yes (sí) entonces el sistema de gestión de paquetes rehusará remover el paqute (aunque actualizarlo y reemplazarlo aún es posible). El otro valor posible es no, lo cual es lo mismo que no tener el campo en absoluto.

5.6.9 Campos de relación entre paqutes:: Depends, Pre-Depends, Recommends, Suggests, Conflicts, Provides, Replaces, Enhances

Estos campos describen las relaciones de un paquete con otros paquetes. Su sintaxis y semántica se describen en Declaración de relaciones entre paquetes, Capítulo 7

5.6.10 Versión de los estándares

La versión más reciente de los estándares (el manual de políticas y los textos asociados) con los cuales cumple el paquete.

El número de versión tiene cuatro componentes: número de versión mayor y menor, y nivel de remiendo mayor y menor. Cuando los estándares cambian de una forma que requiere cambiar cada paquete, el número mayor cambiará. Los cambios significativos que requerirán trabajo en muchos paquetes se señalarán con un cambio en el número menor. El nivel de remiendo mayor cambiará con cualquier cambio en el sentido de los estándares, aunque sea pequeño; el nivel de remiendo menor cambiará cuando se hagan modificaciones cosméticas, tipográficas u otras que ni cambian el sentido del documento ni afectan los contenidos de los paquetes.

Por lo tanto sólo los primeros tres componentes de la versión de las políticas son significativos en el campo de control Standards-Version y se pueden especificar estos tres o los cuatro componentes.[29]

5.6.11 Version (versión)

El número de la versión de un paquete. El formato es: [época:]versión_original[-revisión_debian]

Los tres componentes expuestos son:

época

versión_original

revisión_debian

Las cadenas de texto se comparan de izquierda a derecha.

Primero se determina la parte inicial de cada cadena que consiste completamente de caracteres no numéricos. Estas dos partes (una de las cuales pudiese estar vacía) se comparan lexicalmente. Si se encuentra alguna diferencia, se devuelve. La comparación léxica es una comparación de valores ASCII modificados de forma que todas las letras se ordenan antes que todo lo que no es letra.

Luego se determina la parte inicial del resto de cada cadena que consiste completamente de caracteres numéricos. Los valores numéricos de estas dos partes se comparan, y cualquier diferencia se devuelve como resultado de la comparación. Para estos propósitos una cadena vacía (que puede aparecer al final de una o de ambas cadenas de la versión comparada) cuenta como cero.

Estos dos pasos (comparar y remover cadenas iniciales sin dígitos y cadenas numéricas iniciales) se repiten hasta que se encuentra una diferencia o hasta que ambas cadenas se acaban.

Note que el propósito de las 'épocas' es permitirnos dejar atrás errores en la numeración de las versiones, y tratar situaciones en las que hay cambios en el esquema de numeración de versiones. No están dirigidas a tratar números de versión que contienen cadenas de letras que el sistema de gestión de paquetes no puede interpretar (tales como ALPHA o pre-), o con ordenamientos absurdos (el autor de este manual ha escuchado de un paquete cuyas versiones fueron 1.1, 1.2, 1.3, 1, 2.1, 2.2, 2 y así sucesivamente).

5.6.12 Description (descripción)

En un archivo de control fuente o binario, el campo Description contiene una descripción del paquete binario que consiste de dos partes, la sinopsis o descripción corta y la descripción larga. El formato del campo es como sigue:

Las líneas en la descripción extendida pueden tener estos formatos:

Vea La descripción de un paquete, Sección 3.4 para más información.

En un archivo .changes, el campo Description contiene un sumario de las descripciones de los paquetes que están siendo incorporados.

La parte del campo antes de la primera línea está vacío; de ahí en adelante cada línea tiene el nombre de un paquete binario y la línea de descripción sumaria de ese paquete binario. Cada línea está precedida -sangrada- por un espacio.

5.6.13 Distribution (distribución)

En un archivo .changes o en la salida del registro de cambios este campo contiene el(los) nombre(s) de la(s) distribución(es) donde se debería instalar esta versión del paquete. Los encargados del repositorio determinan las distribuciones válidas.[[32]

5.6.14 Date (fecha)

Este campo incluye la fecha en que el paquete fue compilado o editado por última vez.

Normalmente, el valor de este campo se extrae del archivo debian/changelog (ver Registro de cambios Debian: debian/changelog, Sección 4.4).

5.6.15 Format (formato)

Este campo especifica una revisión de formato para el archivo. El formato más reciente descrito en el Manual de Políticas tiene versión 1.5. La sintaxis del valor del formato es la misma que la del número de versión de paquetes, exceptuando que no se permiten épocas ni revisiones Debian (ver Versión, Sección 5.6.11).

5.6.16 Urgency (urgencia)

Esta es una descripción de cuán importante es actualizar a esta versión desde las anteriores. Consiste en una sola palabra clave que normalmente toma uno de los valores low (bajo), medium (medio) o high (alto) (indiferentemente mayúsculas o minúsculas) seguida por un comentario opcional (separado por un espacio) que normalmente está entre paréntesis. Por ejemplo:

El valor de este campo se extrae normalmente del archivo debian/changelog (ver Registro de cambios Debian: debian/changelog, Sección 4.4).

5.6.17 Changes (cambios)

Este campo contiene los datos de los cambios legibles por humanos que describen las diferencias entre la última versión y la actual.

No debería haber nada en este campo antes de la primera línea; las líneas siguientes deben estar sangradas por al menos un espacio; las líneas en blanco se deben representar por una línea que consiste de un espacio y un punto.

El valor de este campo se extrae normalmente del archivo debian/changelog (ver Registro de cambios Debian: debian/changelog, Sección 4.4).

Cada información acerca de cambios de versión debería estar precedida por un línea "título" que como mínimo proporcione la versión, distribución(es) y urgencia, de una forma legible por humanos.

Si se están devolviendo datos de varias versiones la entrada para la versión más reciente debería devolverse primero, y las entradas deberían estar separadas por la representación de una línea en blanco (la línea "título" puede también estar seguida de la representación de una línea en blanco).

5.6.18 Binary (binario)

Este campo es una lista de paquetes binarios.

Cuando aparece en el archivo .dsc es la lista de paquetes binarios que un paquete fuente puede producir. No necesariamente produce todos estos paquetes binarios para cada arquitectura. El archivo de control fuente no contiene detalles de cuáles arquitecturas son apropiadas para cuáles paquetes binarios.

Cuando aparece en un archivo .changes lista los nombres de los paquetes binarios que se están incorporando realmente.

La sintaxis es una lista de paquetes binarios separada por comas [33]. Actualmente los paquetes deben estar separados utilizando solamente espacios en el archivo .changes.

5.6.19 Installed-Size (tamaño instalado)

Este campo aparece en los archivos de control de paquetes binarios, y los archivos Packages. Proporciona la cantidad total de espacio en disco requerido para instalar el paquete mencionado.

El espacio en disco se representa en kilobytes como un número decimal simple.

5.6.20 Files (archivos)

Este campo contiene una lista de archivos con información acerca de cada uno. La información precisa y la sintaxis varían con el contexto. En todos los casos la parte del campo que corresponde al contenido, en la misma línea que el nombre del campo, está vacía. El resto del campo es una línea por archivo, cada línea sangrada por un espacio y conteniendo un número de sub-campos separados por espacios.

En el archivo .dsc, cada línea contiene la suma de revisión MD5, tamaño y nombre del archivo tar y (si es aplicable) el archivo diff que conforma el resto del paquete fuente [34. La forma exacta de los nombres de archivo se describe en Paquetes fuente como repositorios, Sección C.3.

En el archivo .changes este campo contiene una línea por cada archivo que está siendo incorporado. Cada línea contiene la suma de revisión MD5, tamaño, sección y prioridad y el nombre del archivo. La sección y la prioridad son los valores de los campos correspondientes en el archivo de control fuente principal. Si no se especifica sección o prioridad entonces -deberían utilizarse, aunque los valores de sección y prioridad deben estar especificados para que los paquetes nuevos sean instalados adecuadamente.

El valor especial byhand para la sección en un archivo .changes indica que el archivo en cuestión no es un paquete ordinario y debe instalarse a mano por los encargados de la distribución. Si la sección es byhand la prioridad debería ser -.

Si una nueva revisión Debian de un paquete se está publicando y no se está distribuyendo ningún archivo fuente original, el .dsc debería contener el campo Files para el paquete fuente original _versión_original_del_paquete_=.orig.tar.gz=, pero el archivo .changes debería excluirlo. En este caso el archivo fuente original en el sitio de la distribución debe coincidir exactamente, byte por byte, con el archivo fuente original que fue utilizado para generar el archivo .dsc y el diff que está siendo incorporado.

5.6.21 Closes

Una lista separada por espacios de números de informe de errores que la incorporación gobernada por el archivo .changes cierra.

5.7 Campos definidos por el usuario

Se pueden agregar campos definidos por el usuario al archivo de control del paquete fuente. Tales campos serán ignorados, y no serán copiados a (por ejemplo) los archivos de control de paquetes binarios o fuente, o a los archivos de control de incorporación.

Si desea agregar campos adicionales no respaldados a estos archivos de salida, debería utilizar el mecanismo que se describe aquí.

Los campos en el archivo principal de información de control fuente que comiencen con X, seguida por una o más letras BCS y un guión -, se copiarán a los archivos de salida. Sólo la parte del nombre del campo después del guión se utilizará en el archivo de salida. Si se utiliza la letra B el campo aparecerá en los archivos de control de paquetes binarios. Si se utiliza la letra S en los archivos de control de paquetes fuente y si se utiliza la letra C en los archivos de control de incorporación (.changes).

Por ejemplo, si el archivo principal de control de información fuente contiene el campo

entonces los archivos de control de paquetes fuente y binario contendrán el campo