JavaScript is required to for searching.
Omitir V�nculos de navegaci�n
Salir de la Vista de impresi�n
Páginas del comando man de Image Packaging System     Oracle Solaris 11 Information Library (Español)
search filter icon
search icon

Información del documento

Prefacio

Comandos de usuario

packagemanager(1)

pkg(1)

pkgdepend(1)

pkgdiff(1)

pkgfmt(1)

pkglint(1)

pkgmerge(1)

pkgmogrify(1)

pkgrecv(1)

pkgrepo(1)

pkgsend(1)

pkgsign(1)

pm-updatemanager(1)

Comandos de administración del sistema

Estándares, entornos y macros

pkgmogrify

- transmogrifier de manifiesto de Image Packaging System

Sinopsis

/usr/bin/pkgmogrify [-vi] [-I incluir_dir ...]
    [-D macro=valor ...] [-O archivo_salida]
    [-P impr_archivo] [archivo_entrada ...]

Descripción

pkgmogrify permite la edición programática de los manifiestos de paquetes para simplificar las transformaciones típicas necesarias para automatizar la generación de software y la publicación de paquetes.

pkgmogrify proporciona lo siguiente:

Opciones

Se admiten las siguientes opciones:

-D nombre= valor

Define el nombre como una macro, con el valor valor. En el archivo de entrada las macros aparecen como $ (macro). La sustitución se repite hasta que no se encuentren más traducciones. Los idiomas comunes incluyen:

  • Eliminación de líneas en un manifiesto en otras arquitecturas mediante una etiqueta específica de arquitectura al principio de la línea:

    $(sparc_ONLY)file ...

    Al procesar la arquitectura SPARC, esta macro se establecería en la cadena vacía. Al procesar otras arquitecturas, esta macro se establecería en # en la línea de comandos y, de esta manera, eliminaría esta acción del manifiesto en la arquitectura actual.

  • Definición de partes de nombres de rutas específicas de la plataforma, como el nombre del directorio de la arquitectura de 64 bits para archivos ejecutables y bibliotecas:

    file NOHASH path=usr/bin/$(ARCH64)/cputrack ...

    Estas macros se debe definir en el valor deseado en la línea de comandos. No hay valores de macro predefinidos.

-I incluir_directorio

Agrega el directorio especificado a la ruta de búsqueda para archivos especificados en la línea de comandos y directivas de inclusión incrustadas.

-O archivo_salida

Escribe la salida del manifiesto en el archivo especificado. Si se produce un error o si una directiva de transformación provoca una operación de cancelación, el archivo no se escribe. De manera predeterminada, la salida del manifiesto se escribe en stdout.

-P impr_archivo

Escribe la salida que resulta de las operaciones de impresión de la directiva de transformación en el archivo especificado. Si se produce un error o si una directiva de transformación provoca una operación de cancelación, el archivo no se escribe. De manera predeterminada, la salida de impresión se escribe en stdout.

-i

Ignora las directivas de inclusión en los archivos. Sólo se procesan los archivos especificados en la línea de comandos (o stdin).

-v

Escribe comentarios en el manifiesto de salida que muestra el efecto de las transformaciones. Esta información puede facilitar la depuración.

--help o -?

Muestra un mensaje de uso.

Directivas incrustadas

Se admiten dos tipos de directivas en los archivos de manifiesto: directivas de inclusión y directivas de transformación.

Las directivas de inclusión tienen el formato siguiente:

<include file>

Esta directiva hace que pkgmogrify busque un archivo llamado file, primero, en el directorio actual y, luego, en los directorios especificados mediante la opción -I. Si se encuentra este archivo, su contenido se inserta en el manifiesto en el punto en el que se detecta la directiva. Si no se encuentra, pkgmogrify se cierra con un error.

Las directivas de transformación tienen el formato siguiente:

<transform matching-criteria -> operation>

Estas directivas se acumulan hasta que todas las entradas se hayan leído en la memoria y, luego, aplicado a las acciones en el orden en el que se detectaron.

Los criterios de coincidencia tienen el formato siguiente:

[action-type ... ] [attribute=<value-regexp> ...]

Uno de los tipos_acción especificados debe coincidir. Todos los atributos especificados deben coincidir. La sintaxis de la expresión regular utilizada es la de Python. Para obtener más información sobre la sintaxis de la expresión regular de Python, utilice el comando pydoc re o vea documentación más completa en http://docs.python.org/dev/howto/regex.html . La expresión regular se ancla al principio, no al final. Por lo tanto, una expresión regular para confrontar archivos según sus extensiones debe incluir .* al principio y $ al final.

Se pueden especificar varios criterios separados por espacios.

Las siguientes operaciones están disponibles:

add

Agrega un valor a un atributo. Esta operación utiliza dos argumentos. El primer argumento es el nombre del atributo y el segundo es el valor.

default

Establece el valor de un atributo si no existe previamente. Esta operación utiliza los mismos dos argumentos que la operación add.

delete

Elimina los valores de atributos. Esta operación utiliza dos argumentos. El primer argumento es el nombre del atributo. El segundo argumento es una expresión regular para confrontar los valores de atributos suprimidos. A diferencia de la expresión regular que se utiliza para confrontar acciones, esta expresión no se ancla.

drop

Desecha la acción.

edit

Modifica un atributo de la acción. Esta operación utiliza tres argumentos. El primer argumento es el nombre del atributo y el segundo es un expresión regular para confrontar el valor de atributo. El tercer argumento es la cadena de sustitución reemplazada por la parte del valor de coincidencia detectado por la expresión regular. A diferencia de la expresión regular que se utiliza para confrontar acciones, esta expresión no se ancla. Si se definen grupos en la expresión regular, hay retroreferencias de expresión regular normal, con el formato \1, \2, etcétera, disponibles en la cadena de sustitución.

emit

Emite una línea a la secuencia de salida del manifiesto. Se debe tratar de una cadena de acción válida, vacía (que genera una línea en blanco), o un comentario (un # seguido de un texto arbitrario).

exit

Finaliza el procesamiento del manifiesto. No se genera la salida de ningún manifiesto ni se aplican operaciones print. Si se proporciona un argumento, debe ser un valor entero, y se utiliza como código de salida. El valor predeterminado es 0. Si se especifican dos argumentos, el primero es el código de salida y el segundo es un mensaje para imprimir en stderr.

print

Imprime un mensaje en el archivo de salida especificado mediante -P.

set

Establece el valor de un atributo. Esta operación utiliza los mismos dos argumentos que la operación add.

Todas las operaciones, excepto delete y drop, utilizan (posiblemente opcional) argumentos cuyo contenido se dirige a la secuencia de salida. Estas cadenas pueden contener tres tipos diferentes de tokens especiales que permiten que la salida incluya información que no está basada en una transformación fija de cada acción.

El primer tipo de sustitución permite a la operación hacer referencia a los valores de los atributos de la acción actual, mediante la colocación del nombre del atributo entre paréntesis a continuación de un signo de porcentaje. Por ejemplo, %(alias) hace referencia al valor del atributo alias de la acción.

Existen varios atributos sintéticos. Dos son exclusivos de pkgmogrify:

Tres atributos sintéticos son similares a los utilizados en pkg(1):

Si el atributo cuyo valor se solicita no existe, pkgmogrify se cierra con un error. Para evitar un cierre con error, a continuación del nombre del atributo escriba ;notfound= y un valor para sustituir el valor del atributo. Por ejemplo, %(alias;notfound='no alias') imprime el valor del atributo alias si existe, y de lo contrario imprime no alias.

Si el atributo cuyo valor se solicita tiene múltiples valores, se imprimen todos los valores separados por espacios. De la misma manera que el token notfound, los tokens prefix, suffix y sep se pueden utilizar para cambiar este comportamiento. La cadena indicada mediante prefix se antepone a cada valor, la cadena indicada mediante suffix se agrega a cada valor, y sep se coloca entre el sufijo de un valor y el prefijo del valor siguiente.

De la misma manera que los atributos de acción, las directivas pkgmogrify pueden hacer referencia a los atributos del paquete mediante llaves en lugar de paréntesis: %{pkg.fmri}. En el punto en el que se aplica la directiva de transformación, el atributo se debe haber definido en una acción set, de lo contrario, se trata como notfound, descrito anteriormente. Cuando el procesamiento alcanza el final del archivo de manifiesto que describe el paquete, los atributos se borran para el paquete siguiente.

Es útil no sólo hacer referencia a los atributos del paquete como si fueran atributos de acción, sino también buscar coincidencias en ellos e, incluso, modificarlos temporalmente. Por lo tanto un nombre de acción sintético, pkg, está disponible (sólo en el contexto de pkgmogrify) para su uso en estas situaciones.

Cuando pkgmogrify termina de leer un manifiesto especificado en la línea de comandos, y dicho manifiesto define un atributo de paquete pkg.fmri, pkgmogrify crea esta acción sintética pkg, cuyos atributos son los atributos del paquete. Entonces, una directiva <transform> puede encontrar coincidencias en esta acción, al igual que cualquier otro tipo de acción.

Las operaciones en una acción pkg son especiales porque se realizan sólo en la memoria y no afectan directamente el manifiesto emitido. Por ejemplo, si se intenta definir un atributo en una acción pkg por medio de las operaciones add, default o set, no se provocará que se agregue una acción set al manifiesto, aunque ésta estará disponible para que otras directivas <transform> busquen coincidencias. Si se intenta realizar la operación emit con pkg, se generará un error. Para agregar un atributo de paquete, realice la operación emit con la acción set.

El tercer tipo de sustitución es una retroreferencia. Esta sustitución no es como aquellas que se pueden utilizar en la operación edit, es una referencia a grupos que aparecen en la coincidencia de transformación a la izquierda de ->. Se indica mediante %<1>, %<2> y así sucesivamente, en el orden en el que aparecen en los criterios de coincidencia.

El orden de procesamiento es el siguiente:

  1. Se leen las líneas desde los archivos de entrada.

  2. Se aplican las macros.

  3. Se procesan las directivas <include ...> y <transform>, lo que provoca que se encuentren y se lean archivos adicionales.

  4. Una vez que se acumula toda la entrada, todas las líneas de entrada se convierten en acciones y se aplican todas las transformaciones.

  5. Una vez que el procesamiento finaliza correctamente, se escribe la salida.

Ejemplos

Ejemplo 1 Adición de etiquetas a manifiestos SMF

Agregue etiquetas a los manifiestos de Service Management Facility (SMF) para que se importen cuando el paquete se instale en un sistema activo.

<transform file path=(var|lib)/svc/manifest/.*\.xml -> \
    add restart_fmri svc:/system/manifest-import:default>

Ejemplo 2 Movimiento de archivos

Mueva archivos de usr/sfw/bin a usr/bin.

<transform file -> edit path usr/sfw/bin usr/bin>

Ejemplo 3 Especificación de reinicio necesario

Agregue etiquetas reboot-needed a archivos de /kernel que no sean archivos .conf. Tenga en cuenta que en este ejemplo se aprovecha cómo se aplican las transformaciones en cada acción, en el orden visto en los archivos de entrada.

<transform file path=kernel/.* -> set reboot-needed true>
<transform file path=kernel/.*\.conf -> delete reboot-needed .*>

Esto también se puede hacer en una sola regla de transformación con expresiones regulares.

Ejemplo 4 Conversión de un atributo FMRI en una acción de dependencia

Convierta el atributo de paquete pkg.fmri en una acción depend para que pase a formar parte de una incorporación.

<transform set name=pkg.fmri -> \
    emit depend type=incorporate fmri=%(value)>
<transform set name=pkg.fmri -> drop>

Ejemplo 5 Impresión de una lista de números de error

Imprima una lista de números de error entre comillas y con prefijo, separados por comas.

set name=bugs value=12345 value=54321 value=13579 value=97531
<transform set name=bugs -> \
    print %(value;sep=",";prefix="bug='";suffix="'")>

Ejemplo 6 Admisión de falta de atributos

Imprima un mensaje de manera segura, incluso si falta un atributo.

<transform driver -> print Found aliases: %(alias;notfound=<none>)>

Ejemplo 7 Establecimiento de valores predeterminados

Establezca los valores predeterminados de propietario, grupo y permiso.

<transform file dir -> default owner root>
<transform file dir -> default group bin>
<transform file -> default mode 0444>
<transform dir -> default mode 0755>

Ejemplo 8 Adición de dependencias a paquetes que no están marcados como obsoletos

Para cualquier paquete que no esté marcado como obsoleto, agregue una dependencia en la incorporación para la consolidación que ofrece el paquete. Este conjunto de transformaciones se deben realizar después de que el manifiesto se haya leído, o se emitirá la dependencia siempre. Como la modificación de una acción pkg no tiene un efecto permanente, no es necesario eliminar los atributos que coinciden con pkg.obsolete=false.

<transform pkg -> default pkg.obsolete false>
<transform pkg pkg.obsolete=false -> emit depend \
    fmri=consolidation/$(CONS)/$(CONS)-incorporation type=require>

Ejemplo 9 Cierre e impresión de un mensaje cuando se encuentra un error

Cuando se encuentra un atributo obsoleto en un manifiesto, se genera un error y un mensaje.

<transform file dir link hardlink opensolaris.zone=.* -> \
    exit 1 The opensolaris.zone attribute is obsolete.>

Ejemplo 10 Establecimiento de la faceta de configuración regional adecuada

Establezca la faceta de configuración regional adecuada para el nombre de ruta en consideración.

<transform dir file link hardlink path=.*/locale/([^/]+).* -> \
    default facet.locale.%<1> true>

Estado de salida

Se devolvieron los siguientes valores de salida:

0

Ejecución correcta.

1

Sucedió algo malo pero anticipado.

2

Se especificaron opciones de línea de comandos no válidas.

99

Error de procesamiento inesperado.

Archivos

/usr/share/pkg/transforms

Este directorio contiene archivos con transformaciones útiles para establecer facetas, actuadores y otros atributos.

Atributos

Consulte attributes(5) para ver descripciones de los atributos siguientes:

TIPO DE ATRIBUTO
VALOR DEL ATRIBUTO
Disponibilidad
package/pkg
Estabilidad de interfaz
Sin asignar.

Véase también

pkg(1), pkg(5)

http://hub.opensolaris.org/bin/view/Project+pkg/