PDF de programación - Empaquetando software para Debian: Herramientas y procesos básicos

Empaquetando software para Debian: Herramientas y procesos básicosgráfica de visualizaciones

Publicado el 2 de Mayo del 2017
111 visualizaciones desde el 2 de Mayo del 2017
189,1 KB
26 paginas
Creado hace 7a (11/09/2012)
¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

Empaquetando software para Debian:

Herramientas y procesos básicos

Gunnar Wolf

Desarrollador del Proyecto Debian

DebConf12  8 al 15 de julio, 2012

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

Índice

1 ¾Paquetes?

2 Paquetes fuente

3 Estructura

4 ¾Qué sigue?

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

. . . Así que quieres participar en Debian

La motivación básica para esta ponencia (y este track)
. . . Puede ser difícil saber por dónde comenzar
Hagas lo que hagas, comprender lo que son los paquetes
probablemente será fundamental

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

Paquetes: La unidad básica

El principal mecanismo de distribución de binarios
(programas ya compilados)
Recetas completas de compilación en paquetes fuente
Información de dependencias que nos otorgan un sistema
funcional, completo
Una suite es un conjunto de paquetes de determinadas
versiones, que están ampliamente probados en su
conjunto

Se puede mezclar paquetes de diferentes suites, pero no
se recomienda. . . Especialmente a usuarios nales
½Y recuerda que nuestra prioridad son los usuarios!

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

Infraestructura de manejo de paquetes

apt (A Package Tool), 1998

apt-get, aptitude, synaptic, etc.

Una de las inovaciones que presentó Debian es la de una
infraestructura que maneja listas de paquetes
Entre sus principales funciones:

Resolución de dependencias y conictos
Obtención de paquetes (de Internet, de CD)
Llamar a dpkg en el órden correcto

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

¾Y por qué quiero manejar paquetes?

Para agregar software nuevo a Debian
Para adoptar paquetes huérfanos
Para corregir bugs
Para traducir las cadenas de un programa
. . .

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

Paquetes fuente, paquetes binarios

El usuario trabaja con paquetes binarios

Archivos .deb
Los que están compilados para su computadora
(arquitectura) especíca y listos para usar
El desarrollador trabaja con paquetes fuente

Aquellos a partir de los cuales se compilan los paquetes
binarios
Dos (típicamente tres) o más archivos: *.orig.tar.gz,
*.debian.tar.gz y *.dsc
Para trabajar, desempaquetamos el paquete fuente y
trabajamos en el árbol resultante (dpkg-source -x)

Al construir el paquete, se generan ambos

El .orig.tar.gz se mantiene idéntico (fuentes prístinas)

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

Índice

1 ¾Paquetes?

2 Paquetes fuente

3 Estructura

4 ¾Qué sigue?

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

Desde fuera

El paquete fuente consta de (típicamente) tres archivos1,

todos ellos iniciando con el nombre del paquete y su versión:

.orig.tar.gz Fuentes provenientes del autor. No se

modican (mantiene el mismo checksum, es
vericable que no tuvo ninguna modicación)
.debian.tar.gz Un árbol parcial, que se desempaqueta

dentro del directorio debian/.

.dsc Descripción autogenerada con las dependencias

de construcción del paquete e información básica
de sus mantenedores.
Lleva la rma GPG de quien la sube al archivo.
1Hay otras estructuras que pueden generar sólo dos, o más de tres

archivos, o un archivo .diff.gz, pero quedan fuera del ámbito de esta
plática

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

Dentro del paquete (1)

Toda la magia se hace dentro del directorio debian/ dentro
del directorio fuentes. Puede haber muchos archivos, pero los

cuatro fundamentales son:

control Información básica del paquete fuente:

Descripción, mantenedor, los paquetes binarios a
generar, relaciones con otros paquetes.
rules Archivo interpretado por make con las

instrucciones para construir el paquete binario.
Típicamente usa a un asistente de construcción
como dh (debhelper).

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

Dentro del paquete (2)

copyright Información detallada de los derechos de autor.

Puede ser a texto corrido, pero estamos migrando
a un formato estandarizado, analizable (DEP5)

changelog Bitácora con la historia del paquete, en un

formato estandarizado.

Todas las modicaciones que hagamos al paquete deben estar

dentro del directorio debian/.

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

¾Y cómo se come?

Para bajar un paquete fuente: #+srcname bajapaqfuente

$ apt-get source unpaquete
(...)
$ ls unpaquete*
unpaquete-2.1
unpaquete_2.1.orig.tar.gz
$

unpaquete_2.1-2.debian.tar.gz

unpaquete_2.1-2.dsc

Para construirlo: #+srcname construyepaqfuente

$ cd unpaquete-2.1
$ dpkg-buildpackage

Y el resultado esperado, unpaquete_2.1-1_i386.deb (o
algo equivalente).

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

Índice

1 ¾Paquetes?

2 Paquetes fuente

3 Estructura

4 ¾Qué sigue?

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

debian/control (1)

Es un archivo de formato RFC 822 (como los
encabezados del correo  campo: valor)
Está separado en varios párrafos; el primero describe al
paquete fuente, y el segundo (y subsecuentes) a los
paquetes binarios.

Source: unpaquete
Section: interpreters
Priority: optional
Maintainer: Gunnar Wolf <gwolf@debian.org>
Uploaders: Fulano D. Tal <fulano@tal.org>
Build-Depends: libotropkg-dev
Standards-Version: 3.9.3
(...)

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

debian/control (2)

Package: unpaquete
Architecture: any
Depends: otropkg
Recommends: unpaquete-data
Description: Implementa la lógica de un paquete

Explicamos acá más a detalle los detalles de por qué
este paquete binario puede resultar del interés de
alguien

Package: unpaquete-data
Architecture: all
Description: Datos útiles para unpaquete

Este paquete tiene los datos que típicamente usa
unpaquete.

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

debian/copyright

Hoy en día se recomienda seguir un formato
estandarizado, parseable por computadora, que nos
proporcionará la posibilidad de hacer vericaciones
automatizadas.
La descripción del formato está en
http://dep.debian.net/deps/dep5/
Es importante vericar la información de autoría de todos
los archivos que forman parte del paquete fuente

Muchas veces los autores incluyen copias completas de
otros paquetes (bundling). Hay que documentar todo
esto en debian/copyright
Si alguna parte no fundamental del paquete no es
DFSG-libre, podemos reempaquetar el .orig.tar.gz
omitiéndolo; típicamente ajustamos el número de versión
para explicitarlo (0.1.2 se vuelve 0.1.2+dfsg)

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

debian/copyright

Format: http://www.debian.org/doc/packaging-manuals/

copyright-format/1.0/

Upstream-Name: unpaquete
Source: ftp://ftp.example.com/pub/unpaquete

Files: *
Copyright: Copyright 2012 Tal por Cual <tal@cual.com>
License: GPL-2+

This program is free software; you can redistribute it
and/or modify it under the terms of the GNU General
Public License as published by the Free Software
Foundation; either version 2 of the License, or (at
your option) any later version.
(...)

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

debian/changelog

unpaquete (0.1.2-1) unstable; urgency=low

* New upstream release
* Fixed a bug when foo and bar (Closes: #613263)

-- Gunnar Wolf <gwolf@debian.org>

Fri, 29 Jun 2012 10:07:57 -0500

unpaquete (0.1-1) unstable; urgency=low

* Initial upload (Closes: #501535)

-- Gunnar Wolf <gwolf@debian.org> Thu, 21 Jun 2012 18:30:01 -0500

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

debian/rules (1)

Es la lista de instrucciones para construir el paquete
Es un archivo escrito en GNU Make, con varios objetivos,
incluyendo build, clean, binary, y subobjetivos como
binary-arch y binary-indep
Lo más común (especialmente para los casos simples) es
usar al asistente DebHelper (dh), que permite tener
archivos debian/rules de tres líneas: #+srcname rules

#!/usr/bin/make -f
%:

dh $@

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

debian/rules (2)

Con versiones recientes de dh es común, más que escribir
objetivos, escribir las porciones en que el proceso de
construcción se desvía del estándar (overrides):

override_dh_install:

dh_install
mv debian/unpaquete/var/lib/unpaquete/data \

debian/unpaquete-data/var/lib/unpaquete

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

Otros archivos

Dentro del directorio debian/ puede haber muchos
archivos adicionales
dh recibe muchos de sus parámetros de operación a través
de algunos archivos adicionales, con listados simples en
texto: paqbin.*  dirs, install, manpages, docs, etc.
También están los scripts de mantenedor  Scripts en
shell que se realizan antes o después de instalar o remover
el paquete (preinst, postinst, prerm, postrm)

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

En resumen, necesitas saber. . .

Para construir paquetes de Debian, tienes que saber:

1 Programación básica en shell Bourne (bash o dash)
2 Sintaxis básica de GNU Make
3 Estructurar información en un formato de texto plano
4 Familiarizarte con la familia de comandos de dh (tu mejor

5

aliado: man)
. . . Muchas convenciones internas que hemos desarrollado
con el paso de los años ;-)

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

Índice

1 ¾Paquetes?

2 Paquetes fuente

3 Estructura

4 ¾Qué sigue?

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

Empaquetar es sólo una de las actividades. . .

Hay muchas maneras de participar en Debian
Pero si entras a colaborar en serio, tarde o temprano
terminarás metiendo las manos en un paquete

. . . Aunque sea para corregir un bug
O para hacer alguna traducción
O para tu uso local
O. . .

Y si esto no es para tí, ½no te preocupes! Hay muchas
otras áreas en las que seguramente puedes participar :-)

¾Paquetes?

Paquetes fuente

Estructura

¾Qué sigue?

Referencias útiles

La guía del nuevo mantenedor:
http://www.debian.org/doc/manuals/maint-guide/
La Referencia del Desarrollador Debian:
http://www.debian.org/doc/manuals/developers-
reference/index.en.h
  • Links de descarga
http://lwp-l.com/pdf3266

Comentarios de: Empaquetando software para Debian: Herramientas y procesos básicos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad