Red Hat Training

A Red Hat training course is available for RHEL 8

5.2.4. Semántica

El uso de Boolean dependencies no cambia la semántica de las relaciones regulares.

Si se utiliza Boolean dependencies, al comprobar una coincidencia se comprueban todos los nombres y el valor booleano de que haya una coincidencia se agrega sobre los operadores booleanos.

Importante

Para todas las dependencias, a excepción de Conflicts:, el resultado debe ser True para no impedir la instalación. Para Conflicts:, el resultado debe ser False para no impedir la instalación.

Aviso

Provides no son relaciones y no pueden contener expresiones booleanas.

5.2.4.1. Comprender la salida del operador if

El operador if también devuelve un valor booleano, que suele acercarse a lo que se entiende intuitivamente. Sin embargo, los siguientes ejemplos muestran que en algunos casos la comprensión intuitiva de if puede ser engañosa.

Ejemplo 5.3. Salidas erróneas del operador if

Esta sentencia es verdadera si pkgB no está instalado. Sin embargo, si esta declaración se utiliza cuando el resultado por defecto es falso, las cosas se complican:

Requiere: (pkgA si pkgB)

Esta declaración es un conflicto a menos que pkgB esté instalado y pkgA no:

Conflictos: (pkgA si pkgB)

Así que es mejor que uses:

Conflictos: (pkgA y pkgB)

Lo mismo ocurre si el operador if está anidado en términos de or:

Requiere: ((pkgA si pkgB) o pkgC o pkg)

Esto también hace que el término completo sea verdadero, porque el término if es verdadero si pkgB no está instalado. Si pkgA sólo ayuda si pkgB está instalado, utilice and en su lugar:

Requiere: ((pkgA y pkgB) o pkgC o pkg)