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) |
- analizador de dependencia de Image Packaging System
/usr/bin/pkgdepend [options] command [cmd_options] [operands]
/usr/bin/pkgdepend generate [-IMm] -d dir [-d dir] [-D name=value] [-k path] manifest_file
/usr/bin/pkgdepend resolve [-moSv] [-d output_dir] [-s suffix] manifest_file ...
El comando pkgdepend se utiliza para generar y resolver dependencias de paquetes. Un paquete puede depender de archivos de otros paquetes. El comando pkgdepend generalmente se utiliza en dos etapas: la generación de dependencia de archivos y la resolución de archivo a paquete.
E subcomando generate analiza el contenido de un paquete y determina qué archivos externos necesita el paquete.
El subcomando resolve toma la lista de archivos del paso generate y busca un conjunto de paquetes de referencia para determinar los nombres de los paquetes que contienen dichos archivos dependientes. El conjunto de paquetes de referencia en los que se buscan los archivos dependientes son los paquetes que están actualmente instalados en el sistema del editor.
Diversos componentes de los archivos entregados se utilizan como fuentes de información de dependencia:
Los encabezados ELF de los archivos entregados se analizan en busca de información de dependencia, y las opciones -k y -D modifican la información obtenida. Para obtener más detalles sobre las dependencias ELF, consulte ldd(1) y la Linker and Libraries Guide.
Las secuencias de comandos de shell que contienen líneas #! que hacen referencia a un intérprete generan una dependencia del paquete que ofrece dicho intérprete.
Las secuencias de comandos de Python en primer lugar se analizan como secuencias de comandos. Además, cualquier importación que declare la secuencia de comandos también puede servir como fuente de información de dependencia.
Los enlaces físicos de los manifiestos generan una dependencia del paquete que ofrece el destino de enlace.
Los manifiestos de servicios SMF entregados que incluyen dependencias require_all generan dependencias de los paquetes que ofrecen los manifiestos SMF que proporcionan los FMRI.
Se admiten las siguientes opciones:
Realiza operaciones en la imagen con raíz en directorio. Si no se especificó ningún directorio, o si no se determinó ninguno en función del entorno, el valor predeterminado es /. Para obtener más información, consulte la sección "Variables del entorno".
Muestra un mensaje de uso.
Se admiten los subcomandos siguientes:
Produzca las dependencias de los archivos del manifiesto especificado por manifest_file.
Con -I, muestre las dependencias que se satisfacen en manifest_file. No utilice el resultado de -I con pkgdepend resolve.
Con -M, puede mostrar una lista de los tipos de archivo que no se pudieron analizar.
Con -m, puede repetir el manifiesto original con cualquier dependencia detectada agregada después.
Con -d, puede agregar directorio a una lista de directorios en los que se buscarán los archivos del manifiesto.
Para cada -D, agregue el valor como una manera de expandir el token nombre en rutas de ejecución para las dependencias de archivos ELF.
Para cada -k, agregue la ruta a la lista de rutas de ejecución para la búsqueda de módulos de núcleo. Mediante el argumento -k se eliminan las rutas predeterminadas, que son /kernel y /usr/kernel.
Las rutas de ejecución como las especificadas por la opción -k también se pueden especificar por acción o por manifiesto mediante el atributo de acción o manifiesto pkg.depend.runpath. El valor del atributo pkg.depend.runpath es una cadena separada por dos puntos de las rutas para utilizar.
El uso de -k se sustituye por cualquier atributo pkg.depend.runpath establecido en el manifiesto o la acción.
El token especial $PKGDEPEND_RUNPATH se puede utilizar como un componente del valor de atributo pkg.depend.runpath para incluir la ruta de ejecución del sistema estándar para el archivo que se está analizando.
En algunos casos, es posible que desee impedir la generación automática de dependencias. Por ejemplo, si un paquete ofrece una secuencia de comandos de Python de ejemplo que importa un conjunto de módulos, los módulos importados por la secuencia de comandos de ejemplo no son dependencias del paquete que ofrece la secuencia de comandos de ejemplo. Utilice el atributo de acción o manifiesto pkg.depend.bypass-generate para evitar generar dependencias con los archivos especificados.
Los valores de pkg.depend.bypass-generate son expresiones regulares de Python que coinciden con los nombres de archivo. Las expresiones regulares están implícitamente ancladas al inicio y al final de la ruta del archivo. El valor del ejemplo siguiente coincide con this/that, pero no coincide con something/this/that/the/other.
pkg.depend.bypass-generate=this/that
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 .
Cuando los manifiestos de entrada pkgdepend generate contienen archivos de manifiestos SMF, los servicios o las instancias SMF declarados por esos archivos de manifiestos SMF se incluyen en la salida de pkgdepend. Estas instancias o servicios SMF se incluyen en forma de una acción set con el nombre org.opensolaris.smf.fmri.
Permite transformar dependencias de archivos en dependencias de los paquetes que ofrecen esos archivos. Las dependencias se resuelven, en primer lugar, según los manifiestos de la línea de comandos y, después, según los paquetes instalados en el sistema. De manera predeterminada, las dependencias de cada manifiesto se colocan en un archivo llamado manifest_file.res.
Con -m, puede repetir el manifiesto, con cualquier dependencia producida por el paso generate eliminada, antes de agregar las dependencias resueltas.
Con -o, puede escribir los resultados en la salida estándar. Esta opción está diseñada para uso humano. Es posible que al agregar esta salida a un archivo se produzca un manifiesto no válido. Se recomienda utilizar las opciones -d o -s en lugar de -o en una canalización para el procesamiento de manifiestos.
Con -d, puede escribir las dependencias resueltas de cada manifiesto proporcionado en un archivo independiente en dir_salida. De manera predeterminada, cada archivo tiene el mismo nombre de base que el manifiesto que fue el origen de las dependencias escritas en ese archivo.
Con -s, para cada archivo de salida, puede adjuntar sufijo al nombre de base del archivo que fue el origen de las dependencias resueltas. A “.” se antepone a sufijo si no se proporciona.
Con -S, sólo puede resolver según los manifiestos proporcionados en la línea de comandos y no según los manifiestos instalados en el sistema.
Con -v, puede incluir metadatos de depuración de dependencia de paquete adicional.
Ejemplo 1 Generación de dependencias
Genere las dependencias para el manifiesto escrito en foo, cuyo directorio de contenido se encuentra en ./bar/baz, y almacene los resultados en foo.fdeps.
$ pkgdepend generate -d ./bar/baz foo > foo.fdeps
Ejemplo 2 Resolución de dependencias
Resuelva las dependencias de archivos en foo.fdeps y bar.fdeps según el uno y el otro, y según los paquetes instalados actualmente en el sistema.
$ pkgdepend resolve foo.fdeps bar.fdeps $ ls *.res foo.fdeps.res bar.fdeps.res
Ejemplo 3 Generación y resolución de dependencias para dos manifiestos
Genere las dependencias de archivos para dos manifiestos (foo y bar) y retenga toda la información en los manifiestos originales. A continuación, resuelva las dependencias de archivos y coloque los manifiestos resultantes en ./res. Estos manifiestos resultantes se pueden utilizar con pkgsend publish.
$ pkgdepend generate -d /proto/foo -m foo > ./deps/foo $ pkgdepend generate -d /proto/bar -m bar > ./deps/bar $ pkgdepend resolve -m -d ./res ./deps/foo ./deps/bar $ ls ./res foo bar
Ejemplo 4 Adición de valores a tokens para dependencias de archivos ELF
Reemplace todos los tokens PLATFORM de las rutas de ejecución de los archivos ELF por sun4v y sun4u al generar las dependencias para el manifiesto escritos en foo, cuyo directorio de contenido se encuentra en /.
$ pkgdepend generate -d / -D 'PLATFORM=sun4v' -D 'PLATFORM=sun4u' foo
Ejemplo 5 Especificación de un directorio de módulo de núcleo
Especifique /kmod como el directorio en el que se buscarán los módulos de núcleo al generar las dependencias para el manifiesto escrito en foo, cuyo directorio de contenido se encuentra en /.
$ pkgdepend generate -d / -k /kmod foo
Ejemplo 6 Omisión de la generación de dependencia
Agregue opt/python a la ruta de ejecución de Python estándar para una secuencia de comandos de Python determinada y omita la generación de dependencia con respecto a todos los módulos Python llamados test para un archivo entregado como opt/python/foo/file.py.
Evite generar dependencias respecto de cualquier archivo entregado en usr/lib/python2.6/vendor-packages/xdg.
$ cat manifest.py set name=pkg.fmri value=pkg:/mypackage@1.0,1.0 set name=pkg.summary value="My test package" dir path=opt mode=0755 group=sys owner=root dir path=opt/python mode=0755 group=sys owner=root dir path=opt/python/foo mode=0755 group=sys owner=root file NOHASH path=opt/python/__init__.py mode=0644 group=sys owner=root file NOHASH path=opt/python/foo/__init__.py mode=0644 group=sys owner=root # # Add runpath and bypass-generate attributes: # file NOHASH path=opt/python/foo/file.py mode=0644 group=sys owner=root \ pkg.depend.bypass-generate=.*/test.py.* \ pkg.depend.bypass-generate=.*/testmodule.so \ pkg.depend.bypass-generate=.*/test.so \ pkg.depend.bypass-generate=usr/lib/python2.6/vendor-packages/xdg/.* \ pkg.depend.runpath=$PKGDEPEND_RUNPATH:/opt/python $ pkgdepend generate -d proto manifest.py
Especifica el directorio que contiene la imagen que se va a utilizar para operaciones de paquetes. Este valor se ignora, si se especifica -R.
Se devolvieron los siguientes valores de salida:
Ejecución correcta.
Se produjo un error.
Se especificaron opciones de línea de comandos no válidas.
Se produjo una excepción no anticipada.
Consulte attributes(5) para ver descripciones de los atributos siguientes:
|
http://hub.opensolaris.org/bin/view/Project+pkg/