Prefacio
Ser responsable de una máquina significa cuidar el hardware y los componentes del software. Como se ve en la vida cotidiana como administrador del sistema, es mucho mejor instalar 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 disponibles de su distribuidor preferido son validados y supervisados por un mantenedor de paquetes. Probó el software y asegura que se ajuste a los otros paquetes de software disponibles en la distribución. Además, el paquete está firmado con una clave GPG del mantenedor de paquetes. Esto garantiza la integridad del paquete y le muestra que el paquete es de una fuente confiable.
El formato del paquete depende de su distribución de Linux. Los formatos seleccionados son los siguientes:
debutante
Paquetes utilizados en: Debian Gnu/Linux, Ubuntu, Armbian, Linux Mint, Knoppix
rpm
Paquetes utilizados en: Redhat, Fedora, Centos, OpenSuse
TGZ y TXZ
Paquetes utilizados en: Slackware
alquitrán.xz
Paquetes utilizados en: Arch Linux
Este documento explica cómo crear un paquete para Debian GNU/Linux brevemente. Para obtener información detallada sobre el formato de paquete Debian y las herramientas para mantener un sistema Linux basado en 'Deb', puede echar un vistazo al libro de gestión de paquetes de Debian [DPMB] para crear paquetes para Debian GNU/Linux Estos documentos son esenciales:
El paquete con el que trabajaremos se llama 'Helloworld' y tiene la versión número 0.1. Para fines de demostración, simplemente contiene un solo guión de Python que genera el famoso mensaje "Hola, mundo!":
#!/usr/bin/pythonRequisitos
Como paso 1, tenga su tecla GPG disponible. Más adelante, la clave será necesaria para firmar el paquete. Tenga en cuenta que los paquetes sin firmar no son confiables y no pueden ser parte del universo Debian.
En caso de que no tenga una tecla GPG aún, cree una. Puede seguir los tres pasos a continuación. El primer comando genera una nueva clave, la segunda exporta su nueva clave a un archivo separado, y el tercero agrega la clave a su llavero personal.
$ GPG-Gen-KeyDurante la creación, asegúrese de que el nombre de pila _Ur name_ 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, eche un vistazo al Manual de Privacidad de GNU [GPH].
Para crear un paquete Debian con el código fuente, se requieren los siguientes paquetes de software en su sistema:
Como usuario 'root', puede instalarlos usando el siguiente comando:
# Apt-Get Instale Build-Essential Autoconf Autotools AutoTools-Dev DH-Make Desvscripts Fakeroot Xutils Lintian PbuilderTenemos que preparar un directorio para construir el paquete. Cree un directorio para preparar el entorno en el que construiremos el paquete:
$ mkdir -p ~./construir/helloworld/0.1Copiar el 'alquitrán.Archivo comprimido de GZ en el directorio:
$ cp Helloworld-0.1.alquitrán.gz ~./construir/helloworld/0.1Cambie en el directorio y extraiga el paquete:
$ CD ~./construir/helloworld/0.1Ahora, el directorio contiene tanto el código fuente en un directorio separado como el archivo comprimido:
~/Build/Helloworld/0.1 $ lsDebianización
En este punto, agregaremos los archivos que son específicos de un paquete de Debian. Es por eso que este paso se llama _debianization_ del software. Esto se hace en varios pasos individuales.
Cambiar en el directorio que mantiene todo el código fuente del paquete. En nuestro ejemplo, el paquete contiene el archivo 'Helloworld.py ', solo:
~ $ CD Build/Helloworld/0.1/Helloworld-0.1Agreguemos los archivos que son específicos de un paquete de Debian. La herramienta 'dh_make' entra en juego. El conmutador '-e' utiliza la dirección dada como la dirección de correo electrónico en el campo 'mantenedor' del archivo 'Debian/Control'. Construyendo el paquete Use su propia dirección de correo electrónico, en su lugar. Tenga en cuenta usar la misma dirección de correo electrónico que corresponde a su clave GPG.
El conmutador '-f' utiliza el archivo dado como el archivo de fuente original, y omite la copia del programa de programa actual al programa '.origen.
~/Build/Helloworld/0.1/Helloworld-0.1 $ dh_make -e [email protected] -f… /helloworld -0.1.alquitrán.GZEn el aviso se le pide que seleccione el tipo de paquete que debe crearse. Para elegir _single binary_ type 's'.
Tipo de paquete: solo binario, binario independiente, múltiple binario, biblioteca, módulo de núcleo, parche de kernel?Esto da como resultado un directorio llamado 'Debian':
~/Build/Helloworld/0.1/Helloworld-0.1 $ lsEste directorio contiene todos los archivos específicos del paquete.
El archivo 'Debian/Control' mantiene las dependencias que se necesitan _ para construir el paquete. Usando el comando 'dpkg -depcheck -d ./Configurar 'Recibe una lista con todos los paquetes requeridos. En nuestro caso, no se necesita más paquete 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 se ve como sigue:
Fuente: HelloworldEl archivo 'Debian/Copyright' contiene la información de la licencia para el paquete de software. Está preparado para el lanzamiento a través de GNU Public License 2 (GPLV2). Para nuestro ejemplo se ve como sigue:
Formato: http: // www.debian.org/doc/paquete-manual/copyright-formato/1.0/Después de la información de derechos de autor, el archivo 'Debian/ChangeLog' debe ajustarse. En nuestro ejemplo, agregamos la información "Liberación inicial".
Helloworld (0.1-1) inestable; urgencia = bajoEso es todo lo que necesitamos hasta ahora, ahora podemos construir el paquete, finalmente.
Construir el paquete
Para construir el paquete, tenemos que subir un directorio y ejecutar el siguiente comando:
~/Build/Helloworld/0.1/Helloworld-0.1 $ dpkg -buildpackage -rfakerootLa opción '-rfakerooot' permite '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 muestra aquí en un entorno de idioma alemán):
Felicitaciones - Has logrado construir un paquete Debian - Sí! Ahora, echemos un vistazo más de cerca al paquete. Aquí, 'Lintian' entra en juego. Esta herramienta valida su paquete para encontrar violaciones contra las estrictas reglas que los paquetes Debian tienen que cumplir.
Para ejecutar las pruebas, escriba el siguiente comando:
Lintian Helloworld_0.1-1_amd64.debutanteLa herramienta no encuentra violaciones de reglas sino también errores de ortografía, y personajes incorrectos. El interruptor '-pedantic' pide 'lintian' que sea mucho más crítico de lo habitual. Como puede ver a continuación, 'Lintian' es un poco gruñón y ha descubierto tres advertencias, y un error.
Excepto por la primera advertencia, podemos hacer que 'Lintian' sea feliz y el contenido del paquete de acuerdo con el conjunto de reglas. La advertencia 'New-Package-shold-Cluido-ITP-Bug' significa que no hay un informe de errores contra el paquete ITP (ITP significa _intendido a paquete_). Para un paquete de Debian regular, se debe enviar un informe de error al bugtracker para el paquete de ITP para notificar a otros que tiene la intención de comenzar a empacar este software.
El archivo 'readMe.Debian 'tiene la intención de mantener notas adicionales sobre este paquete. 'dh_make' creó este archivo para nosotros:
Helloworld para DebianEn nuestro ejemplo, no tenemos información adicional, por lo que podemos eliminar el archivo.
Esta advertencia se plantea porque la descripción más larga de nuestro paquete en el archivo 'Debian/Control' comienza con más de un solo espacio. Tan pronto como eliminemos un solo espacio, la advertencia desaparecerá.
Cada paquete requiere una descripción corta y más larga en 'Debian/Control'. Este error se plantea porque ambas descripciones son idénticas. Tan pronto como extendimos la descripción más larga, el error se ha ido.
Enlaces y referencias
- [DDR] Andreas Barth, Adam Di Carlo, Raphaël Hertzog, Lucas Nussbaum, Christian Schwarz, Ian Jackson: referencia del desarrollador de Debian
- [dnmg] Josip Rodin, Osamu Aoki: la guía de Debian New Manderer
- [DPMB] Axel Beckert, Frank Hofmann: el libro de gestión de paquetes de Debian
- [DPM] El manual de políticas de Debian
- [DPT] El tutorial de empaque de Debian
- [GPH] El manual de privacidad de GNU
- [Lushpaipackage] Alex Lushpai: Cómo crear el paquete Debian desde la fuente
Agradecimientos
El autor desea agradecer a Axel Beckert y Gerold Rupprecht por su apoyo, y críticos mientras prepara este artículo.