Ayuda para crear .deb

Wenas chavales, a ver si alguien que haya creado paquetes debian me puede echar un cable. Es mi primer paquete .deb que creo y ando un poco perdido XD.

Vereis, el paquete simplemente debería de instalar (copiar) un script en la carpeta /usr/bin y luego añadir unas entradas a lo que sería el "registro" de linux, utilizando el comando gconftool-2.

Os cuento un poco por encima el motivo: tenemos una aplicación local llamada Access Grid para (entre otras cosas) multiconferencia, donde tu le dices una dirección de una Sala, se conecta a dicha dirección y te encuentras a la peña allí conectada.

Entonces, por otro lado, tenemos una página web y pretendemos poner varios enlaces sobre un conjunto de salas de reuniones que tenemos, con la intención de que al hacer click en ellas se ejecute automáticamente la aplicación y se conecte.

Sabía que una página web no puede (no debe) ejecutar aplicaciones en el cliente, así que decidí crearme un manejador de protocolo (como el ed2k, el del spotify, etc, en inglés es url-handler no sé si en español se dice así :S) llamado "agrid". Así, el usuario "daría permiso" a que se le ejecute la aplicación y, en nuestra página web, poniendo agrid:url-sala se consigue ejecutar la aplicación en el cliente.

En Windows no he tenido problemas, ya que he hecho algún que otro instalador y se ha añadido las entradas en el registro sin problemas, pero en Linux es la primera vez que hago un .deb y tengo problemas. Así por encima, he creado una carpeta "deb" y dentro tengo:

/deb/usr/bin/script.sh
/deb/DEBIAN/control
/deb/DEBIAN/postinst

Con la idea de que, por un lado, me copie el fichero a la carpeta /usr/bin y, por otro, me ejecute el script de post-instalación, que, lo que debería de hacer, es ejecutar las órdenes de gconftool-2 para añadir las entradas al registro.

El fichero me lo copia bien e incluso el instalador me dice que se ha hecho todo correctamente, sin embargo, el script postinst no hace lo que quiero. Este es su contenido:

#!/bin/bash

gconftool-2 --set --type=string /desktop/gnome/url-handlers/agrid/command '/usr/bin/agLauncher.sh %s'
gconftool-2 --set --type=boolean /desktop/gnome/url-handlers/agrid/enabled true
gconftool-2 --set --type=boolean /desktop/gnome/url-handlers/agrid/needs_terminal false


Sin embargo, después de ejecutar el .deb, me voy a gconf-editor y me encuentro únicamente la entrada /desktop/gnome/url-handlers/agrid/command '/usr/bin/agLauncher.sh %S' , además de que %S me aparece en mayúsculas.

Así que, está claro, que algo estoy haciendo mal en dicho script XD, no sé si tiene una sintaxis especial o algo. Por eso os pido ayuda sobre ésto.

Gracias de todos modos por zamparos mi tocho xD.

saludos!
En general es una mala idea usar gconf (o cualquier demonio arrancado) en un postinstall de paquete. Ten en cuenta que lo que tu quieres es que todos los usuarios tengan esas caracteristicas y gconf es un demonio de usuario, si ejecutas eso lo que ocurrirá será que se establezeran esos valores para el usuario "root" ya que tu estas instalando con privilegios.

Para hacer lo que tu quieres hacer es mejor que utilizes la ruta /usr/share/gconf/defaults (allí hay algunos ejemplos que usa ubuntu) , basta con que te pongas allí con un nombre parecido a "60-conf-mipaquete" y luego en el postinst ejecutes :

update-gconf-defaults

y entonces establecerá por defecto esas configuraciones para todos los usuarios, los nuevos y los que ya tengas.

Si tienes cualquier problema, estaré pendiente del hilo.
Muchísimas gracias xangel, me ha ido bastante bien xD. La verdad que algo de eso pensé, que para instalar el .deb es necesario ser superusuario y que por ahí tenían que ir los tiros.

El único problema, si es que es un problema, es que me pone la entrada:
gconftool-2 --set --type=string /desktop/gnome/url-handlers/agrid/command '/usr/bin/agLauncher.sh %s'

con %S (la S en mayúsculas) y no sé si esto afectará en algo a los navegadores o no :S.

Lo dicho, gracias xangel ;). Un saludo!

EDITO: Falsa alarma, tenía el antiguo aún, lo he instalado en otros pcs y todo y funciona ^^
De nada, para eso estamos! [angelito]
3 respuestas