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.
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.
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:
Definir el archivo build en el archivo prototype.
La entrada para el archivo build en el archivo prototype debe colocarla en la clase build y definir su tipo de archivo como e. Asegúrese de que el parámetro CLASSES del archivo pkginfo se define como build.
Crear la secuencia de comandos de clase build.
La secuencia de comandos de clase build de ejemplo ejecuta los procesos siguientes:
Edita el archivo /etc/inittab para suprimir los cambios en este paquete. Observe que el nombre de archivo /etc/inittab no es modificable en el comando sed.
Si se está instalando el paquete, agrega la nueva línea al final de /etc/inittab. Se incluye una etiqueta de comentario en esta nueva entrada para describir de dónde viene dicha entrada.
Ejecuta el comando init q.
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.
PKG=case6 NAME=Case Study #6 CATEGORY=applications BASEDIR=/opt ARCH=SPARC VERSION=Version 1d05 CLASSES=build |
i pkginfo e build /etc/inittab ? ? ? |
# 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 |