Package dependencies:Spanish

From WPKG | Open Source Software Deployment and Distribution
Revision as of 11:58, 18 November 2010 by 80.34.248.228 (Talk)

Jump to: navigation, search

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" tanto, como Gimp necesita sus ficheros de ayuda. Como estos ficheros de ayuda pueden instalarse antes que el propio 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".

In general the best practice is that if some main package needs certain other packages (containing components, libraries, frameworks, ...) to be able to work, that main package should depend on the needed other packages. But if (maybe due to a company policy) the main package always needs to be extended with certain packages (help-files, clipart, ...), then you should chain the extending packages from the main package. Be ware that if you don't want certain application extensions to be installed always (for example firefox developer extensions), you should not chain them from the main package, but let them depend on the main package and then assign them individually to the profiles where needed.

Including a package

By using include you include a package to the list of packages as specified by the profile, meaning that if you install this package the included package will also be installed. This included package will be installed based on its priority. So if the included package has high priority it will be installed early during synchronization. If the included package has low priority it will be installed late. If you would like to enforce a certain installation order please consider to specify a dependency (see Depending on a package) !

The example used in Packages.xml has been modified to make it include another package called "other-package":

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

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

 ...

In this example the 'include' makes the "other-package" also install if the current package "example-package" is installed.