Los paquetes normalmente contienen todos los archivos necesarios para implementar un conjunto de órdenes o características relacionadas. Hay dos tipos de paquetes Debian:
dpkg
; se dan detalles en su página de manual.
.dsc
que describe el paquete fuente (incluyendo los nombres de los
siguientes archivos), un archivo .orig.tar.gz
que contiene el
código fuente original sin modificar en formato tar comprimido con gzip,
y usualmente un archivo .diff.gz
que contiene los cambios
específicos de Debian al código fuente original. La utilidad
dpkg-source
empaqueta y desempaqueta los archivos fuente de
Debian; se dan detalles en su página de manual.
La instalación de software por el sistema de paquetes usa
"dependencias" que son cuidadosamente diseñadas por los
encargados del paquete. Estas dependencias están documentadas en el archivo
de control
asociado con cada paquete. Por ejemplo, el paquete
que contiene el compilador de C de GNU (gcc
) "depende"
del paquete binutils
que incluye el enlazador y el ensamblador.
Si un usuario intenta instalar gcc
sin haber instalado antes
binutils
, el sistema de paquetes de Debian dará un mensaje de error
avisando de que también necesita binutils
, e instalará gcc
sólo si el usuario acepta instalar binutils
primero.
(Sin embargo, esta opción puede ser anulada por el usuario persistente).
Ver más
detalles sobre dependencia de paquetes
abajo.
Las utilidades de paquetes de Debian se pueden usar para:
Un "paquete" Debian, o un archivo Debian, contiene los
ejecutables, bibliotecas y documentación asociada con una forma
particular de un programa o conjunto de programas relacionados.
Normalmente un archivo Debian tiene un nombre que acaba en .deb
.
Los detalles del formato de los paquetes binarios Debian se describen en la
página de manual deb
(5). Este formato interno está sujeto a
cambios, así que use siempre dpkg-deb
(8) para manipular archivos
.deb
.
Los nombres de los paquetes binarios siguen la siguiente convención: <nombre>_<NúmeroDeVersión>-<NúmeroDeRevisiónDebian>.deb
Nótese que nombre
se supone que es el nombre del paquete.
Como prueba, se puede sacar el nombre de paquete asociado con un archivo
Debian concreto (archivo .deb) de una de las siguientes formas:
dpkg --info nombre_VVV-RRR.deb
. Esto manda un
mensaje a STDOUT que da, entre otras cosas, el nombre formal del paquete.
El componente VVV
es el número de versión especificado por el
desarrollador original. Aquí no hay estándares establecidos, así que el
número de versión puede tener formatos tan distintos como
"960428" y "2.7.2.l.3".
El componente RRR
es el número de revisión Debian, y lo establece
el desarrollador Debian (o un usuario individual, si decide construir el
paquete él mismo). Este número corresponde al nivel de revisión del
paquete debian (que incluye el Makefile específico de Debian, llamado
debian/rules
, así como el archivo de control Debian, normalmente
llamado debian/control
). De este modo, un nuevo nivel de revisión
normalmente significa cambios en el Makefile de Debian, el archivo de
control, los scripts de instalación o desinstalación, o en los archivos de
configuración usados en el paquete.
Se dan detalles sobre el contenido de un archivo de control en el manual del programador de dpkg. Resumiendo, este es un ejemplo de archivo de control para el paquete hola:
Package: hola
Version: 1.3-13
Architecture: i386
Depends: libc5 (>= 5.2.18)
Installed-Size: 31
Maintainer: Ian Jackson <ian@chiark.greenend.org.uk>
Description: La clásica bienvenida, y un buen ejemplo
El programa GNU hola produce saludo amistoso y familiar. Permite
a los no programadores usar una herramienta clásica en la informática
que de otro modo no tendrían disponible.
.
Hablando en serio; es un ejemplo de cómo se hace un paquete Debian.
Es la versión Debian del programa 'hola mundo' del proyecto GNU (el
cual es a su vez un ejemplo del proyecto GNU).
El campo Package informa del nombre del paquete. Este es el nombre mediante el cual el paquete se puede manipular con las utilidades de paquetes de Debian, y normalmente es parecido (aunque no necesariamente igual) que la primera cadena de caracteres del nombre del archivo Debian.
El campo version da a la vez el número de versión del desarrollador original y (como último componente) el nivel de revisión del paquete Debian de este programa, tal y como se describe en pkgname .
El campo Architecture especifica el procesador para el que fué compilado este binario en concreto.
El campo Depends da una lista de paquetes que tienen que estar instalados para poder instalar este paquete con éxito.
El campo Installed-Size indica cuanto espacio de disco ocupará el paquete instalado. Está pensado para que lo usen los programas de instalación para indicar si existe suficiente espacio de disco para instalar el programa.
El campo Maintainer da la dirección de correo electrónico de la persona actualmente responsable del mantenimiento del paquete.
El campo Description da un pequeño resumen de las características del paquete.
Los conffiles son listas de archivos de configuración, normalmente
guardadas en /etc
, que el sistema de mantenimiento de paquetes no
sobrescribe cuando se actualiza un paquete. Esto asegura que los valores
locales de los contenidos de estos archivos se conserven, y es una
característica imprescindible para permitir la actualización de paquetes
en un sistema en funcionamiento.
Para determinar exactamente qué archivos se conservan durante una
actualización, ejecute dpkg --status paquete
.
Estos archivos son scripts ejecutables que se usan automáticamente antes o
después de que se instale un paquete.
Junto con el archivo control
, todos estos archivos forman parte
de la sección de "control" de un archivo Debian.
Los archivos individuales son:
Este script se ejecuta antes de que se desempaquete el contenido del archivo Debian (".deb"). Muchos scripts 'preinst' detienen los servicios de los paquetes que se actualizan hasta que su instalación o actualización se completa (después de la ejecución exitosa del script 'postinst').
Este script normalmente completa cualquier configuración
necesaria en el paquete nombre
una vez que nombre
ha
sido desempaquetado de su archivo Debian (".deb").
A veces, los scripts 'postinst' piden al usuario datos, y/o le advierten
de que si acepta los valores por defecto, tendrá que acordarse de volver
atrás y reconfigurar dicho paquete. Muchos scripts 'postinst' ejecutan
las órdenes necesarias para empezar o reanudar un servicio una vez que el
nuevo paquete ha sido instalado o actualizado. Es una buena idea el
repasar el contenido de un script 'postinst' en busca de consejos de
configuración cuando se instale un paquete por primera vez.
Este script normalmente detiene cualquier demonio asociado con un paquete. Se ejecuta antes de borrar los archivos asociados a un paquete.
Este script normalmente modifica enlaces u otros archivos
asociados con nombre
. (Ver notas sobre
paquetes Virtuales.)
Todos los archivos de control se pueden encontrar en
/var/lib/dpkg/info
.
Los archivos importantes para el paquete nombre
empiezan con el
nombre "nombre" y tienen extensiones "preinst",
"postinst", etc., como corresponda. El archivo nombre.list
en dicho directorio enumera todos los archivos que se instalaron con el
paquete nombre
.
(Nótese que la localización de estos archivos es información interna de
dpkg; no se debe confiar en ella.)
Cada paquete Debian recibe una prioridad por los responsables de la distribución, como ayuda al sistema de mantenimiento de paquetes. Las prioridades son:
Un paquete virtual es un nombre genérico que se aplica a uno cualquiera de
un conjunto de paquetes, los cuales proveen todos ellos de una funcionalidad
básica similar. Por ejemplo, los programas tin
y trn
son
lectores de noticias los dos, y por tanto satisfacen por igual cualquier
dependencia de un programa que necesite un lector de noticias en el sistema
para funcionar o ser útil.
Se dice que ambos proveen el "paquete virtual" llamado
lector de noticias
.
Igualmente, smail
y sendmail
proveen ambos de la
funcionalidad de un agente de transporte de correo. También se dice que ambos
proporcionan el paquete virtual "agente de transporte de correo".
Si cualquiera de ellos está instalado, cualquier programa que exija la
instalación de un agente de transporte de correo
se dará por
satisfecho con la existencia de este paquete virtual.
Debian proporciona un mecanismo mediante el cual, si más de un paquete que
permita el mismo paquete virtual se instala en un sistema, los
administradores del sistema pueden marcar uno como el paquete preferido.
La orden importante es alternativas de actualización
, y se describe
con detalle en la sección de
diversions.
El sistema de paquetes Debian tiene un conjunto de "dependencias" diseñadas para indicar (mediante un único indicador) el nivel al que puede operar un Programa A independientemente de la existencia del Programa B en un sistema dado:
Información más detallada sobre estos temas se puede encontrar en el Manual del Programador de Debian.
"Pre-Dependencia" es una dependencia especial.
En el caso de la mayoría de paquetes, dpkg
extraerá el contenido del
archivo correspondiente (p.ej., su archivo .deb
) tanto si los
archivos de los que depende existen en el sistema como si no. Desempaquetar
significa que dpkg
extraerá los archivos del paquete que se espera
que queden instalados en el sistema de ficheros, y los pondrá en su
localización correspondiente. Si el paquete depende de la existencia
de otro paquete no instalado en el sistema, dpkg
se negará a
completar la instalación ejecutando su orden "configure" hasta
que los otros paquetes se instalen.
Pero para algunos paquetes, dpkg
se negará incluso a desempaquetar
los archivos hasta que se resuelvan las dependencias. Se dice de esos
paquetes que "Pre-dependen" de la presencia de algún otro paquete.
El proyecto Debian proporcionó este mecanismo para permitir la actualización
segura de sistemas en formato a.out
a formato ELF
, donde el
orden en que se instalan los paquetes era crítico.
Información más detallada sobre el uso de estos términos se puede encontrar en el Manual del Programador de Debian.
Estas marcas indican lo que el usuario desea hacer con un paquete (ya sea
mediante las acciones del usuario en la sección "Select" de
dselect
, o por las llamadas directas del usuario a dpkg
).
Sus significados son:
Ver el Manual del Programador de dpkg y el Manual de Normas de Debian