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: