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

Re: ejecutar un script desde postinst



El Friday 07 November 2008, Alberto Vicat escribió:
> xve escribió:
> > 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.
>
> ¿Hiciste la prueba de ejecutarlo a manopla directamente, desde consola?
> Digo para estar seguro de que no tiene algún errorcito que le impida
> ejecutarse.
>
> Saludos

Si, si, lo he probado manualmente y funciona. Como comento arriba, si instalo 
el paquete con dpkg -i paquete.deb lo ejecuta.
Si lo instalo con aptitude install desde el repositorio, no lo ejecuta.
Es muy raro, y no se porque razon no lo hace.

Un saludo
-- 
xve


Reply to: