Cómo crear un paquete Debian

Debian Package Creation Howto



1. Prefacio

Ser responsable de una máquina significa cuidar tanto el hardware como los componentes del software. Como se ve en la vida diaria como administrador de sistemas, es mucho mejor instalar el software como un paquete de software en lugar de un montón de archivos fuente. Esto reduce los costos para mantener adecuadamente el sistema.

Los paquetes que están disponibles en su distribuidor preferido son validados y supervisados ​​por un encargado del paquete. Probó el software y asegura que se ajusta a los otros paquetes de software disponibles en la distribución. Además, el paquete está firmado con una clave GPG del responsable del paquete. Esto garantiza la integridad del paquete y le muestra que el paquete proviene de una fuente confiable.







El formato del paquete depende de su distribución de Linux. Los formatos seleccionados son los siguientes:



|_+_|

Paquetes utilizados en: Debian GNU / Linux , Ubuntu , Armbiano , Linux Mint , Knoppix



|_+_|

Paquetes utilizados en: Sombrero rojo , Fedora , CentOS , OpenSuse





|_+_|

Paquetes utilizados en: Slackware

|_+_|

Paquetes utilizados en: Arch Linux



Este documento explica brevemente cómo crear un paquete para Debian GNU / Linux. Para obtener información detallada sobre el formato del paquete Debian y las herramientas para mantener un sistema Linux basado en `deb`, puede consultar el Libro de administración de paquetes de Debian. [dpmb] Para crear paquetes para Debian GNU / Linux, estos documentos son esenciales:

  • La guía del nuevo mantenedor de Debian [dnmg]
  • La referencia del desarrollador de Debian [RDA]
  • El tutorial de empaquetado de Debian [pueden]
  • El manual de políticas de Debian [dpm]

El paquete con el que trabajaremos se llama 'helloworld' y tiene el número de versión 0.1. Para fines de demostración, simplemente contiene un único script de Python que genera el famoso mensaje ¡Hola, mundo !:

|_+_|

2. Requisitos

2.1. Clave GPG

Como paso 1, tenga su clave GPG disponible. Posteriormente, se necesitará la clave para firmar el paquete. Tenga en cuenta que los paquetes sin firmar no son confiables y no pueden formar parte del universo Debian.

En caso de que aún no tenga una clave GPG, cree una. Puede seguir los tres pasos siguientes. El primer comando genera una nueva clave, el segundo exporta su nueva clave a un archivo separado y el tercero agrega la clave a su llavero personal.

|_+_|

Durante la creación, asegúrese de que el nombre de pila _SU NOMBRE_ sea correcto. Es común usar una combinación de nombre y apellido. Este nombre tendrá que ser exactamente el mismo en el paquete, entonces, al crear el archivo `control` del paquete Debian. Para obtener más información sobre GPG, consulte el Manual de privacidad de GNU [gph].

2.2. La cadena de herramientas de embalaje

Para construir un paquete Debian con código fuente, se requieren los siguientes paquetes de software en su sistema:

  • construir-esencial
  • autoconf
  • automake
  • autotools-dev
  • dh-make
  • debhelper
  • devscripts
  • fakeroot
  • xutils
  • lintian
  • pbuilder

Como usuario `root` puede instalarlos usando el siguiente comando:

|_+_|

2.3. Prepare el software para empaquetar

Tenemos que preparar un directorio para construir el paquete. Cree un directorio para preparar el entorno en el que construiremos el paquete:

|_+_|

Copie el archivo comprimido `tar.gz` en el directorio:

|_+_|

Cambie al directorio y extraiga el paquete:

|_+_|

Ahora, el directorio contiene tanto el código fuente en un directorio separado como el archivo comprimido:

|_+_|

3. Debianización

En este punto, agregaremos los archivos que son específicos de un paquete Debian. Es por eso que este paso se llama _Desbianización_ del software. Esto se hace en varios pasos únicos.

3.1 Preparar la estructura del paquete

Cambie al directorio que guarda todo el código fuente del paquete. En nuestro ejemplo, el paquete contiene el archivo `helloworld.py`, solo:

|_+_|

Agreguemos los archivos que son específicos de un paquete Debian. Entra en juego la herramienta `dh_make`. El interruptor `-e` usa la dirección dada como la dirección de correo electrónico en el campo` Maintainer` del archivo `debian / control`. Para crear el paquete, utilice su propia dirección de correo electrónico. Recuerde utilizar la misma dirección de correo electrónico que corresponde a su clave GPG.

El interruptor `-f` usa el archivo dado como el archivo fuente original y omite la copia del árbol del programa actual a` program.orig`.

|_+_|

Cuando se le solicite, se le pedirá que seleccione el tipo de paquete que se debe crear. Para elegir _single binary_ escriba `s`.

|_+_|

Esto da como resultado un directorio llamado `debian`:

|_+_|

Este directorio contiene todos los archivos específicos del paquete.

3.2. Ajustar el archivo de control

El archivo `debian / control` mantiene las dependencias que se necesitan _para construir_ el paquete. Usando el comando `dpkg-depcheck -d. / Configure` recibirá una lista con todos los paquetes requeridos. En nuestro caso, no se necesitan más paquetes porque Python es un lenguaje interpretado.

A continuación, tenemos que editar el archivo `debian / control` y agregar valores específicos del paquete. Para nuestro ejemplo, tiene el siguiente aspecto:

|_+_|

3.3. Ajustar el archivo de derechos de autor

El archivo `debian / copyright` contiene la información de licencia del paquete de software. Está preparado para el lanzamiento mediante GNU Public License 2 (GPLv2). Para nuestro ejemplo, tiene el siguiente aspecto:

|_+_|

3.4. Ajustar el archivo de registro de cambios

Después de la información de copyright, se debe ajustar el archivo `debian / changelog`. En nuestro ejemplo agregamos la información Publicación inicial.

|_+_|

Eso es todo lo que necesitamos hasta ahora, ahora podemos construir el paquete, finalmente.


4. Crea el paquete

Para construir el paquete tenemos que subir un directorio y ejecutar el siguiente comando:

|_+_|

La opción `-rfakeroot` permite a` dpkg-buildpackage` ejecutar comandos como un usuario privilegiado con la ayuda del comando `fakeroot`. Esto es necesario para preparar el paquete y crear archivos y directorios.
El comando anterior da como resultado una lista más larga de mensajes de salida (que se muestran aquí en un entorno de idioma alemán):

|_+_|

4.1. Validando el paquete

Felicitaciones, logró construir un paquete Debian, ¡sí! Ahora, echemos un vistazo más de cerca al paquete. Aquí entra en juego `lintian`. Esta herramienta valida su paquete para encontrar violaciones de las estrictas reglas que deben cumplir los paquetes Debian.

Para ejecutar las pruebas, escriba el siguiente comando:

|_+_|

La herramienta no encuentra infracciones de reglas, sino también errores de ortografía y caracteres incorrectos. El interruptor `–pedantic` pide a` lintian` que sea mucho más crítico de lo habitual. Como puede ver a continuación, `lintian` está un poco gruñón y ha descubierto tres advertencias y un error.

Excepto por la primera advertencia, podemos fácilmente hacer feliz a `lintian` y ajustar el contenido del paquete de acuerdo con el conjunto de reglas. La advertencia `new-package-should-close-itp-bug` significa que no hay ningún informe de error contra el paquete ITP (ITP significa _dependiente del paquete_). Para un paquete Debian normal, se debe enviar un informe de error al rastreador de errores del paquete ITP para notificar a otros que tiene la intención de comenzar a empaquetar este software.

4.2. Advertencia: `readme-debian-contains-debmake-template

El archivo `README.Debian` está destinado a guardar notas adicionales sobre este paquete. `dh_make` creó este archivo para nosotros:

|_+_|

En nuestro ejemplo, no tenemos información adicional, por lo que podemos eliminar el archivo.

4.3. Advertencia: `descripción-comienza-con-espacios-iniciales`

Esta advertencia surge porque la descripción más larga de nuestro paquete en el archivo `debian / control` comienza con más de un espacio. Tan pronto como eliminemos un solo espacio, la advertencia desaparecerá.

4.4. Error: `descripción-sinopsis-está-duplicada`

Cada paquete requiere una descripción corta y más larga en `debian / control`. Este error surge porque ambas descripciones son idénticas. Tan pronto como ampliamos la descripción más larga, el error desaparece.


5. Enlaces y referencias

– [ddr] Andreas Barth, Adam Di Carlo, Raphaël Hertzog, Lucas Nussbaum, Christian Schwarz, Ian Jackson: La referencia del desarrollador de Debian
- [Maldita sea] Josip Rodin, Osamu Aoki: La guía del nuevo mantenedor de Debian
- [dpmb] Axel Beckert, Frank Hofmann: El libro de gestión de paquetes de Debian
– [dpm] El manual de políticas de Debian
- [pueden] El tutorial de empaquetado de Debian
- [gph] El manual de privacidad de GNU
- [paquete lushpai] Alex Lushpai: Cómo crear un paquete debian desde la fuente


6. Agradecimientos

El autor quisiera agradecer Axel Beckert y Gerold Rupprecht por su apoyo y críticas durante la preparación de este artículo.