Use el comando pkgmk para construir el paquete. El comando pkgmk ejecuta las tareas siguientes:
Coloca todos los objetos definidos del archivo prototype en formato del directorio.
Produce un paquete instalable que se usa como entrada al comando pkgadd.
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.
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:
La primera línea indica el número de volúmenes que abarca el paquete, así como el tamaño aproximado que el paquete tendrá cuando se instale.
Por ejemplo, : 1 3170 indica que el paquete abarca un volumen y usará aproximadamente 3170 bloques de 512 bytes cuando se instale.
Hay tres campos adicionales que definen el tamaño, la suma de comprobación y el tiempo de la modificación de cada objeto de paquete.
Los objetos del paquete aparecen en orden alfabético por clase y nombre de ruta para reducir el tiempo que dura la instalación del paquete.
Cree un archivo pkginfo, si no lo ha hecho ya.
Para conocer las instrucciones detalladas, consulte Cómo crear un archivo pkginfo.
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.
Haga los cambios necesarios para que el directorio de trabajo actual sea el mismo que contiene el archivo prototype del paquete.
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] |
Sobrescribe la versión actual del paquete.
Anula la información de arquitectura del archivo pkginfo.
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.
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.
Nombra un archivo, nombre_archivo, que se usa como archivo prototype. Los nombres predeterminados son prototype o Prototype.
Especifica el tamaño máximo, en bloques de 512 bytes, del dispositivo de salida.
Anula la definición de indicación de producción en el archivo pkginfo.
Solicita que el directorio raíz ruta_raíz se use para encontrar los objetos en el sistema de desarrollo.
Anula la información de la versión del archivo pkginfo.
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.
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).
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. $ |
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.
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.
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.
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. $ |
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:
El paquete se construye mediante el archivo de ejemplo prototype que se crea mediante el comando pkgproto. Consulte Ejemplo: creación de un archivo prototype con el comando pkgproto para obtener más información.
El paquete se construye sin modificar los campos de ruta.
El paquete agrega una entrada para el archivo pkginfo.
$ 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.
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).
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.