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

Re: scripts de "postinst" en .DEBs



On Wed, Nov 11, 1998 at 07:39:34PM +0100, Miguel Barrio Orsikowsky wrote:

> - ¿ Es realmente *muy* recomendable que sean "scripts" de shell ?

 sí... no es necesario, pero sí...

>   ¿ no pueden ser guiones de awk, sin necesidad de incluir awk en
>   la lista de dependencias del paquete que estoy haciendo ?

 a ver...

      It is not necessary for other packages to declare any
      dependencies they have on other packages which are marked
      Èssential'(see below).

 $ dpkg -l | grep awk
 ii  gawk            3.0.3-1        GNU awk, a pattern scanning and processing
 ii  mawk            1.3.3-2        a pattern scanning and text processing lan
 
 $ dpkg -s gawk | grep ^Essential:

 $ dpkg -s mawk | grep ^Essential:

 Ninguno de los dos es escencial, así que sí, hay que declarar una
 dependencia en awk. Y como no[*] se puede depender de un paquete
 puramente virtual, la línea de dependencias iría así:

 Depends: gawk | mawk | awk

>   ¿ no está bien visto el que sean binarios ?

 a menos que exista una muy buena razón para que sean binarios, no, no
 está bien visto. (Múltiples razones)

> - En caso de que sea necesario hacer "scripts" de, por ejemplo
> "sh"; ¿ alguien puede decirme si es posible desde "sh" hacer lo
> siguiente ? :

 Si vas a hacer un script de sh debe ser POSIX, no sh á là bash. Si el
 script es de bash entonces pon #!/bin/bash en lugar de #!/bin/sh
 
>   a) mirar si /etc/modules contiene una línea con la palabra "joystick", que
>   no esté precedida de #
>   	a1) en caso afirmativo, salir
> 	a2) en caso negativo, añadir una línea "joystick" al final

 Lo puedes hacer en Perl... (eso si se puede pues perl-base es
 escencial) pero en sh va como así:

 #!/bin/sh -e

 case "$1"in
   configure)
     if ! egrep -q '^[^#]? *joystick *$' /etc/modules ; then
        echo joystick >> /etc/modules
     fi
   ;;
   abort-upgrade|abort-deconfigure|abort-remove)
   ;;
   *)
     echo "postinst called with unkown argument: \$1">&2
   ;;
 esac

 exit 0


 Ahora nada más hay un problema... /etc/modules es un archivo de
 configuración de modutils, lo que quiere decir que no lo puedes
 tocar. Tienes que poner una nota en /usr/doc/<paquete>/README.Debian

>   Guión postrm:
> 
>   a) mirar si /etc/modules contiene una línea con la palabra "joystick", que
>   no esté precedida de #
>   	a1) en caso afirmativo, eliminar esa línea
> 	a2) en caso negativo, salir

 es casi igual, los casos son distintos y hay que reemplazar el if con
 algo como:

    grep -v '^[^#]? *joystick *$' /etc/modules > /etc/modules.new-paquete
    mv /etc/modules.new-paquete /etc/modules

 ó más fácil:

    perl -ni -e 'print unless m/^[^#]? *joystick *$/;' /etc/modutils

 pero otra vez no puedes hacer eso...



                                                Marcelo

 PS: Esta pregunta es más de debian-mentors@lists.debian.org


Reply to: