Construcci´on de paquetes Debian
Jes´us Espino Garc´ıa
11 de Julio de 2005
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
2 / 35
Contenidos
Introducci´on.
Un paquete Debian por dentro.
Construyendo un paquete Debian.
Construyendo Meta-Paquetes con equivs.
Referencias.
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
3 / 35
Introducci´on.
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
4 / 35
¿Qu´e son los paquetes y meta-paquetes Debian?
Paquetes: Son archivos binarios que automatizan el proceso de
instalaci´on de software en distribuciones Debian o basadas en Debian.
Meta-Paquetes: Son archivos binarios que ´unicamente contienen
informaci´on de dependencias y su cometido es realizar la agrupaci´on
l´ogica de grupos de paquetes bajo un ´unico nombre.
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
5 / 35
¿Por qu´e construir paquetes?
Empaquetar para alguna distribuci´on.
Instalar software no empaquetado.
Distribuir software f´acil de instalar.
Agrupar conjuntos de aplicaciones bajo un mismo nombre
(meta-paquetes).
Configuraciones comunes (paquetes de personalizaci´on).
Instalaci´on de equipos personalizados (meta-paquetes y paquetes de
personalizaci´on).
Otras aplicaciones...
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
6 / 35
¿Qu´e necesitamos?
build-essential: Meta-paquete para construcci´on de paquetes
(make, gcc, libc-dev...).
dh-make: Debianizador de directorios fuente.
debhelper: Aplicaciones de ayuda para debian/rules.
dpkg-dev: Herramienta de construcci´on de paquetes.
devscripts: Scripts de ayuda para construcci´on de paquetes.
fakeroot: Simula un entorno de root.
lintian: Comprueba que sean correctos los paquetes.
patch, dpatch: Herramientas para aplicar parches.
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
7 / 35
Un paquete Debian por dentro.
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
8 / 35
Desmontando un paquete
Un paquete Debian es un archivo comprimido con ’ar’ que contiene 3
archivos:
control.tar.gz: Contiene todos los archivos control, el control,
md5sums, postinst, postrm, etc...
data.tar.gz: Contiene los archivos de datos tal y como se escribir´an
en nuestro disco duro.
debian-binary: Contiene la versi´on del empaquetado.
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
9 / 35
Montando un paquete
Crear el directorio <nombre-de-paquete>-<versi´on>.
Crear estructura de directorios y ficheros que desea instalar en el
directorio creado, asumiendo que este sera el directorio ra´ız del
sistema.
Crear el directorio <nombre-de-paquete>-<versi´on>/DEBIAN.
Crear el archivo
<nombre-de-paquete>-<versi´on>/DEBIAN/control.
Crear el archivo
<nombre-de-paquete>-<versi´on>/DEBIAN/md5sums.
Creamos el empaquetado con dpkg -b
<nombre-de-paquete>-<versi´on> .
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
10 / 35
Construyendo un paquete Debian.
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
11 / 35
Document´andonos sobre el paquete
Lo primero que debemos hacer es documentarnos bien sobre c´omo se
instala el software, porque es posible que necisitemos introducir
modificaciones en Makefiles o scripts de instalaci´on para especificar que
debe instalarse siempre usando debian/<nombre-de-paquete>/ como
directorio ra´ız.
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
12 / 35
Descomprimimos el paquete
$ tar zxvf binclock-1.5.tar.gz
binclock-1.5/
binclock-1.5/CHANGELOG
binclock-1.5/COPYING
binclock-1.5/doc/
binclock-1.5/doc/binclock.1
binclock-1.5/src/
binclock-1.5/src/binclock.c
binclock-1.5/Makefile
binclock-1.5/README
binclock-1.5/INSTALL
binclock-1.5/binclockrc
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
13 / 35
Estableciendo nuestras variables globales
$ export DEBEMAIL="
[email protected]"
$ export DEBFULLNAME="Jes´us Espino Garc´ıa"
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
14 / 35
Creando la estructura de paquete
$ cd binclock-1.5
$ dh_make --copyright gpl
Type of package: single binary, multiple binary, library,
or kernel module? [s/m/l/k]
Maintainer name : Jes´us Espino Garc´ıa
:
[email protected]
Email-Address
: Sat, 11 Jun 2005 01:12:05 +0200
Date
Package name
: binclock
: 1.5
Version
License
: gpl
Type of package : Single
Hit <enter> to confirm:
Done. Please edit the files in the debian/ subdirectory now.
You should also check that the binclock Makefiles install
into $DESTDIR and not in / .
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
15 / 35
Ficheros importantes
changelog: Contiene los cambios de una versi´on a otra del paquete.
control: Contiene la informaci´on del paquete, nombre, mantenedor,
dependencias, descripci´on, etc...
copyright: Contiene la licencia del software empaquetado.
dirs: Contiene los directorios que deber´ıan estar en el sistema antes
de la instalaci´on y despu´es de la desinstalaci´on del software.
docs: Contiene los ficheros y directorios que se consideran
documentaci´on.
README.Debian: Contiene informaci´on especifica sobre el paquete
Debian.
rules: Contiene las reglas de compilaci´on e instalado del software en
el momento del empaquetado.
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
16 / 35
Editando el fichero ”changelog”
binclock (1.5-1) unstable; urgency=low
* Initial release Closes: #nnnn (nnnn is the bug number of your ITP)
-- Jes´us Espino Garc´ıa <
[email protected]> Sat, 11 Jun 2005 01:14:58 +0200
Linea 1: nombre (version) estabilidad; urgency=urgencia.
Linea 2: Los bugs que resuelve, uno por linea y empezando por *.
Linea 3: -- $DEBFULLNAME <$DEBEMAIL> $(date -R).
Para incrementar el changelog podemos hacerlo editando el archivo a
mano o usando dch -i.
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
17 / 35
Editando el fichero ”control” I
Source: binclock
Section: unknown
Priority: optional
Maintainer: Jes´us Espino Garc´ıa <
[email protected]>
Build-Depends: debhelper (>= 4.0.0)
Standards-Version: 3.6.1
Package: binclock
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: <insert up to 60 chars description>
<insert long description, indented with spaces>
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
18 / 35
Editando el fichero ”control” II
Se deben cambiar los campos que se crea necesarios:
Source: Nombre del paquete fuente del paquete.
Section: Secci´on a la que pertenece el paquete.
Priority: Prioridad del paquete.
Maintainer: Nombre y email del mantenedor del paquete.
Build-Depends: Dependencias de compilaci´on del paquete.
Standards-Version: Versi´on del est´andar de paquete.
Package: Nombre del paquete.
Architecture: Arquitectura.
Depends: Dependencias del paquete binario.
Description: Descripci´on del paquete, consta de una corta y una larga.
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
19 / 35
Editando el fichero ”copyright”
This package was debianized by Jes´us Espino Garc´ıa <
[email protected]> on
Sat, 11 Jun 2005 01:14:58 +0200.
It was downloaded from <fill in ftp site>
Copyright Holder: <put author(s) name and email here>
License:
<texto de la licencia>
Poner el lugar de donde se descargo el software.
Poner el autor original del software y su correo electr´onico.
Poner la licencia en caso de que no est´e puesta todav´ıa. Si es posible,
como referencia a /usr/share/common-licenses/.
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
20 / 35
Editando el fichero ”rules” I
El fichero rules es un Makefile que contiene las reglas para la construcci´on
del paquete:
configure: Configura nuestros scripts de compilaci´on e instalaci´on
(./configure).
build: Construye los binarios a partir del c´odigo fuente (make).
clean: Limpia nuestro directorio de fuentes de ficheros generados por
los fuentes (make clean).
install: Instala los ficheros en debian/<nombre-de-paquete>/
(make install).
binary: Hace todas las comprobaciones necesarias y nos crea nuestro
paquete Debian.
Todas estas reglas se pueden cambiar para ajustarlas a nuestras
necesidades.
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
21 / 35
Editando el fichero ”rules” II
Debhelper los da unas herramientas que son utilizadas en el fichero rules,
de estas herramientas las m´as comunes son:
dh_testdir: Comprueba que est´a en el directorio correcto.
dh_testroot: Comprueba que es root.
dh_installman: Instala las p´aginas del manual.
dh_strip: Elimina las cabeceras de depuraci´on de los ficheros
ejecutables.
dh_compress: Comprime las p´aginas del manual y los ficheros de
documentaci´on mayores de 4KB.
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
22 / 35
Editando el fichero ”rules” III
dh_installdeb: Instala ficheros de control como postinst o preinst
en el paquete.
dh_shlibdeps: Calcula las dependencias de los ejecutables y las
bibliotecas con las bibliotecas din´amicas.
dh_gencontrol: Genera y copia el fichero de control.
dh_md5sums: Genera y copia el fichero de sumas md5 de todos los
ficheros del paquete.
dh_buildeb: Construye el paquete Debian.
Existen m´as que puedes verlos ejecutando
dpkg -L debhelper | grep bin y puede consultar para qu´e sirven en
las p´aginas del manual.
Jes´us Espino Garc´ıa (UC3M)
Construcci´on de paquetes Debian
11 de Julio de 2005
23 / 35
Los ficheros .ex I
Todos los ficheros .ex encontrados en el directorio debian/ son ejemplos
(.ex-amples), para utilizarlos ser´a necesa
Comentarios de: Construcción de paquetes Debian (0)
No hay comentarios