Omitir Vínculos de navegación | |
Salir de la Vista de impresión | |
Guía del desarrollador para la creación de paquetes de aplicaciones Oracle Solaris 10 1/13 Information Library (Español) |
3. Mejora de las funciones de un paquete (tareas)
4. Verificación y transferencia de un paquete
5. Casos prácticos de creación de paquetes
Cómo solicitar entrada de información al administrador
La secuencia de comandos request
Creación de un archivo durante la instalación y cómo guardarlo durante la eliminación
La secuencia de comandos de acción de clase i.admin
La secuencia de comandos de eliminación r.cfgdata
Definición de dependencias y compatibilidades de paquetes
Modificación de un archivo mediante secuencias de comandos de acción de clase y clases estándar
La secuencia de comandos de acción de clase de instalación i.inittab
La secuencia de comandos de acción de clase de eliminación r.inittab
Modificación de un archivo mediante la clase sed y una secuencia de comandos postinstall
La secuencia de comandos de acción de clase sed Class Action Script (/etc/inittab)
La secuencia de comandos postinstall
Modificación de un archivo mediante la clase build
Modificación de archivos crontab durante la instalación
La secuencia de comandos de acción de clase de instalación i.cron
La secuencia de comandos de acción de clase de eliminación r.cron
Instalación y eliminación de un controlador con secuencias de comandos de procedimientos
La secuencia de comandos request
La secuencia de comandos postinstall
La secuencia de comandos preremove
Instalación de un controlador mediante las secuencias de comandos de procedimientos y la clase sed
La secuencia de comandos de acción de clase sed Class Action Script (/etc/devlink.tab)
La secuencia de comandos de instalación postinstall
La secuencia de comandos de eliminación preremove
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 .
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.
Para modificar /etc/inittab durante la instalación, mediante secuencias de comandos de acción de clase y clases, debe completar las tareas siguientes:
Crear una clase.
Cree una clase llamada inittab . Debe proporcionar una secuencia de comandos de acción de clase de instalación y eliminación para esta clase. Defina la clase inittab en el parámetro CLASSES del archivo pkginfo.
Crear un archivo inittab.
Este archivo contiene la información para la entrada que desea agregar a /etc/inittab . Observe en la figura del archivo prototype que inittab forma parte de la clase inittab y que tiene un tipo de archivo de e para editar.
Crear una secuencia de comandos de acción de clase de instalación (i.inittab).
Recuerde que las secuencias de comandos de acción de clase deben producir los mismos resultados cada vez que se ejecutan. La secuencia de comandos de acción de clase ejecuta estos pasos:
Comprueba si la entrada se ha agregado anteriormente
Si es así, suprime las versiones anteriores de la entrada
Modifica el archivo inittab y agrega líneas de comentarios para que sepa de dónde procede la entrada
Mueve el archivo temporal a /etc/inittab
Ejecuta el comando init q cuando recibe el indicador ENDOFCLASS
Tenga en cuenta que el comando init q se puede ejecutar mediante esta secuencia de comandos de instalación. Esta aproximación no necesita una secuencia de comandos de postinstall de una línea.
Crear una secuencia de comandos de acción de clase de eliminación (r.inittab).
La secuencia de comandos de eliminación es muy parecida a la de instalación. La información agregada por la secuencia de comandos de instalación se suprime y se ejecuta el comando init q.
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.
PKG=case5 NAME=Case Study #5 CATEGORY=applications BASEDIR=/opt ARCH=SPARC VERSION=Version 1d05 CLASSES=inittab
i pkginfo i i.inittab i r.inittab e inittab /etc/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
# 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
rb:023456:wait:/usr/robot/bin/setup