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

Construcción de un paquete

Use el comando pkgmk para construir el paquete. El comando pkgmk ejecuta las tareas siguientes:

Uso del comando pkgmk más sencillo

La forma más sencilla de este comando es pkgmk sin opción alguna. Antes de usar el comando pkgmk sin opciones, compruebe que el directorio de trabajo actual contenga el archivo prototype del paquete. La salida del comando, archivos y directorios, se escribe en el directorio /var/spool/pkg.

El archivo pkgmap

Si construye un paquete con el comando pkgmk, crea un archivo pkgmap que sustituye al archivo prototype. El archivo pkgmap del ejemplo anterior muestra el contenido siguiente:


$ more pkgmap
: 1 3170
1 d none SUNWcadap 0755 root sys
1 d none SUNWcadap/demo 0755 root bin
1 f none SUNWcadap/demo/file1 0555 root bin 14868 45617 837527496
1 d none SUNWcadap/lib 0755 root bin
1 f none SUNWcadap/lib/file2 0644 root bin 1551792 62372 837527499
1 d none SUNWcadap/man 0755 bin bin
1 d none SUNWcadap/man/man1 0755 bin bin
1 f none SUNWcadap/man/man1/file3.1 0444 bin bin 3700 42989 837527500
1 f none SUNWcadap/man/man1/file4.1 0444 bin bin 1338 44010 837527499
1 f none SUNWcadap/man/windex 0644 root other 157 13275 837527499
1 d none SUNWcadap/srcfiles 0755 root bin
1 f none SUNWcadap/srcfiles/file5 0555 root bin 12208 20280 837527497
1 f none SUNWcadap/srcfiles/file6 0555 root bin 12256 63236 837527497
1 i pkginfo 140 10941 837531104
$

El formato de este archivo es muy similar al del archivo prototype. Sin embargo, el archivo pkgmap incluye la información siguiente:

ProcedureCómo construir un paquete

  1. Cree un archivo pkginfo, si no lo ha hecho ya.

    Para conocer las instrucciones detalladas, consulte Cómo crear un archivo pkginfo.

  2. Cree un archivo prototype, si no lo ha hecho ya.

    Para obtener instrucciones detalladas, consulte Cómo crear un archivo prototype mediante el comando pkgproto.

  3. Haga los cambios necesarios para que el directorio de trabajo actual sea el mismo que contiene el archivo prototype del paquete.

  4. Construya su paquete.


    $ pkgmk [-o] [-a arch] [-b base-src-dir] [-d device]
       [-f filename] [-l limit] [-p pstamp] [-r rootpath]
       [-v version] [PARAM=value] [pkginst]
    -o

    Sobrescribe la versión actual del paquete.

    -a arq

    Anula la información de arquitectura del archivo pkginfo.

    -b dir_ori_base

    Solicita que dir_ori_base se agregue al comienzo de nombres de ruta reubicables cuando el comando pkgmk busque objetos en el sistema de desarrollo.

    -d dispositivo

    Especifica que el paquete debe copiarse en dispositivo que puede ser un nombre de ruta absoluta de directorio, un disquete o un disco extraíble.

    -f nombre_archivo

    Nombra un archivo, nombre_archivo, que se usa como archivo prototype. Los nombres predeterminados son prototype o Prototype.

    -l límite

    Especifica el tamaño máximo, en bloques de 512 bytes, del dispositivo de salida.

    -p indicación_p

    Anula la definición de indicación de producción en el archivo pkginfo.

    -r ruta_raíz

    Solicita que el directorio raíz ruta_raíz se use para encontrar los objetos en el sistema de desarrollo.

    -v versión

    Anula la información de la versión del archivo pkginfo.

    PARAM=valor

    Configura las variables de entorno globales. Las variables que comienzan por minúscula se resuelven en el tiempo de la construcción. Las que comienzan por mayúscula se sitúan en el archivo pkginfo para usarlo en el tiempo de la instalación.

    pkginst

    Especifica un paquete por su abreviatura o instancia específica (por ejemplo, SUNWcadap.4).

    Para obtener más información, consulte la página de comando man pkgmk(1).

  5. Compruebe el contenido del paquete.


    $ pkgchk -d device-name pkg-abbrev
    Checking uninstalled directory format package pkg-abbrev
    from device-name
    ## Checking control scripts.
    ## Checking package objects.
    ## Checking is complete.
    $
    -d nombre_dispositivo

    Especifica la ubicación del paquete. Tenga en cuenta que nombre_dispositivo puede ser un nombre de ruta de directorio completo o los identificadores de una cinta o disco extraíble.

    abreviatura_paquete

    Es el nombre de uno o más paquetes (separados por espacios) que se deben comprobar. Si se omite, el comando pkgchk comprueba todos los paquetes disponibles.

    El comando pkgchk imprime qué aspectos del paquete se comprueban y muestra advertencias o errores, según sea el caso. Para obtener más información sobre el comando pkgchk, consulte Verificación de la integridad de un paquete.


    Precaución – Precaución –

    Los errores se deben tener en cuenta especialmente. Un error puede significar que una secuencia de comandos debe corregirse. Compruebe todos los errores y continúe si no está de acuerdo con la salida del comando pkgchk.



Ejemplo 2–2 Construcción de un paquete

Este ejemplo usa el archivo prototype creado en Ajuste de un archivo prototype creado con el comando pkgproto.


$ cd /home/jane/InfoFiles
$ pkgmk
## Building pkgmap from package prototype file.
## Processing pkginfo file.
WARNING: parameter  set to "system990708093144"
WARNING: parameter  set to "none"
## Attempting to volumize 13 entries in pkgmap.
part  1 -- 3170 blocks, 17 entries
## Packaging one part.
/var/spool/pkg/SUNWcadap/pkgmap
/var/spool/pkg/SUNWcadap/pkginfo
/var/spool/pkg/SUNWcadap/reloc/SUNWcadap/demo/file1
/var/spool/pkg/SUNWcadap/reloc/SUNWcadap/lib/file2
/var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/man1/file3.1
/var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/man1/file4.1
/var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/windex
/var/spool/pkg/SUNWcadap/reloc/SUNWcadap/srcfiles/file5
/var/spool/pkg/SUNWcadap/reloc/SUNWcadap/srcfiles/file6
## Validating control scripts.
## Packaging complete.
$


Ejemplo 2–3 Especificación de un directorio de origen para los archivos reubicables

Si el paquete contiene archivos reubicables, puede usar la opción -b dir_ori_base en el comando pkgmk para especificar un nombre de ruta que agregar al comienzo de los nombres de ruta reubicables mientras el paquete se está creando. Esta opción es útil si no ha usado el formato ruta1=ruta2 para los archivos reubicables ni especificado una ruta de búsqueda con el comando !search en el archivo prototype.

El comando siguiente construye un paquete con las características siguientes:


$ cd /home/jane/InfoFiles
$ pkgmk -o -b /home/jane
## Building pkgmap from package prototype file.
## Processing pkginfo file.
WARNING: parameter  set to "system960716102636"
WARNING: parameter  set to "none"
## Attempting to volumize 13 entries in pkgmap.
part  1 -- 3170 blocks, 17 entries
## Packaging one part.
/var/spool/pkg/SUNWcadap/pkgmap
/var/spool/pkg/SUNWcadap/pkginfo
/var/spool/pkg/SUNWcadap/reloc/SUNWcadap/demo/file1
/var/spool/pkg/SUNWcadap/reloc/SUNWcadap/lib/file2
/var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/man1/file3.1
/var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/man1/file4.1
/var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/windex
/var/spool/pkg/SUNWcadap/reloc/SUNWcadap/srcfiles/file5
/var/spool/pkg/SUNWcadap/reloc/SUNWcadap/srcfiles/file6
## Validating control scripts.
## Packaging complete.

En este ejemplo, el paquete se construye en el directorio predeterminado /var/spool/pkg, mediante la especificación de la opción -o. Esta opción sobrescribe el paquete que se creó en el Ejemplo 2–2.



Ejemplo 2–4 Especificación de diversos directorios de origen para los archivos de información y los objetos de los paquetes

Si coloca archivos de información de paquetes (como pkginfo y prototype) y objetos de paquetes en dos directorios diferentes, puede crear el paquete si usa las opciones -b dir_ori_base y -r ruta_raíz en el comando pkgmk. Si tiene objetos de paquetes en un directorio llamado /product/pkgbin y los demás archivos de información de paquetes en un directorio llamado /product/pkgsrc, podría usar el comando siguiente para situar el paquete en el directorio /var/spool/pkg:


$ pkgmk -b /product/pkgbin -r /product/pkgsrc -f /product/pkgsrc/prototype

De forma optativa, puede usar estos comandos para conseguir el mismo resultado:


$ cd /product/pkgsrc
$ pkgmk -o -b /product/pkgbin

En este ejemplo, el comando pkgmk usa el directorio de trabajo actual para buscar las partes restantes del paquete (como los archivos de información prototype y pkginfo).


Véase también

Si desea agregar secuencias de comandos de instalación y archivos de información optativos al paquete, consulte Capítulo 3Mejora de las funciones de un paquete (tareas). De lo contrario, después de construir el paquete, debe verificar su integridad. Capítulo 4Verificación y transferencia de un paquete explica cómo hacerlo y ofrece instrucciones detalladas sobre cómo transferir el paquete verificado a un medio de distribución.