Archivos de Tags: Debianizar

Debianizar Paquetes Precompilados Con CDBS

Hola, CDBS es la nueva herramienta para debianizar (empaquetar) programas. Desde que la conozco me ha simplificado la vida bastante para debianizar paquetes. Una de las cosas que más me ha costado averiguar es cómo empaquetar programas precompilados o empaquetar temas de iconos, gtk-themes o wallpapers, ya que estos no hay que compilarlos para empaquetarlos. Se hacerlo sin CDBS pero el archivo rules tienes cada vez que crearlo entero o hacer copy-paste de otros ya hechos. Con CDBS, generalmente, no hay que hacer nada o casi nada extra con el archivo rules porque ya te lo hace. No os preocupéis mucho si no me entendéis mucho de lo que digo, en un momento os enteraréis de la peli :-P

Voy a escribir varios artículos sobre debianizar con CDBS, el próximo lo dedicaré a empaquetar temas de iconos, gtk-themes, etc... incluyendo la multipaquetería, así que preparaos para el truño que voy a meter :-P En realidad lo que persigo es que la gente tenga una ayuda actualizada de cómo debianizar. Al que le interese claro :-P

Bueno empecemos con el jaleo ya. Lo primero es instalar todos los paquetes necesarios para poder debianizar con CDBS.

sudo su -

apt-get install build-essential dpkg-dev file libc6-dev patch perl autoconf automake dh-make debhelper devscripts devscripts-el fakeroot gnupg g77 gpc xutils lintian cdbs pbuilder debian-policy developers-reference manpages-es manpages-es-extra debian-reference-es

exit

Bueno con eso vais más que servidos ;-) , si falta alguno no problem, al debianizar se os indicará qué necesitáis instalar.

Bien, para este artículo voy a elegir la versión portable de Geogebra como ejemplo, al ser portable ya viene precompilado. Así que al debianizarlo sólo hay que indicar dónde meter su contenido en nuestro linux debianita.  Se puede descargar de AQUÍ.

Una vez descargado como es un tar descomprimidlo ;-) Al descomprimirlo se nos ha creado una carpeta que desgraciadamente no tiene en su nombre el número de la versión, pero esto se arregla fácil, cambiamos el nombre y lo dejamos así:

geogebra-3.2.42.0

Como igual cuando consultes este artículo la versión ya haya cambiado modifícala ;-)

Una cosa importante es que el nombre del programa de la carpeta siempre debe ir en minúsculas y se antepone un guión al número de la versión; independientemente del paquete a debianizar y su estructura ok ? ;-)

Vale abrimos terminal y nos creamos un directorio en donde debianizaremos todos nuestros paquetes y uno adrede para el de Geogebra, lo haremos desde nuestro home.

mkdir -p Debianizo/GEOGEBRA

Dentro del directorio de GEOGEBRA copiad el de geogebra-3.2.42.0 (el que hemos descomprimido), lo podéis hacer con el ratón, acedemos a dicho directorio:

cd Debianizo/GEOGEBRA/geogebra-3.2.42.0

Aclaro, es buena paractica crearte un directorio donde debianizar tus paquetes y un subdirectorio dedicado a cada programa a debianizar, ya que cuando obtengamos el paquete .deb se nos crearán muchos ficheros, y de esa forma los tendremos todos ordenaditos.

Hago un inciso, antes de seguir dentro de la carpeta geogebra-3.2.42.0 borrad la carpeta jre porque no la necesitamos absolutamente para nada en nuestro paquete a debianizar. Esto sólo es para éste caso.

También vamos a modificar el fichero geogebra.sh para que funcione con el java de Sun de nuestro sistema operativo, es suficiente con que quede así:

#!/bin/sh

/usr/lib/jvm/java-6-sun/jre/bin/java -jar /usr/share/geogebra/geogebra.jar "$@"

Bien, ahora se trata de crear el directorio debian con todos los ficheros necesarios para poder debianizar, lo haremos con el script dh-make y que viene incluido con el paquete devscripts. En realidad podríamos hacerlo a mano, pero así es más rápido. Así que desde el directorio geogebra-3.2.42.0 en la terminal escribid:

dh_make -e <nuestrocorreo> -r -s -b

Poned vuestro correo con los circunflejos inclusive. Con la opción -r nos creará un fichero fuente, con la opción -s le indicamos que sólo vamos a crear un paquete, y con la opción -b le indicamos que queremos debianizar con CDBS, así que no olvidéis ésta última opción.

Al hacer éste comando se os habrá creado un directorio llamado debian y dentro del mismo multitud de ficheros, vamos a quitar unos cuantos de un plumazo porque para nuestro ejemplo nos sobran, en artículos posteriores os iré explicando cosas de ellos.

cd debian

rm -f *.ex *.EX README.* docs

Os deben de haber quedado los siguientes ficheros:

changelog compat control copyright rules

El fichero compat no se toca ;-) . El fichero changelog es donde vamos poniendo nuestros sucesivos empaquetamientos del programa (cuando actualizamos de versión, incluimos parches, etc), y el fichero coyright es donde metemos la licencia del programa y del empaquetador. No os preocupéis os dejo un enlace de descarga de mi directorio debian de Geogebra para que os sirva de guía. Es que si lo pongo aquí esto se hace muy largo, y esto es más fácil viéndolo, no es nada complicado.

El fichero control nos aparecerá así (lo podéis editar con gedit)

Source: geogebra

Section: unknown

Priority: extra

Maintainer: Cristobal Lopez <lopeztobal@gmail.com>

Build-Depends: cdbs, debhelper (>= 7)

Standards-Version: 3.8.3

Homepage: <insert the upstream URL, if relevant>

Package: geogebra

Architecture: any

Depends: ${shlibs:Depends}, ${misc:Depends}

Description: <insert up to 60 chars description>

<insert long description, indented with spaces>

Cosas a tener en cuenta, en la sección Build-Depends especificamos las dependencias para poder compila y empaquetar el programa, como en nuestro caso ya viene compilado sólo debemos poner las de empaquetado. En nuestro caso con las que viene es suficiente.

La sección Depends es donde especificamos las dependencias del programa para que funcione cuando se ejecute o el usuario lo instale, ¡muy importante saber diferenciar esto! Aquí nos pone dos scripts que nos harán la faena por nosotros, ${shlibs:Depends}, ${misc:Depends} pero en éste caso no nos sirven de mucho, así que los borraremos y pondremos la dependencia a mano, que será  sun-java6-jre.

En la sección Architecture pondremos para qué arquitectura se debe debianizar, para Geogebra como es portable cambiamos any por all. Así pues el fichero control nos queda así:

Source: geogebra

Section: math

Priority: optional

Maintainer: Cristobal Lopez <lopeztobal@gmail.com>

Build-Depends: debhelper (>= 7), cdbs

Standards-Version: 3.8.4

Homepage: http://www.geogebra.org

Package: geogebra

Architecture: all

Depends: sun-java6-jre

Description: Dynamic mathematics for schools

GeoGebra is a free and multi-platform dynamic

mathematics software for schools that joins

geometry, algebra and calculus. It received se-

veral international awards including the European

and German educational software awards.

Perfecto, vamos a ver qué nos cuenta el archivo rules, al abrirlo nos aparece así:

#!/usr/bin/make -f

include /usr/share/cdbs/1/rules/debhelper.mk

include /usr/share/cdbs/1/class/makefile.mk

# Add here any variable or target overrides you need.

Como no se va a compilar nada nos sobra la línea que hace referencia a makefile.mk, así que la borramos y nos queda así:

#!/usr/bin/make -f

include /usr/share/cdbs/1/rules/debhelper.mk

Y ya no necesitamos poner nada más, así de sencillo es. Y eso es así porque CDBS en realidad es un conjunto de "macros" que se encargan de hacer gran parte del trabajo que se hacía antes con rules por nosotros, y para que funcione tan sólo hay que llamar la macro que necesitamos con la orden include, en nuestro caso como no vamos a compilar sólo necesitamos que se ejecute la debhelper.mk.

Desgraciadamente muchos de estos programas precompilados no llevan lo necesario para que tengan un lanzador en nuestro escritorio y deberemos crearlos nosotros mismos, se crean como ficheros de extensión .desktop, así que creamos uno que se llame en nuestro caso geogebra.desktop y lo guardamos en el directorio debian. Aquí os pongo el mio:

[Desktop Entry]

Version=1.0

Type=Application

Name=GeoGebra

GenericName=GeoGebra - Dynamic mathematics

Comment=Dynamic mathematics for shools

GenericName[de]=GeoGebra - Dynamisches Mathematikprogramm

Comment[de]=Dynamische Mathematik für Schulen

Name[de]=GeoGebra

GenericName[es_ES]=GeoGebra - Matemáticas Dinámicas

Comment[es_ES]=Matemáticas Dinámicas En La Enseñanza

Name[es_ES]=GeoGebra

Icon=geogebra.png

Exec=geogebra.sh

Categories=Education;Math;

StartupNotify=false

Terminal=false

En éste artículo hecho por mi tenéis cómo crear estos ficheros.

Nos queda crear dos ficheros que son para especificar dónde instalar el contenido del programa. Tienen siempre las extensiones .dirs y .install. En el .dirs especificamos los directorios base en dónde se instala el programa y en el .install dónde se instala el programa en sí. Es muy fácil. Creamos los ficheros geogebra.dirs y geogebra.install. En geogebra.dirs tendremos estas líneas:

usr/share/pixmaps

usr/share/applications

usr/bin

usr/share/geogebra

En el /usr/bin irá el ejecutable del programa, en el /pixmaps el icono del lanzador, en /applications el lanzador geogebra.desktop y en usr/share/geogebra todo el programa.

En el fichero geogebra.install tengo esto:

debian/geogebra.png usr/share/pixmaps

debian/geogebra.desktop usr/share/applications

geogebra.sh usr/bin

unsigned/* usr/share/geogebra/unsigned

geogebra.jar usr/share/geogebra

geogebra_cas.jar usr/share/geogebra

geogebra_export.jar usr/share/geogebra

geogebra_gui.jar usr/share/geogebra

geogebra_main.jar usr/share/geogebra

geogebra_properties.jar usr/share/geogebra

icon.png usr/share/geogebra

Que como veis no hay mucho que explicar, es decir dónde van cada uno de los directorios y ficheros del programa.

Estos ficheros .install y .dirs son muy importantes para debianizar un programa en varios paquetes, ya volveremos a ello. Su nombre debe coincidir siempre con el nombre que hemos puesto en el fichero control !!!!!

Y bien, si queremos rematar la faena de forma elegante vamos a crear un fichero .menu de nuestro programa para conservar las reglas Debian en cuanto a lanzadores. Creamos un fichero llamado geogebra.menu con el siguiente contenido:

?package(geogebra):needs="X11" section="Applications/Education"\

title="geogebra" command="/usr/bin/geogebra.sh"

Como se puede apreciar es muy fácil de hacer.

Una última cosa ha hacer específica para éste paquete, copiad el fichero icon.png sito en el directorio geogebra-3.2.42.0 en el directorio debian y cambiadle el nombre por el de geogebra.png. Esto lo hago para añadir el icono en el directorio del sistema /usr/share/pixmaps, debería de ser un icono en formato .xpm, pero no pasa nada si es .png. Es una buena práctica hacer esto en nuestros paquetes, siempre y cuando no tengan el icono.

Pues nada tan sólo nos queda debianizarlo, desde el directorio debian ejecutamos debuild así:

debuild -i -us -uc -b

O si van firmados para un repositorio oficial mejor así:

debuild -b -sa -tuclavedelrepositorio

Si todo ha salido bien ya tenéis vuestro paquete deb, sólo resta instalarlo ;-)

Os saldrán dos warnings (avisos) de lintian, uno se refiere a que el fichero ejecutable sito en /usr/bin llamado geogebra.sh no tiene página del manual man, no os preocupéis por ello ya que geogebra no tiene man. El otro lo obviamos que no pasa nada ;-)

Os dejo un enlace de descarga del debian de Geogebra mio para que os sirva de guia

Uuuuufffff!!!!! cuesta más explicarlo que hacerlooo!!! :-P Espero que le sirva a mucha gente, aunque no me lee casi nadie ;-)

Saludos :-)

[TIP] Dget Descargar Los Directorios Debian. Debianizar.

Hola, muchas veces cuando he ido a debianizar un programa me he encontrado que me ha resultado difícil hacerlo y necesitaba ayuda. La mejor ayuda que uno puede obtener para debianizar es obtener el directrorio debian junto con todos sus archivos; de esa forma vemos cómo se ha empaquetado cierto programa, si se le han añadido parches y cómo se le han añadido, etc...

Para obtener dicho directorio lo que hago es pasearme por las webs directas de descarga de los paquetes, como Ubuntu-Packages o Debian-Packages. En éstas páginas la mayoría de las veces no tienen el enlace directo de descarga del directorio debian. Para descargarlo debemos acceder al enlace del fichero de descarga con extensión .dsc.  Me explico, si queremos descargar el del paquete llamado ejemplo, el enlace sería: http://directoriodebian/ejemplo.dsc

Pero si hacemos click directamente a dicho enlace desde nuestro navegador sólo accederemos al fichero dsc sin más, debido a que nuestro navegador no soporta el protocolo dget. ¿Cómo solucionarlo? Muy sencillo, desde la terminal utilizaremos el comando dget.

Pongamos un ejemplo práctico que nos ayude a entenderlo. Supongamos que queremos el del programa maxima, pues bien desde terminal escribimos:

dget -xu http://ftp.de.debian.org/debian/pool/main/m/maxima/maxima_5.21.1-2.dsc

Con dicho comando se nos descargará un directorio descomprimido denominado, en nuestro caso, maxima-5.21.1; que si accedemos dentro del mismo encontraremos el directorio debian con todos sus códigos listos para aprender ;-)

Últimamente en Debian están incluyendo un .tar.gz del directorio debian exclusivamente de cada paquete, con lo cual en muchas veces no haría falta usar el comando dget. Pero muchos no los tienen, y además, si quieres obtenerlos de repositorios de terceros, como Launchpad, siempre nos vendrá bien éste comando.

El comando dget viene incorporado en el paquete devscripts, que es el que debes instalar para que funcione. Tienes un manual de dget desde la terminal con man, para conocerlo más a fondo.

Verdaderamente he aprendido muchas cosas de debianizar paquetes bajando y estudiando ejemplos reales de programas debianizados.

Saludos :-)

[TIP] Sobre Compilar Programas En Linux

Hola, el otro día supe algo que nos puede ser muy útil  cuando compilamos programas con autotools, es decir, con configure, make, make install. El tip es cómo podemos instalar el programa de forma local en el directorio en el que lo estamos compilando, sin necesidad de instalarlo en el root. De esa forma podemos probarlo antes de instalarlo, o si estamos queriendo empaquetar mel programa podremos ver cómo quedarán situados todos los directorios y ficheros del programa cuando lo instalemos en nuestro Linux o lo empaquetemos.

Para el empaquetado es algo útil, sobretodo si es un multipaquete o empaquetamos rpms. Pronto explicaré en el blog como debianizar multipaquetes.

Bien, supongamos que estamos compilando un programa, previamente hacemos:

./configure --prefix=/usr

make

Y ahora haríamos make install, pero en vez de eso lo vamos a instalar de forma local, crearemos un directorio temporal llamado tmp (o como queramos llamarlo) y lo instalaremos dentro de tmp sin permisos de superusuario, con estos dos comandos:

mkdir tmp

make install DESTDIR=`pwd`/tmp

Ya está, ahora si hacemos un tree del tmp obtendremos el listado completo de los directorios y ficheros del programa que se instalarán  en nuestro pc en /usr cuando hagamos sudo make install ( o con su). Por ejemplo, para el programa mp3wrap me ha quedado así:

`-- usr
|-- bin
|   `-- mp3wrap
`-- man
`-- man1
`-- mp3wrap.1

4 directories, 2 files

Si queremos ejecutarlo para probarlo, accedemos a /tmp/usr/bin y ejecutamos el programa, en el ejemplo sería ./mp3wrap.

Y eso es todo, espero os haya sido útil ;)

Fuente-> Myri

Saludos :)

[TIP] Sobre Debianizar Programas

Hola, esta mañana al ir a debianizar el nuevo motor de Murrine me ha surgido un pequeño inconveniente. El problema ha sido el siguiente: al bajarme las fuentes del programa he visto que el nombre que viene por defecto es murrine-0.9.0; pero en Ubuntu el paquete debianizado viene con el nombre gtk2-engines-murrine. La cosa ha sido fácil de solucionar, tan sólo ha hecho falta ir al manual del comando dh_make para buscar una solución. La solución es una opción que nos permite forzar cambiar el nombre del programa por el que queramos, su nomenclatura es:

-p,  --packagename <nuevo_nombre>

Así pues para éste caso concreto de murrine bastaría escribir:

dh_make -e lopeztobal@gmail.com -s --createorig -c gpl -p gtk2-engines-murrine

De esa línea voy a explicar dos cosas más, hay una opción para especificar previamente la licencia del programa si es que la conocemos y coincide con una de las 4 diferentes licencias que nos permite dh_make, que son: gpl, lgpl, artistic o bsd. Esto es muy útil porque en el fichero copyright del paquete debianizado ya nos pondrá debidamente redactada la licencia. La opción en cuestión es la de -c
La otra opción es la que nos permite crear un paquete comprimido origen, y que se especifica con el código:

--createorig

Bueno esto es lo nuevo que he aprendido usando el comando o script dh_make para debianizar programas. Espero que a alguien le resulte útil ;) En cuanto aprenda algo más del tema prometo publicarlo en el blog.

Saludos :)

Mis Tribulaciones Con Unos Scripts

Hola, al final se ha conseguido el objetivo de poder debianizar los scripts para nautilus realizados por Javielinux, bajo la ayuda de Alberto. Ha costado pero se ha llegado a buen puerto. Lo más costoso ha sido que Nautilus no permite que instalemos los scripts en el root, así que había que ingeniárselas para que se instalasen en la home de cada usuario y con los permisos correctos. Pero vayamos poco a poco.
Bien, lo primero es que al bajar los scripts y descomprimirlos nos damos cuenta de que no contienen ningún fichero de compilación e instalación (los típicos configure, make o scons); así pues vamos a tener que debianizarlos a mano, sin posibilidad de utilizar comandos como debuild. Pues visto lo visto tendremos que montar los directorios a mano.
Para ello creamos una carpeta en nuestro home llamada scripts y dentro de ella iremos metiendo todo lo necesario y en su sitio. Primero meteremos los ficheros de la licencia y del copyright, no son mas que ficheros de texto creados por nosotros mismos con Gedit. Tenemos que meterlos en la ruta que toca, y que será: /usr/share/doc/javielinux-nautilus-scripts/, esto es tan sencillo como ir creando estas carpetas de forma anidada y en el orden especificado, dentro de la carpeta scripts. Vale, ya tenemos una cosa hecha, vamos a por la siguiente.
Ahora deberíamos meter los scripts en donde tocan, por lo general debería de ser en la ruta /usr/share/gnome2/nautilus-scripts/ o en alguna equivalente, pero desgraciadamente nautilus no nos permite hacer esto, me lo confirmaron por e-mail los mismos desarrolladores del proyecto. Así pues debemos instalarlos en el único sitio que se nos permite, a saber: /home/nuestrousuario/.gnome2/nautilus-scripts, pero claro no podemos crear esta ruta a manos porque la carpeta o directorio que he llamado "nuestrousuario" es un nombre variable, es decir, cambia según el nombre del usuario que vaya a instalar el paquete debianizado, así pues problemón difícil de solventar, pero no imposible ;)
Recordé el paquete sun-java6-doc que tenemos en los repositorios y lo que hacía para instalar la extensa documentación de java. Para instalar correctamente este paquete tenemos que bajarnos primero de la web oficial de Sun la documentación y moverla a /tmp, para finalmente instalar sun-java6-doc nediante Synaptic, Adept o terminal; el cual lleva metido un fichero o script de postinstalación el cual se encarga de descomprimir la documentación de Java y moverla a la ruta deseada, aunque este script no limpia lo de tmp, pero nosotros sí lo limpiaremos, ya veréis.
Vale peña, hasta aquí ya tenía claras muchas ideas y montado mi propio organigrama mental del proyecto este. Seguidamente lo que hice fue crearme la ruta de carpetas /tmp/nautilus-scripts/ dentro de /scripts, y meter allí dentro los scripts de javielinux, ¡No olvidéis esta ruta porque va a ser clave chavales!
Ahora dentro de loa carpeta scripts hay que crear unba carpeta llamada DEBIAN (ha de ser en mayúsculas obligado), y ahí meteremos los ficheros: control, md5sums, postinst y prerm. El fichero control es el fichero en el cual especificamos el nombre del paquete o programa, su versión, arquitectura en la que se va a instalar, el nombre y e-mail del creador del deb, las dependencias del paquete y una descripción del programa. Para nuestro caso el fichero control tendrá el contenido siguiente:

CODE:
  1. Package: javi-nautilus-scripts
  2. Version: 1.0-1ubuntu1
  3. Section: gnome
  4. Priority: extra
  5. Installed-Size: 4502
  6. Maintainer: Cristobal Lopez <lopeztobal@gmail.com>
  7. Architecture: all
  8. Depends: nautilus, python, python-dev, python-eyed3, python-nautilus, vorbis-tools, lame, mplayer, mp3splt, id3, dvdauthor, dvd-slideshow (>= 0.8.0), dvd-slideshow-themes (>= 0.8.0), sox, ffmpeg, mkisofs, mp3info, pdftk, pdfjam, imagemagick, ufraw, mencoder, mpgtx
  9. Homepage: http://nautilus-scripts.javielinux.com/
  10. Description: Scripts de Javielinux
  11.  Conjunto de scripts realizados por Javielinux para nautilus bajo licencia GPL3. Con ellos podras manipular tus ficheros de audio, dvd, imagenes o pdf, entre otros.

El fichero md5sums es un fichero que lo que hará es verificar que todos los archivos que contienen el paquete debianizado no están corruptos, vamos que son de confianza. La forma de crearlo os pongo al final del artículo un enlace para verlo, no es difícil. Antes de pasar a explicar los ficheros postinst y prerm os pongo un árbol de cómo debe quedar la colocación de los distintos ficheros y carpetas del paquete a debianizar dentro del directorio padre que hemos llamado en este artículo /scripts.

CODE:
  1. .
  2. |-- DEBIAN
  3. |   |-- control
  4. |   |-- md5sums
  5. |   |-- postinst
  6. |   `-- prerm
  7. |-- tmp
  8. |   `-- nautilus-scripts
  9. |       |-- Audio
  10. |       |   |-- Convertir Mp3 a Ogg
  11. |       |   |-- Convertir Mp3 a Wav
  12. |       |   |-- Convertir Ogg a Mp3
  13. |       |   |-- Convertir Ogg a Wav
  14. |       |   |-- Convertir Wav a Mp3
  15. |       |   |-- Convertir Wav a Ogg
  16. |       |   |-- Convertir Wma a Mp3
  17. |       |   |-- Convertir Wma a Ogg
  18. |       |   |-- Dividir Mp3
  19. |       |   |-- ID3 con datos de directorio y archivo
  20. |       |   `-- Ver datos ID3
  21. |       |-- Comandos en ventana
  22. |       |   |-- Añadir o Ejecutar Programa
  23. |       |   |-- Procesar al vuelo juntos
  24. |       |   |-- Procesar al vuelo uno a uno
  25. |       |   |-- add_command.jpg
  26. |       |   |-- add_parameter.jpg
  27. |       |   |-- commands.xml
  28. |       |   |-- doc_anadir_o_editar_programa.xml
  29. |       |   |-- main.jpg
  30. |       |   `-- sample_parameter.jpg
  31. |       |-- Comentarios
  32. |       |   |-- Añadir comentarios a directorio
  33. |       |   `-- Añadir comentarios a fotografías
  34. |       |-- DVD
  35. |       |   `-- Crear DVD de fotografias
  36. |       |-- Imagenes
  37. |       |   |-- Agregar borde
  38. |       |   |-- Conversor de RAW a JPG
  39. |       |   |-- Conversor de imágenes
  40. |       |   |-- Convertir a polaroid
  41. |       |   |-- Crear foto collage
  42. |       |   |-- Crear miniaturas
  43. |       |   |-- Crear mosaico fotográfico
  44. |       |   |-- Crear mosaico polaroids
  45. |       |   |-- Espejo Horizontal
  46. |       |   |-- Espejo Vertical
  47. |       |   |-- Redimensionar
  48. |       |   |-- Reducir Calidad
  49. |       |   |-- Rotar a la derecha
  50. |       |   `-- Rotar a la izquierda
  51. |       |-- Otros
  52. |       |   `-- Renombrar ficheros
  53. |       |-- PDF
  54. |       |   |-- Combinar imágenes en PDF
  55. |       |   |-- Comprimir PDF
  56. |       |   |-- Extraer páginas JPG de un PDF
  57. |       |   |-- Reducir páginas PDF
  58. |       |   `-- Unir archivos PDF
  59. |       |-- Process.py
  60. |       |-- Process.pyc
  61. |       `-- Video
  62. |           |-- Extraer AVI
  63. |           `-- Extraer MPEG
  64. `-- usr
  65.     `-- share
  66.         `-- doc
  67.             `-- javielinux-nautilus-scripts
  68.                 |-- LICENCIA
  69.                 |-- LICENSE
  70.                 `-- copyright

Bien, pasemos pues a la parte más difícil del asunto, el fichero postinst. En realidad postinst va a ser un script (así pues deberemos darle permisos de ejecución). Este script se llama postinst porque va a ser un script que llevará metido un conjunto de órdenes escritas, en este caso en lenguaje script, que se realizarán durante la instalación del paquete e inmediatamente después de habernos puesto la licencia y los scripts en /tmp, de ahí su nombre, postinst es la abreviatura de post-installation (post-instalación).
Del código de este fichero tenía claro lo de copiar o mover la carpeta /nautilus-scripts a /home/nuestrousuario/.gnome2/, y que debía cambiar los premisos de todos esos directorios, tanto de propietario y grupo con el comando chown, lo que pasa es que no sabía cómo declarar eso en el script para que el sistema lo identificase por él mismo, ya que recordad que el nombre de usuario en este caso es variable, no es fijo, varía según el que vaya a instalar el programa; ¡yo no conozco a to kiskiii!!!
El otro escollo era que esto se debía de instalar para todos los posibles usuarios que estuviesen el Linux dionde se instalase el programa, de esto no sabía nada de cómo hacerlo; de lo del chown todavía intuía que debí9a haber algún tipo de variable identificativa como la de $HOME, pero desconocía sus nombres; ya que mis conocimientos de lenguaje script son bastante pobres, aunque ahora he aprendido bastante ;-)
Y aquí es donde entra en acción mi colega Alberto de Diario De Un Linux3ro, le conté por mensajero lo que quería y en 5 minutos ya lo tenía hecho, ¡tio eres el puto amo de los scripts! ¡Crack! :) Pues nada, después de no se cuántos intentos de prueba, más que nada porque soy un patoso, el script postinst tiene el siguiente código:

CODE:
  1. #! /bin/sh
  2. cd
  3. find /home/ -maxdepth 1 -type d -name "*" -exec basename '{}' \;> usuarios.txt
  4. grep -v "home" usuarios.txt> usuarios_b.txt
  5. rm usuarios.txt
  6. mv usuarios_b.txt usuarios.txt
  7. usuario="algo"
  8. while [ ! -z "$usuario" ]
  9. do
  10. read usuario
  11. if [ ! -z "$usuario" ]
  12. then
  13.   if `grep -e "^$usuario:.*" /etc/passwd>/dev/null`
  14. then
  15.         uiid=`grep -e "^$usuario:.*" /etc/passwd | cut -d ":" -f 3>/dev/null`
  16.         if [ ! -d /home/$usuario/.gnome2/nautilus-scripts/ ]; then
  17.             cd /home/$usuario/.gnome2/
  18.         mkdir nautilus-scripts
  19.         cd
  20.         fi
  21.     cd /tmp/nautilus-scripts
  22.     cp -r Audio Comandos\ en\ ventana Comentarios DVD Imagenes Otros PDF Video Process.py Process.pyc  /home/$usuario/.gnome2/nautilus-scripts/
  23.     cd
  24.     cd /home/$usuario/.gnome2/nautilus-scripts/
  25.         chown -R $usuario.$uiid *
  26.         chmod -R +x *
  27.         chmod -x Process.py Process.pyc
  28.         cd Comandos\ en\ ventana
  29.         chmod -x *.xml
  30. fi
  31. fi
  32. done <./usuarios.txt
  33. cd
  34. rm usuarios.txt
  35. rm -R /tmp/nautilus-s*

Bueno no voy a pararme a explicarme todo ese código porque esto se esta haciendo bastante largo, y hay cosas que no entiendo todavía muy bien :(
Ahora me falta explicaros el prerm, éste también va a ser un script, el cual va a tener unas funciones a realizar claves, a saber, nos va a borrar los scripts de javielinux cuando desinstalemos el paquete debianizado o cuando lo actualicemos a una nueva versión. Esto se hará antes de instalar el programa durante la instalación del deb, por eso su nombre de prerm, abreviatura de pre-romove (pre-borrado). No me costó mucho ya crear este script, me fijé en el que había en el sun-java6-doc y en el del postinst, además de coregírmelo cada dos por tres Alberto. El código de este script es:

CODE:
  1. #! /bin/sh
  2. cd
  3. find /home/ -maxdepth 1 -type d -name "*" -exec basename '{}' \;> usuarios.txt
  4. grep -v "home" usuarios.txt> usuarios_b.txt
  5. rm usuarios.txt
  6. mv usuarios_b.txt usuarios.txt
  7. usuario="algo"
  8.  
  9. if [ "$1" = remove ] || [ "$1" = upgrade ]
  10. then
  11.    while [ ! -z "$usuario" ]
  12.    do
  13.     read usuario
  14.     if [ ! -z "$usuario" ]
  15.     then
  16.     if `grep -e "^$usuario:.*" /etc/passwd>/dev/null`
  17.     then
  18.         uiid=`grep -e "^$usuario:.*" /etc/passwd | cut -d ":" -f 3>/dev/null`
  19.         if [ -f /home/$usuario/.gnome2/nautilus-scripts/Process.py ]
  20.         then
  21.            cd /home/$usuario/.gnome2/nautilus-scripts/
  22.            rm -R Audio
  23.            rm -R Comandos\ en\ ventana
  24.            rm -R Comentarios
  25.            rm -R DVD
  26.            rm -R Imagenes
  27.            rm -R Otros
  28.            rm -R PDF
  29.            rm -R Video
  30.            rm Process.py
  31.            rm Process.pyc
  32.         fi
  33.      fi
  34.     fi
  35.    done <./usuarios.txt
  36.  cd
  37.  rm usuarios.txt
  38. fi

En este script también hemos tenid que hacer la búsqueda de usuarios, conm el trozo de código:

CODE:
  1. find /home/ -maxdepth 1 -type d -name "*" -exec basename '{}' \;> usuarios.txt
  2. grep -v "home" usuarios.txt> usuarios_b.txt
  3. rm usuarios.txt
  4. mv usuarios_b.txt usuarios.txt
  5. usuario="algo"

Lo que más me interesó fue la siguiente instrucción:

CODE:
  1. if [ "$1" = remove ] || [ "$1" = upgrade ]

Esta condición de if es muy importante, ya que si $1 es remove (borrar) o update (actualizar) hará lo que haya dentro del if, en este caso borrar los scripts de javielinux donde estaban instalados. Es importante porque las opciones remove y update son precisamente las opciones que podríamos haber especificado por terminal con el programa apt-get o aptitude, y que nujestro Linux ya reconoce al ejecutar el script con este if y porque el script lo hemos llamado prerm y no otra cosa.
Pues vale, hasta aquí ya lo tenemos todo montado chavales, ha cvostado eh? Ahora nos queda debianizarlo, ¿cómo?, con los siguientes comandos: (suponiendo que en la terminal nos encontramos en nuestro propio home)

CODE:
  1. cd scripts
  2. dpkg -b /home/tobal/scripts /home/tobal/javi-nautilus-scripts_1.0-1ubuntu1_all.deb

Y con esto ya tenemos construido nuestro paquete debianizado, tan sólo queda insttalarlo, disfrutarlo y compartirlo :)

Enlaces de consulta:

Videotutorial Debianizar Sin Autotools
Debianizando Programas. Parte 2
Scripting. Diario De Un Linux3ro

Los scripts de Javielinux para nautilus los podéis descargar PINCHANDO AQUÍ

Saludos :-h

Page 1 of 3123