[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

deb-src-howto



Aquí va otro howto. Antes de nada aclararé que lo pongo aquí simplemente
como preview, por si alguien quiere realizar alguna aclaración, y porque no
ocupa mucho (por supuesto no me atrevería a enviar un texto de 70 Kb ni
nada parecido).
Si creeis que es interesante, no os preocupeis que ya lo enviaré a insflug o
donde sea necesario.
El siguiente documento va sobre como crear paquetes deb a partir de las
fuentes de debian. Sé que se ha hablado recientemente de este tema en
es.comp.os.linux.misc, simplemente hago una recopilación y quizás doy unos
detalles más.

  Como compilar fuentes preparadas para Debian
  Ricardo Villalba, rvm @ linuxfan.com
  3 de agosto de 1999

  En este documento va sobre cómo crear paquetes deb a partir de las
  fuentes de los ftps de debian.
  ______________________________________________________________________

  Índice general


  1. Introducción

  2. Dependencias

  3. Un consejillo antes de empezar

  4. Bajando las fuentes

  5. Descomprimir las fuentes

  6. Compilando

  7. Posibles problemas

     7.1 Un ejemplo
     7.2 Más allá

  8. Coming up next



  ______________________________________________________________________

  1.  Introducción

  Muchos de nosotros nos habremos dado cuenta que la mayoría de los
  paquetes de la debian potato dependen de la nueva librería glib2.1.
  Si no queremos actualizar todavía a dicha librería no nos quedará más
  remedio que compilar aquellos paquetes de potato que queramos usar en
  Slink (o Hamm).

  Afortunadamente la creación de paquetes deb a partir de las fuentes no
  es una tarea muy complicada.

  Antes de continuar debo decir que mi única experiencia en este tema ha
  sido con los paquetes apt y leafnode. Puede que otros paquetes den más
  problemas.


  2.  Dependencias

  En los ftps de debian hay una serie de ficheros Packages.gz, en cada
  directorio main, contrib, non-free, etc. hay uno. Estos paquetes creo
  que los utiliza el instalador apt para conocer las dependencias, pero
  ya que son simples ficheros de texto los podemos bajar ya sea
  simplemente para consultar qué paquetes nuevos hay, o si pensamos
  actualizar un programa saber qué dependencias tiene, y cuantos
  paquetes tendremos qué descargar o si por otra parte nos compensa más
  bajarnos el código fuente.


  3.  Un consejillo antes de empezar

  Parece ser que para compilar algunos paquetes es necesario tener
  instalado el debhelper >= 2.0. En el momento de escribir esto en
  potato está la versión 2.0.20 y se puede instalar directamente en la
  Slink sin necesidad de compilarlo (tampoco depende de ningún otro
  paquete de potato), así que aconsejo que te lo bajes y lo instales.


  4.  Bajando las fuentes

  Las fuentes de los paquetes para debian suelen ocupar 3 ficheros:


     paquete.orig.tar.gz
        Es el paquete original sin haber sufrido ninguna modificación
        por parte de los mantenedores de debian.


     paquete.diff.gz
        Contiene las modificaciones realizadas por los mantenedores de
        debian.


     paquete.dsc
        Parece que es un fichero de control que además está firmado con
        PGP.


  Así si queremos compilar el leafnode nos bajaremos estos tres
  ficheros:

  ·  leafnode_1.9.4.orig.tar.gz

  ·  leafnode_1.9.4-4.diff.gz

  ·  leafnode_1.9.4-4.dsc


  Nota: algunos paquetes expresamente creados para la debian no tienen
  el fichero *.diff.gz, así por ejemplo el paquete apt lo forman los
  ficheros apt_0.3.11.tar.gz y apt_0.3.11.dsc.


  5.  Descomprimir las fuentes

  Para descomprimir las fuentes teclearemos la orden dpkg-source -x
  paquete.dsc, por ejemplo:



       dpkg-source -x leafnode_1.9.4-4.dsc





  En este ejemplo las fuentes se habrán extraidos en el directorio
  leafnode-1.9.4.


  6.  Compilando

  Algunas etapas de la creación del paquete requieren que se realicen
  como root. Si no quieres hacerlo como root te recomiendo que instales
  el paquete fakeroot (no es necesario configurar nada).

  Para compilar el paquete lo primero que hemos de hacer es situarnos en
  el directorio donde se han descomprimido las fuentes.

  Que yo sepa hay tres comandos que permiten compilar y crear el paquete
  deb listo para instalar (tendrás que elegir uno, yo recomiendo el
  primero):


     debian/rules binary
        Al ejecutar este comando se compilarán las fuentes y acto
        seguido se generará el paquete deb en el directorio padre.  Si
        no quieres hacerlo como root, puedes invocarlo así:



          fakeroot debian/rules binary





     build
        (Nota: este comando no lo he probado.) Según el manual si se
        invoca sin parámetros equivale a dpkg-buildpackage. Si se le
        añade el parámetro binary entonces sería equivalente a
        debian/rules binary. Para poder ejecutarlo sin necesidad de ser
        root podrías hacerlo así (repito que no lo he probado):


          fakeroot build binary





     dpkg-buildpackage
        Resumiendo, al ejecutar este comando se realizan estos cuatro
        pasos:

     ·  make clean. Borra cualquier resto de una posible compilación
        anterior (ficheros *.o, ejecutables, etc).

     ·  Empaqueta las fuentes. En el directorio padre se crean los
        ficheros *.orig.tar.gz, *.diff.gz y *.dsc

     ·  Realiza la compilación en sí.

     ·  Empaqueta los binarios en un fichero *.deb.

        Este comando está bien para cuando estamos realizando una
        modificando a un paquete o el programa en cuestión es nuestro,
        pero no creo que sea la mejor opción para el caso que nos
        interesa. De todos modos comentaré que una posible invocación de
        este comando podría ser así:



          dpkg-buildpackage -rfakeroot -us -uc




     La opción -rfakeroot es para poder empaquetarlo como usuario
     normal, y las opciones -us -uc son para no tener que firmarlo.





  7.  Posibles problemas

  Por supuesto, durante la compilación pueden surgir problemas. La mayor
  parte de estos problemas son porque no tenemos instalado algún paquete
  necesario.

  ¿Y cómo podemos saber qué paquete(s) tenemos que instalar?  Es
  importante conocer la lista de dependencias antes de empezar a
  compilar, ya que nos puede ser de mucha ayuda para saber los paquetes
  que hemos de instalar.

  Por ejemplo, si un programa depende de la librería xpm4g, pues
  lógicamente tendremos que instalar el paquete xpm4g pero también el
  xpm4g-dev.

  Por norma general, se puede decir que si un programa depende de la
  librería x para poder compilarlo deberemos instalar también el x-dev.

  Para conocer las dependencias podemos echar mano del fichero
  Packages.gz que he comentado previamente.


  7.1.  Un ejemplo

  Como ejemplo, diré como hice para compilar el paquete leafnode_1.9.4.
  Este paquete depende de dos paquetes que ni siquiera existen en Slink:
  logrotate y libpcre2.

  Por tanto habrá que compilarlos e instalarlos primero, aunque se da la
  circunstancia de que logrotate depende de otro paquete que tampoco
  está en Slink, el libpopt0, por tanto este es el que habrá que
  compilar en primer lugar.

  Si miramos la descripción de libopt0 en el Packages.gz veremos que las
  fuentes de esta paquete están en un paquete llamado popt. De igual
  modo las fuentes de libpcre2 están en pcre2.

  Una vez compilado el paquete popt obtendremos los paquetes
  libpopt0_1.3-4_i386.deb y libpopt-dev_1.3-4_i386.deb que instalaremos.

  Ahora ya podemos compilar los paquetes logrotate y pcre2, e instalar
  todos los paquetes que se generen, después de lo cual por fin podremos
  compilar el leafnode.


  7.2.  Más allá

  Como te habrás dado cuenta, averiguar la lista de los paquetes que
  hemos de bajar, el orden en el que hemos de compilarlos, etc. si bien
  no es muy complicado sí que nos puede quitar bastante tiempo.

  Pues bien, según explicaba Benjamín Albiñana Pérez (que parece que de
  esto sabe mucho, a ver si conseguimos que nos cuente todo lo que sabe)
  en un reciente mensaje en es.comp.os.linux.misc nos decía que
  simplemente tecleando la orden apt-get source paquete --compile el apt
  nos bajaría todos los paquetes necesarios y los compilaría.  Todavía
  no lo he probado, pero estoy deseando hacerlo.

  Eso sí, el apt que se incluye en Slink no vale, hay que bajarse el apt
  de potato y compilarlo, o más fácil bajarte de mi web la versión
  0.3.11 que compilé para Slink: http://members.xoom.com/rvmsoft/linux/.





  8.  Coming up next

  Lo mismo pero para paquetes rpm.
 (No os preocupeis que éste no lo enviaré a la lista)


Ricardo Villalba
rvm@linuxfan.com
ricardovm@arrakis.es
http://members.xoom.com/rvmsoft
http://rvmsoft.findhere.com



Reply to: