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 los archivos crontab durante la instalación del paquete.
Este caso práctico muestra las técnicas siguientes:
Uso de secuencias de comandos de acción de clase y clases
Para obtener más información, consulte Escritura de secuencias de comandos de acción de clase.
Uso del comando crontab en una secuencia de comandos de acción de clase.
El modo más eficaz de modificar más de un archivo durante la instalación es definir una clase y ofrecer una secuencia de comandos de acción de clase. Si se ha servido de la aproximación a la clase build, debe entregar una secuencia de comandos de clase build para cada archivo crontab modificado. La definición de una clase cron proporciona una aproximación más general. Para editar los archivos crontab con esta aproximación, debe:
Definir los archivos crontab que se van a modificar en el archivo prototype.
Cree una entrada en el archivo prototype para cada archivo crontab que se modificará. Defina la clase como cron y el tipo de archivo como e para cada archivo. Use el nombre real del archivo que se va a modificar.
Crear los archivos crontab para el paquete.
Estos archivos contienen la información que desea agregar a los archivos crontab existentes del mismo nombre.
Crear una secuencia de comandos de acción de clase de instalación para la clase cron.
La secuencia de comandos i.cron de ejemplo ejecuta los procesos siguientes:
Determina el ID de usuario (UID).
La secuencia de comandos i.cron configura la variable user con el nombre base de la secuencia de comandos de clase cron que se está procesando. Ese nombre es el UID. Por ejemplo, el nombre base de /var/spool/cron/crontabs/root es raíz, además del UID.
Ejecuta crontab mediante el UID y la opción -l.
El uso de la opción -l indica a crontab que envíe el contenido del archivo crontab del usuario definido a la salida estándar.
Dirige la salida del comando crontab a una secuencia de comandos sed que suprime las entradas anteriores agregadas con esta técnica de instalación.
Coloca la salida modificada en un archivo temporal.
Agrega el archivo de datos del UID raíz (que se entregó con el paquete) al archivo temporal y agrega una etiqueta para que sepa de dónde vienen estas entradas.
Ejecuta crontab con el mismo UID y le entrega el archivo temporal como entrada de información.
Crear una secuencia de comandos de acción de clase de eliminación para la clase cron.
La secuencia de comandos r.cron es la misma que la secuencia de comandos de instalación excepto que no hay procesos para agregar información al archivo crontab.
Estos procesos se llevan a cabo para cada archivo en la clase cron.
Un superusuario ejecuta las secuencias de comandos i.cron y r.cron que se describen a continuación. La modificación del archivo crontab de otro usuario puede tener resultados imprevistos. Si fuera necesario, cambie la entrada siguiente de cada secuencia de comandos:
crontab $user < /tmp/$$crontab ||
a
su $user -c "crontab /tmp/$$crontab" ||
PKG=case7 NAME=Case Study #7 CATEGORY=application BASEDIR=/opt ARCH=SPARC VERSION=Version 1.0 CLASSES=cron
i pkginfo i i.cron i r.cron e cron /var/spool/cron/crontabs/root ? ? ? e cron /var/spool/cron/crontabs/sys ? ? ?
# PKGINST parameter provided by installation service while read src dest do user=`basename $dest` || exit 2 (crontab -l $user | sed -e "/#$PKGINST$/d" > /tmp/$$crontab) || exit 2 sed -e "s/$/#$PKGINST/" $src >> /tmp/$$crontab || exit 2 crontab $user < /tmp/$$crontab || exit 2 rm -f /tmp/$$crontab done exit 0
# PKGINST parameter provided by installation service while read path do user=`basename $path` || exit 2 (crontab -l $user | sed -e "/#$PKGINST$/d" > /tmp/$$crontab) || exit 2 crontab $user < /tmp/$$crontab || exit 2 rm -f /tmp/$$crontab done exit
41,1,21 * * * * /usr/lib/uucp/uudemon.hour > /dev/null 45 23 * * * ulimit 5000; /usr/bin/su uucp -c "/usr/lib/uucp/uudemon.cleanup" > /dev/null 2>&1 11,31,51 * * * * /usr/lib/uucp/uudemon.poll > /dev/null
0 * * * 0-6 /usr/lib/sa/sa1 20,40 8-17 * * 1-5 /usr/lib/sa/sa1 5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 1200 -A
Nota - Si la modificación de un grupo de archivos aumenta el tamaño total del archivo en más de 10K, proporcione un archivo space para que el comando pkgadd pueda permitir este aumento. Para obtener más información sobre el archivo space, consulte Reserva del espacio adicional en un sistema de destino.