El Friday 07 November 2008, Santiago Vila escribió:
On Fri, 7 Nov 2008, xve wrote:
Hola a todos,
dispongo de un paquete .deb realizado por nosotros, el cual queremos que
al terminar de instalarse, ejecute un script, pero no lo conseguimos que
nos funcione.
El fichero postinst contiene:
----------------------------------
#!/bin/sh
set -e
echo "Restarting cron...."
/etc/init.d/cron restart
/etc/file.sh
----------------------------------
El cron lo realiza correctamente, pero el file.sh no lo ejecuta.
El file.sh tiene derechos de lectura y ejecucion
¿Dónde tiene derechos de lectura y ejecución? ¿En el código fuente del
paquete o dentro del .deb?
Los derechos de lectura y ejecucion estan en el fichero file.sh que esta
dentro del paquete. Dentro del paquete, logicamente tiene derechos de
ejecucion.
¿Aparece como ejecutable al hacer "dpkg -c paquete.deb"?
Me muestra todos los ficheros que contiene el paquete
Hemos probado poniendo:
./etc/file.sh
. /etc/file.sh
/bin/sh /etc/file.sh
sh /etc/file.sh
Hemos puesto para ver si da algun resultado:
/etc/file.sh > /etc/result
Pero de ninguna manera conseguimos que se ejecute.
¿Cómo sabes que no se ejecuta? ¿Has puesto esto como primera línea?
Sabemos que nos ejecuta, porque en su interior tiene puesto:
echo "hola"
echo "hola2" > /home/x
no vemos hola en la pantalla, y no nos crea el fichero "x" dentro de "/home"
echo Hola. Soy /etc/file.sh
¿Qué sucede si además de usar "set -e" en el postinst pones "set -x"
para que te cuente su vida?
He puerto tal como me comentas "set -x", y me indica que lo ejecuta:
----------------------------------
+ echo "Restarting cron...."
Restarting cron....
+ /etc/init.d/cron restart
Restarting periodic command sheduler: crond
+ /etc/file.sh
----------------------------------
aunque realmente no lo ejecuta si instalo el paquete con aptitude install ...,
pero si instalo el paquete con dpkg -i sin coger el fichero de un repositorio
si que me funciona... muestra lo mismo en pantalla, pero aqui si que lo
ejecuta. No entiendo la diferencia¿?
¿Tampoco funciona si lo pones en /usr/bin en lugar de /etc?
Hace exactamente lo mismo...
[ Sólo unas cuantas ideas ]
Muchas gracias por tu ayuda santiago.