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
6. Técnicas avanzadas para la creación de paquetes
Especificación del directorio base
El archivo administrativo predeterminado
Familiarización con la incertidumbre
Uso de directorios base paramétricos
Ejemplos: uso de directorios base paramétricos
Administración del directorio base
Ejemplo: secuencias de comandos de análisis que recorren un BASEDIR
La secuencia de comandos request
La secuencia de comandos checkinstall
Uso de rutas paramétricas relativas
Ejemplo: una secuencia de comandos request que recorra una ruta paramétrica relativa
Admisión de la reubicación en un entorno heterogéneo
Ejemplo: paquete reubicable tradicional
Ejemplo: paquete absoluto tradicional
Otra mirada a los paquetes compuestos
Cómo conseguir que los nombres de rutas absolutas tengan el aspecto de reubicables
Ejemplo: modificación de un archivo
Ejemplo: creación de un nuevo archivo
Creación de paquetes de instalación remota
Ejemplo: instalación en un sistema cliente
Ejemplo: instalación en un servidor o sistema autónomo
Ejemplo: montaje de sistemas de archivos compartidos
La secuencia de comandos checkinstall
La secuencia de comandos preinstall
Secuencia de comandos de acción de clase
La secuencia de comandos postinstall
La secuencia de comandos patch_checkinstall
La secuencia de comandos patch_postinstall
Creación de paquetes de archivo de clase
Estructura del directorio de paquetes de archivos
El proceso para actualizar un paquete es muy diferente del proceso para sobrescribirlo. Si bien hay herramientas especiales para admitir la actualización de paquetes estándar distribuidos como parte del sistema operativo Oracle Solaris, se puede diseñar un paquete no integrado para que admita su propia actualización. En diversos ejemplos anteriores, se describieron paquetes que van más allá y controlan el método exacto de instalación bajo la dirección del administrador. Puede diseñar la secuencia de comandos request para que admita también la actualización directa de un paquete. Si el administrador elige la instalación de un paquete para que sustituya a otro completamente, sin que queden archivos obsoletos residuales, las secuencias de comandos de paquetes permiten esta posibilidad.
Las secuencias de comandos request y postinstall de este ejemplo ofrecen un único paquete actualizable. La secuencia de comandos request se comunica con el administrador y, a continuación, configura un único archivo en el directorio /tmp para suprimir la instancia de paquete anterior. (Aunque la secuencia de comandos request cree un archivo (lo cual está prohibido), no hay ningún problema, ya que todos tienen acceso a /tmp).
La secuencia de comandos postinstall ejecuta a continuación la secuencia de comandos de shell en /tmp que ejecuta el comando pkgrm necesario relacionado con el paquete anterior y después se suprime.
Este ejemplo ilustra una actualización básica. Son menos de 50 líneas de código, incluidos algunos mensajes bastante largos. Se podría ampliar para anular la actualización o llevar a cabo otras transformaciones principales en el paquete, según lo requiera el diseñador.
El diseño de la interfaz de usuario para una opción de actualización debe estar completamente seguro de que el administrador tiene plena conciencia del proceso y que ha solicitado activamente la actualización en lugar de una instalación paralela. No hay problemas en llevar a cabo una operación compleja bien comprendida como una actualización siempre que la interfaz del usuario deje la operación clara.
# request script control an upgrade installation PATH=/usr/sadm/bin:$PATH UPGR_SCRIPT=/tmp/upgr.$PKGINST UPGRADE_MSG="Do you want to upgrade the installed version ?" UPGRADE_HLP="If upgrade is desired, the existing version of the \ package will be replaced by this version. If it is not \ desired, this new version will be installed into a different \ base directory and both versions will be usable." UPGRADE_NOTICE="Conflict approval questions may be displayed. The \ listed files are the ones that will be upgraded. Please \ answer \"y\" to these questions if they are presented." pkginfo -v 1.0 -q SUNWstuf.\* if [ $? -eq 0 ]; then # See if upgrade is desired here response=`ckyorn -p "$UPGRADE_MSG" -h "$UPGRADE_HLP"` if [ $response = "y" ]; then OldPkg=`pkginfo -v 1.0 -x SUNWstuf.\* | nawk ' \ /SUNW/{print $1} '` # Initiate upgrade echo "PATH=/usr/sadm/bin:$PATH" > $UPGR_SCRIPT echo "sleep 3" >> $UPGR_SCRIPT echo "echo Now removing old instance of $PKG" >> \ $UPGR_SCRIPT if [ ${PKG_INSTALL_ROOT} ]; then echo "pkgrm -n -R $PKG_INSTALL_ROOT $OldPkg" >> \ $UPGR_SCRIPT else echo "pkgrm -n $OldPkg" >> $UPGR_SCRIPT fi echo "rm $UPGR_SCRIPT" >> $UPGR_SCRIPT echo "exit $?" >> $UPGR_SCRIPT # Get the original package's base directory OldBD=`pkgparam $OldPkg BASEDIR` echo "BASEDIR=$OldBD" > $1 puttext -l 5 "$UPGRADE_NOTICE" else if [ -f $UPGR_SCRIPT ]; then rm -r $UPGR_SCRIPT fi fi fi exit 0
# postinstall to execute a simple upgrade PATH=/usr/sadm/bin:$PATH UPGR_SCRIPT=/tmp/upgr.$PKGINST if [ -f $UPGR_SCRIPT ]; then sh $UPGR_SCRIPT & fi exit 0