Package dependencies:Spanish

Este documento en otros lenguajes: Inglés


Los paquetes pueden depender unos de otros (p.e., hay que instalar Firefox antes de instalar plugin de Firefox etc.).

Hay tres tipos de dependencias:

depend - hacer depender el paquete actual del otro paquete que se especifica.

chain - encadenar otro paquete a este paquete. Primero el paquete actual y después (encadenado al actual), el especificado en chain.

include - incluir el paquete especificado en el proceso general de WPKG.

Dependiendo de un paquete

Utilizando depend se hace que un paquete dependa de otro, esto significa, que este paquete (el actual), necesita de otro paquete (el especificado en la clausula depend) para su correcto funcionamiento. Esta dependencia pueden ser necesaria durante la instalación o actualización, por lo tanto la dependencia tendrá que ser instalada la antes que el paquete actual, independientemente de la prioridad de ambos paquetes.

El formato es muy simple, y similar al utilizado por profile dependencies

El ejemplo utilizado en Packages.xml se ha modificado en el ejemplo siguiente para hacerlo depender de otro paquete denominado "other-package":

<packages>
<package
 id="example-package"
 name="Example Package"
 revision="1"
 reboot="false"
 priority="0">

 <depends
  package-id="other-package" />

 ...

En este ejemplo, la dependencia (lo indicado en 'depends') hace que el paquete "other-package" se instale antes que el paquete actual denominado "example-package".

Encadenando un paquete

Utilizando la cláusula chain se encadena un paquete al actual, lo que significa que si se instala el paquete actual, el otro paquete indicado en la clausula chain también debe ser instalado después del actual (o a continuación del mismo).

Atención: Un paquete encadenado también puede ser instalado antes que el paquete que lo encadenó. Esto puede ocurrir cuando el paquete encadenado, quedó instalado previamente (posiblemente debido a otra dependencia) o a que tenga mayor prioridad que el paquete encadenador. Si necesitas asegurar que un paquete se instale antes que otro en el primero hay que utilizar la cláusula de dependencia anterior (ver Dependiendo de un paquete)

En el ejemplo utilizado en la página Packages.xml ha sido modificado para encadenarle otro paquete denominado "other-package":

<packages>
<package
 id="example-package"
 name="Example Package"
 revision="1"
 reboot="false"
 priority="0">

 <chain
  package-id="other-package" />

 ...

En este ejemplo el 'encadenamiento' ('chain') hace que el "other-package" se instale justo a continuación del actual paquete "example-package".

De hecho, sería exactamente igual si "other-package" tuviera una dependencia sobre este paquete "example-package". Pero con algunos paquetes puede ser más lógico y más práctico, el encadenamiento de otro paquete, en lugar de hacer depender al resto de este paquete en concreto.

Por ejemplo si utiliza un paquete "Gimp" para la aplicación "The Gimp" y un paquete "GimpHelp" guardando los ficheros de ayuda del programa; y desea que los ficheros se ayuda ("GimpHelp") se instalen siempre con "Gimp". El paquete "GimpHelp" depende del paquete "Gimp" casi tanto, como Gimp necesita sus ficheros de ayuda. Como los ficheros de ayuda necesitan obligatoriamente Gimp, habría que utilizar 'depends' en el paquete "GimpHelp". Pero en este caso, lo más lógico es encadenar ('chain') "GimpHelp" a "Gimp" como se aclara en el siguiente párrafo.

En general se considera mejor utilización, si algunos paquetes necesitan a otros (con sus componentes, librerías, frameworks, ...) para poder trabajar, que el paquete principal dependa (o necesite) a estos otros paquetes. Pero si (quizá por políticas de seguridad de las empresas) el paquete principal puede a veces ser completado con otros paquetes como ficheros de ayuda, imágenes, entonces, debería encadenarse al paquete principal estos complementos. De esta forma, si no se requieren estas extensiones siempre (por ejemplo, las extensiones de desarrollador para Firefox), no es conveniente encadenarlas al paquete principal, pero hay que hacerlas depender a los paquetes, asignándolas individualmente a los profiles cuando sea necesario.

Incluir un paquete

Utilizando la cláusula include se pueden incluir un paquete o una lista de paquetes como si fueran solicitadas en el propio perfil (profile), esto significa que si se instala este paquete, los paquetes incluidos también serán instalados. Esta inclusión será instalada basándose en su propia prioridad.

Por eso si el paquete incluído tiene priridad más alta, será instalado antes durante el proceso de sincronización. Si el paquete incluído tiene una baja prioridad, será instalado más tarde. Si busca asegurar un cierto orden de instalaciones de paquetes, debería considerar utilizar las cláusulas de dependencia (vea Dependiendo de un paquete) !

El ejemplo utilizado en Packages.xml se ha modificado para que incluya otro paquete denominado "other-package":

<packages>
<package
 id="example-package"
 name="Example Package"
 revision="1"
 reboot="false"
 priority="0">

 <include
  package-id="other-package" />

 ...

En este ejemplo, al incluir el "other-package", se instalará este último si también se instala "example-package".