Guía del desarrollador para la creación de paquetes de aplicaciones

Modificación de un archivo mediante secuencias de comandos de acción de clase y clases estándar

Este caso práctico modifica un archivo durante la instalación del paquete mediante secuencias de comandos de acción de clase y clases estándar. Usa uno de los tres métodos de modificación. Los otros dos métodos se describen en Modificación de un archivo mediante la clase sed y una secuencia de comandos postinstall y Modificación de un archivo mediante la clase build. El archivo modificado es /etc/inittab .

Técnicas

Este caso práctico muestra cómo usar secuencias de comandos de acción de clase de instalación y eliminación. Para obtener más información, consulte Escritura de secuencias de comandos de acción de clase.

Aproximación

Para modificar /etc/inittab durante la instalación, mediante secuencias de comandos de acción de clase y clases, debe completar las tareas siguientes:

Este caso práctico es más complicado que el siguiente; consulte Modificación de un archivo mediante la clase sed y una secuencia de comandos postinstall. En lugar de proporcionar dos archivos se necesitan tres; el archivo /etc/inittab entregado es simplemente un marcador de posición que contiene un fragmento de la entrada que se va a insertar. Ésta se podría haber colocado en el archivo i.inittab, a excepción de que el comando pkgadd debe tener un archivo para pasar al archivo i.inittab. Asimismo, el procedimiento de eliminación debe colocarse en un archivo aparte (r.inittab). Mientras este método funcione bien, es mejor reservarlo para casos que impliquen instalaciones muy complicadas de varios archivos. Consulte Modificación de archivos crontab durante la instalación.

El programa sed usado en Modificación de un archivo mediante la clase sed y una secuencia de comandos postinstall admite varias instancias de paquetes, ya que el comentario del final de la entrada inittab se basa en la instancia del paquete. El caso práctico de Modificación de un archivo mediante la clase build muestra una aproximación más simplificada para la modificación de /etc/inittab durante la instalación.

Archivos de casos prácticos

El archivo pkginfo

PKG=case5
NAME=Case Study #5
CATEGORY=applications
BASEDIR=/opt
ARCH=SPARC
VERSION=Version 1d05
CLASSES=inittab

El archivo prototype

i pkginfo
i i.inittab
i r.inittab
e inittab /etc/inittab ? ? ?

La secuencia de comandos de acción de clase de instalación i.inittab

# PKGINST parameter provided by installation service
while read src dest
do
# remove all entries from the table that
# associated with this PKGINST
sed -e "/^[^:]*:[^:]*:[^:]*:[^#]*#$PKGINST$/d" $dest >
/tmp/$$itab ||
exit 2
sed -e "s/$/#$PKGINST" $src >> /tmp/$$itab ||
exit 2
mv /tmp/$$itab $dest ||
exit 2
done
if [ "$1" = ENDOFCLASS ]
then
/sbin/init q ||
exit 2
fi
exit 0

La secuencia de comandos de acción de clase de eliminación r.inittab

# PKGINST parameter provided by installation service
while read src dest
do
# remove all entries from the table that
# are associated with this PKGINST
sed -e "/^[^:]*:[^:]*:[^:]*:[^#]*#$PKGINST$/d" $dest >
/tmp/$$itab ||
exit 2
mv /tmp/$$itab $dest ||
exit 2
done
/sbin/init q ||
exit 2
exit 0

El archivo inittab

rb:023456:wait:/usr/robot/bin/setup