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

Modificación de un archivo mediante la clase build

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

Técnicas

En este caso práctico se muestra cómo usar la clase build. Para obtener más información sobre la clase build, consulte Secuencia de comandos de clase build.

Aproximación

Esta aproximación a la modificación de /etc/inittab usa la clase build. Una secuencia de comandos de clase build se ejecuta como secuencia de comandos de shell y su salida se convierte en la nueva versión del archivo que se está ejecutando. En otras palabras, el archivo de datos /etc/inittab que se entrega con este paquete se ejecutará y la salida de dicha ejecución se convertirá en /etc/inittab.

La secuencia de comandos de clase build se ejecuta durante la instalación y la eliminación del paquete. El argumento install se pasa al archivo si se ejecuta en el tiempo de la instalación. Observe en la secuencia de comandos de clase build de ejemplo que las acciones de instalación se definen mediante la prueba para este argumento.

Para editar /etc/inittab mediante la clase build, debe completar las tareas siguientes:

Esta solución reconduce los inconvenientes descritos en los casos prácticos de Modificación de un archivo mediante secuencias de comandos de acción de clase y clases estándar y Modificación de un archivo mediante la clase sed y una secuencia de comandos postinstall. Sólo se necesita un archivo corto (más allá de los archivos pkginfo y prototype). El archivo funciona con varias instancias de un paquete debido a que se usa el parámetro PKGINST y no se requiere una secuencia de comandos postinstall, ya que el comando init q se puede ejecutar desde la secuencia de comandos de clase build.

Archivos de casos prácticos

El archivo pkginfo

PKG=case6
NAME=Case Study #6
CATEGORY=applications
BASEDIR=/opt
ARCH=SPARC
VERSION=Version 1d05
CLASSES=build

El archivo prototype

i pkginfo
e build /etc/inittab ? ? ?

El archivo build

# PKGINST parameter provided by installation service
# remove all entries from the existing table that
# are associated with this PKGINST
sed -e "/^[^:]*:[^:]*:[^:]*:[^#]*#$PKGINST$/d" /etc/inittab ||
exit 2
if [ "$1" = install ]
then
# add the following entry to the table
echo "rb:023456:wait:/usr/robot/bin/setup #$PKGINST" ||
exit 2
fi
/sbin/init q ||
exit 2
exit 0