Guía de creación de paquetes Debian
Lucas Nussbaum
[email protected]
version 0.24 – 2019-03-13
Guía de creación de paquetes Debian
1 / 90
Acerca de esta guía
Objetivo: ofrecer el conocimiento esencial para la creación de
paquetes de Debian
Modificar paquetes existentes
Crear sus propios paquetes
Comunicarse con la comunidad de Debian
Convertirse en un usuario avanzado de Debian
Cubre los aspectos más importantes, pero no es completo
Tendrá que leer más documentación
Most of the content also applies to Debian derivative distributions
Esto incluye Ubuntu
Guía de creación de paquetes Debian
2 / 90
Esquema
1 Introducción
2 Creación de paquetes fuente
3 Construir y comprobar paquetes
4 Ejercicio práctico 1: modificar el paquete grep
5 Aspectos avanzados de la creación de paquetes
6 Desarrollar paquetes en Debian
7 Conclusions
8 Additional practical sessions
9 Respuestas a ejercicios prácticos
Guía de creación de paquetes Debian
3 / 90
Esquema
1 Introducción
2 Creación de paquetes fuente
3 Construir y comprobar paquetes
4 Ejercicio práctico 1: modificar el paquete grep
5 Aspectos avanzados de la creación de paquetes
6 Desarrollar paquetes en Debian
7 Conclusions
8 Additional practical sessions
9 Respuestas a ejercicios prácticos
Guía de creación de paquetes Debian
4 / 90
Debian
Distribución GNU/Linux
La primera distribución mayoritaria desarrollada «de forma abierta, con el
espíritu de GNU»
No comercial, creado de forma colaborativa por más de 1.000 voluntarios
Tres características principales:
Calidad – cultura de excelencia técnica
Publicamos cuando está listo
Libertad – los desarrolladores y los usuarios se adhieren al Contrato
Social
Fomentando la cultura de Software libre desde 1993
Independencia – ninguna (única) compañía controla Debian
Proceso abierto de toma de decisiones (voluntariedad + democracia)
Amateur en el mejor sentido: creado por el placer de ello
Guía de creación de paquetes Debian
5 / 90
Paquetes Debian
Ficheros .deb (paquetes binarios)
Una potente y cómoda forma de distribuir software a los usuarios
One of the two most common package formats (with RPM)
Universal:
30.000 paquetes binarios en Debian
→ La mayoría del software libre está empaquetado para Debian
Con 12 adaptaciones (arquitecturas), incluyendo dos distintas a
Linux (Hurd y KFreeBSD)
Also used by 120 Debian derivative distributions
Guía de creación de paquetes Debian
6 / 90
El formato de paquete deb
Fichero .deb: un archivo ar
$ ar tv wget_1 .12 -2.1 _i386 . deb
4 Sep
rw -r - -r - - 0/0
rw -r - -r - - 0/0
2403 Sep
rw -r - -r - - 0/0 751613 Sep
5 15:43 2010 debian - binary
5 15:43 2010 control . tar . gz
5 15:43 2010 data . tar . gz
debian-binary: versión del formato de fichero «deb», "2.0\n"
control.tar.gz: Metadatos del paquete
control, sumas de control md5, (pre|post)(rm|inst), accionadores,
bibliotecas compartidas, . . .
data.tar.gz: Ficheros de datos del paquete
Puede crear sus propios ficheros .deb manualmente
http://tldp.org/HOWTO/html_single/Debian-Binary-Package-Building-HOWTO/
No obstante, la mayoría de las personas no lo hacen de esta forma
En esta guía: crear paquetes Debian, con el estilo Debian
Guía de creación de paquetes Debian
7 / 90
Herramientas necesarias
Un sistema Debian (o Ubuntu) con acceso de usuario «root»
Algunos paquetes:
build-essential: has dependencies on the packages that will be
assumed to be available on the developer’s machine (no need to
specify them in the Build-Depends: control field of your package)
también depende de dpkg-dev, que contiene las herramientas
específicas de Debian para la creación de paquetes
devscripts: contiene scripts útiles a los responsables de paquetes
de Debian
En el futuro se mencionarán otras herramientas, como textbfdebhelper, cdbs,
quilt, pbuilder, sbuild, lintian, svn-buildpackage, git-buildpackage, . . .
Instálelos a medida que los necesite
Guía de creación de paquetes Debian
8 / 90
Etapas generales en la creación de paquetes
Réplica de Debian
Red Código fuente original
apt-get source
dget
dh_make
Paquete fuente
Donde se reali-
za casi toda la
parte manual
debuild (Construir y comprobar con
lintian) o dpkg-buildpackage
Uno o varios paquetes binarios
.deb
Envío del paquete (dput)
Instalación (debi)
Guía de creación de paquetes Debian
9 / 90
Ejemplo: reconstruir dash
1 Install packages needed to build dash, and devscripts
sudo apt-get build-dep dash
(requires deb-src lines in /etc/apt/sources.list)
sudo apt-get install --no-install-recommends devscripts
fakeroot
2 Cree un directorio de trabajo y entre:
mkdir /tmp/debian-tutorial ; cd /tmp/debian-tutorial
3 Obtenga el paquete de fuentes de dash
apt-get source dash
(Requiere las líneas deb-src en /etc/apt/sources.list)
4 Construya el paquete
cd dash-*
debuild -us -uc
(-us -uc desactiva el firmado de paquetes con GPG)
5 Compruebe el funcionamiento
Hay algunos ficheros .deb nuevos en el directorio superior
6 Compruebe el directorio debian/
Aquí se realizan las tareas de empaquetado
Guía de creación de paquetes Debian
10 / 90
Esquema
1 Introducción
2 Creación de paquetes fuente
3 Construir y comprobar paquetes
4 Ejercicio práctico 1: modificar el paquete grep
5 Aspectos avanzados de la creación de paquetes
6 Desarrollar paquetes en Debian
7 Conclusions
8 Additional practical sessions
9 Respuestas a ejercicios prácticos
Guía de creación de paquetes Debian
11 / 90
Paquete fuente
Un paquete fuente puede generar varios paquetes binarios
Por ejemplo, las fuentes de libtar generan los paquetes binarios libtar0 y
libtar-dev
Dos tipos de paquete: (si duda, utilice el formato no nativo)
Paquetes nativos: habitualmente es software específico de Debian (dpkg,
apt)
Paquetes no nativos: software desarrollado fuera de Debian
Fichero principal: .dsc (metadatos)
Otros ficheros que dependen de la versión del formato de fuentes
1.0 or 3.0 (native): package_version.tar.gz
1.0 (non-native):
pkg_ver.orig.tar.gz : Fuente original de software
pkg_debver.diff.gz : Parche para añadir cambios específicos
de Debian
3.0 (quilt):
Debian
pkg_ver.orig.tar.gz : Fuente original de software
pkg_debver.debian.tar.gz : Archivo tar con los cambios de
(Para detalles precisos consulte dpkg-source(1))
Guía de creación de paquetes Debian
12 / 90
Ejemplo de paquete fuente (wget_1.12-2.1.dsc)
Format : 3.0 ( quilt )
Source : wget
Binary : wget
A r c h i t e c t u r e : any
Version : 1.12 -2.1
M a i n t a i n e r : Noel Kothe < n o e l @ d e b i a n . org >
Homepage : http :// www . gnu . org / software / wget /
Standards - Version : 3.8.4
Build - Depends : de b h e l p er ( > > 5.0.0) , gettext , texinfo ,
libssl - dev ( >= 0.9.8) , dpatch , info2man
Checksums - Sha1 :
50 d 4 e d 2 4 4 1 e 6 7 [..]1 e e 0e 9 4 2 4 8 2464747 wget_1 .12. orig . tar . gz
d 4 c 1 c 8 b b e 4 3 1 d [..] d d 7 c e f 3 6 1 1 48308 wget_1 .12 -2.1. debian . tar . gz
Checksums - Sha256 :
7578 e d 0 9 74 e 1 2 [..] d c b a 6 5 b 5 7 2 2464747 wget_1 .12. orig . tar . gz
1 e 9 b 0 c 4 c 0 0 e a e [..]89 c402ad78 48308 wget_1 .12 -2.1. debian . tar . gz
Files :
141461 b9c04e4 [..]9 d 1f 2 a b f 8 3 2464747 wget_1 .12. orig . tar . gz
e 9 3 1 2 3 c 9 3 4 e 3 c [..]2 f 3 8 0 27 8 c 2 48308 wget_1 .12 -2.1. debian . tar . gz
Guía de creación de paquetes Debian
13 / 90
Obtener un paquete fuente existente
Del archivo de Debian:
apt-get source paquete
apt-get source paquete=versión
apt-get source paquete/publicación
(Se requieren líneas deb-src en sources.list)
De Internet:
dget url-to.dsc
dget http://snapshot.debian.org/archive/debian-archive/
20090802T004153Z/debian/dists/bo/main/source/web/
wget_1.4.4-6.dsc
(snapshot.d.o proporciona todos los paquetes de Debian desde
2005)
Del sistema de control de versiones (declarado):
debcheckout paquete
Cuando finalice la descarga, extraiga los contenidos con dpkg-source -x
file.dsc
Guía de creación de paquetes Debian
14 / 90
Creación de un paquete fuente básico
Descargue las fuentes del desarrollador original
(fuente original = el que se obtiene de los desarrolladores originales del
software)
Renómbrelo a <paquete_fuente >_<versión_original >.orig.tar.gz
(ejemplo: simgrid_3.6.orig.tar.gz)
Abra el archivo tar
Rename the directory to <source_package >-<upstream_version >
(example: simgrid-3.6)
cd <source_package >-<upstream_version > && dh_make
(from the dh-make package)
Existen alternativas a dh_make para grupos específicos de paquete:
dh-make-perl, dh-make-php, . . .
Se crea el directorio debian/, que contiene muchos ficheros
Guía de creación de paquetes Debian
15 / 90
Ficheros en «debian/»
Todas las tareas de empaquetado se deben realizar modificando ficheros en
debian/
Ficheros principales:
control – Metadatos del paquete (dependencias, etc)
rules – Especifica cómo construir el paquete
copyright – Información de derechos de autor del paquete
changelog – Registro histórico del paquete de Debian
Otros ficheros:
compat
watch
dh_install* targets
*.dirs, *.docs, *.manpages, . . .
scripts de desarrollador
*.postinst, *.prerm, . . .
source/format
patches/ – si tiene que modificar las fuentes del desarrollador original
Varios ficheros utilizan un formato basado en
Comentarios de: Guía de creación de paquetes Debian (0)
No hay comentarios