PDF de programación - Creación de paquetes de Debian

Imágen de pdf Creación de paquetes de Debian

Creación de paquetes de Debiangráfica de visualizaciones

Publicado el 25 de Abril del 2018
428 visualizaciones desde el 25 de Abril del 2018
86,0 KB
12 paginas
Creado hace 25a (15/04/1999)
Creación de paquetes de Debian

Javier Fernández Sanguino-Peña.

[email protected]

15 de abril de 1999

Resumen

El paquete es el componente fundamental de una distribución, pero dentro de éstos hay
mucho más de lo que uno pudiera imaginar. En este artículo se analiza la distribución Debian
GNU/Linux desde esta perspectiva.

(Este artículo ha sido publicado por La Espiral y su versión mas reciente se puede encontrar en
http://www.laespiral.org1)

1.

Introducción

Es importante conocer la estructura de paquetes que las distribuciones usan, porque sólo
así uno es capaz de arreglar los problemas que puedan surgir en su uso diario (corrupción de
archivos, instalación de programas fuera de la distribución, etc.).

A pesar de que las distribuciones vienen con un buen número de software (Debian GNU/Linux,
por ejemplo, cuenta con más de 2500 paquetes de software) a veces interesará instalar software
que no es parte de la distribución o que aún no ha sido incorporado a ésta; esto incluye paquetes
de software que se encuentran en la red y software comercial, e, incluso, aplicaciones creadas por
el propio usuario; para estas cosas serán necesario hacerse sus propios paquetes si no se quiere
entrar en conflicto con el sistema de paquetes. Por supuesto, si se desea contribuir a las distin-
tas distribuciones con software, evidentemente, se deberá dar los programas convenientemente
empaquetados.

También puede ser útil para recompilar paquetes nuevos con librerías antiguas, es el caso, por
ejemplo, con los paquetes hamm de Debian 2.0 compilados para libc6, que podrían instalarse en
un sistema bo (Debian 1.3.1), que utiliza libc5, sin más que recompilar el código fuente e instalar
el paquete (si fuera sólo ésta la única dependencia problemática, el significado de las dependencias
se verá más tarde).

1

El copyright de este artículo es compartido por su autor y Open Resources. Este artículo se distribuye
bajo la licencia de la Revista OR (OR Magazine License). Puedes ver esta licencia en la siguiente URL:
http://www.openresources.com/magazine/license/index.html.

La Espiral - Creación de paquetes de Debian

2

En éste artículo se verá en detalle el sistema de paquetes de Debian GNU/Linux desde el punto
de vista del formato de paquete (.deb) con objeto de preparar al lector interesado para lo arriba
indicado. Hay que tener en cuenta, sin embargo, que el sistema de paquetes es mucho más amplio
que sólo un formato de archivo ya que lleva detrás toda una filosofía de “cómo hacer las cosas”,
que en el caso de Debian es una Política bien definida.

La razón de detallar el sistema de paquetes de Debian es múltiple: por un lado el sistema de
paquetes de Debian GNU/Linux es muy versátil, con algunas características que dan uniformidad
a la distribución en cuanto a la localización de programas y documentación; asimismo, el sistema
Debian GNU/Linux es el más abierto con respecto a la incorporación de desarrolladores (en inglés,
maintainers) a éste, a diferencia de otras distribuciones comerciales en las cuales la contribución
está más limitada. Y finalmente, porque de entre muchos otros formatos de paquetes Debian ofrece
más que la mayoría, como puede leer en este informe.

2. Sistema de paquetes frente a formato de paquetes

Es necesario diferenciar, en primer lugar, entre lo que es el sistema de paquetes y el formato
de paquetes, para no dar lugar a confusión. El sistema de paquetes es el conjunto de reglas propias
de una distribución que indican dónde se localizan los programas, cómo se instalan demonios en
el sistema, qué ficheros de configuración genéricos hay accesibles por los programas, así como
las distintas interacciones entre los paquetes, indicando, por ejemplo, si dos programas tienen
incompatibilidades y no pueden coexistir en el mismo sistema (conflictos) o si antes de instalar
un programa es necesario tener otro instalado (dependencias).

El formato de los paquetes, por ejemplo los ficheros .deb en el caso de Debian o .rpm en
el caso de RedHat, se suele identificar con el sistema de paquetes. Pero, si bien el sistema condi-
ciona cómo deberán crearse y distribuirse los paquetes (qué reglas han de seguir para instalarse),
es posible instalar paquetes de otras distribuciones en nuestro sistema, e incluso podemos encon-
trar herramientas para hacerlo. Por ejemplo, alien es un programa (disponible como paquete en
Debian) que, una vez instalado, permite introducir paquetes que no pertenecen a la distribución
de Debian (por ejemplo, rpms) ya que “conoce” los distintos formatos y es capaz de “traducirlos”
a nuestra distribución. El formato, aunque relacionado con el sistema, no es mucho más que eso.
Las diferencias entre un .deb y un .rpm son en esencia similares a las que existen entre un
.zip y un .arj.

Sin embargo, existe un riesgo cuando se mezclan paquetes de distintas distribuciones, y es
que su política, esto es, el sistema de paquetes, será distinta. Para poner un ejemplo: Debian y
RedHat siguen una política distinta en cuanto a la localización de los programas que ejecutan
los demonios en el arranque, aunque ambos siguen el modelo de System V (Slackware sigue
el modelo de BSD, colocándolos en otro sitio), RedHat coloca los demonios en el directorio
/etc/rc.d/init.d y con los enlaces en /etc/rc.d/rcX.d, mientras que Debian lo hace en el /etc/init.d
con los enlaces en /etc/rcX.d; y ésta no es la única diferencia. Es evidente que si instalamos un
paquete de una distribución, que proporcione demonios que han de ejecutarse en el arranque en
otra, posiblemente no funcionará.

La Espiral - Creación de paquetes de Debian

3

Se lleva un tiempo debatiendo sobre una posible estandarización de los sistemas de paquetes,
que quizás se consiga como ya se consiguió homogeneizar la estructura de directorios a través
del Linux Filesystem Structure (FSSTND), con lo que es posible que en un futuro habrá mayor
compatibilidad entre las distribuciones.

3. Construcción de nuestro primer paquete

Se van a ver, a continuación, los pasos y herramientas necesarios para la creación de un pa-
quete bajo un sistema Debian GNU/Linux. Se va a escoger el paquete hello pues es el que ofrece
Debian para mostrar el sistema de construcción de paquetes, que no tiene más que la versión
GNU de hello, habitual para los programadores, se trata de un simple programa que escribe “Hel-
lo world” por la salida estándar.

Se obtienen primero los tres ficheros fuentes del paquete Debian hello, es decir: hello x.x.orig.tar.gz,

hello x.x-xx.diff.gz y hello x.x-xx.dsc (donde las ’x’ dependerán del número de
versión). Todos se pueden encontrar en una distribución de Debian en stable/main/source/misc.

El primero de ellos es el código fuente original, el segundo un fichero con las diferencias
entre el árbol fuente original (el directorio donde se encuentra el código fuente) y el árbol fuente
Debian, y el tercero es una breve descripción del paquete, que, como se verá después, está firmada
con PGP (Pretty Good Privacy, ver más abajo) por la persona que lo ha empaquetado y tiene un
valor de control (función hash MD5) de los dos ficheros anteriores para poder detectar si han sido
modificados por alguien ajeno al desarrollador (útil para detectar paquetes “troyanos”).

En primer lugar se ejecutará, con los tres ficheros en un mismo directorio, dpkg-source
-x hello x.x-xxx.dsc, que realizará un untar del fichero original (generando la estructura
de directorios del árbol fuente original) y, posteriormente, aplicará el programa patch para incor-
porar las modificaciones que se han hecho en Debian del paquete. Dentro del directorio genera-
do, que será de la forma nombre de paquete-version, se ejecutará dpkg-buildpackage,
que, si todo sale bien (como se puede ver aquí), dejará en el directorio anterior, un fichero
hello xxx.deb que será el paquete preparado para instalar.

El proceso de construcción del paquete lo realiza la orden dpkg-buildpackage y para ello
ejecuta, por orden: dpkg-source, debian/rules (con los métodos clean, build y binary), dpkg-
shlibdeps, dpkg-gencontrol, dpkg-genchanges, y PGP, más adelante se verá su significado aunque
se pueden ver los distintos pasos en la figura 1.

Es necesario hacer todo esto como root, ya que una serie de las operaciones que se ejecutan
necesitan tener los privilegios de este usuario, como es el cambio de propietario de los ficheros
(pasan a ser del usuario root y el grupo root generalmente). Esto puede ser un problema cuando
un usuario quiera generar un paquete en un sistema en el que carece de estos privilegios. Para esto
existe el programa fakeroot que hace creer al sistema que el usuario es root, esto no supone ningún
problema de seguridad porque en realidad es sólo un engaño para el usuario y sus aplicaciones
que, en cualquier caso, no adquieren ninguno de los privilegios del superusuario.

Debian usa PGP (aunque cambiará pronto a GPG) para certificar la autenticidad e integridad
de los paquetes, ya que el sistema de inserción de paquetes hechos por desarrolladores de Debian

La Espiral - Creación de paquetes de Debian

4

Figura 1: Pasos tomados para construir un paquete

es semi-automático (vía varios servidores de ftp anónimo y las máquinas de Debian) y, también es
posible que personas ajenas a Debian (u otros desarrolladores de Debian) manden cambios, para,
por ejemplo, arreglar errores críticos. Es por tanto importante que los paquetes vayan firmados
por el que hizo las modificaciones (dpkg-buildpackage llama a PGP al final) y proteger contra
modificaciones del paquete que se intenten hacer una vez el maintainer ha dado su versión. Se
firma así el fichero .dsc que contiene una descripción del paquete y una “huella” de los ficheros
anteriormente vistos, esta firma se realiza con una función “hash” muy conocida: MD5; también
se firma, si existiera, el fichero .changes que contiene las modificaciones reali
  • Links de descarga
http://lwp-l.com/pdf10661

Comentarios de: Creación de paquetes de Debian (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad