Resolución de dependencia de módulo

Los flujo de módulos son paquetes RPM que proporcionan alternativas al contenido predeterminado que está presente en un repositorio RPM. Los flujos de módulo contienen paquetes RPM que pueden tener el mismo nombre que los paquetes RPM no modulares del contenido predeterminado de un repositorio RPM. Para ser capaz de entregar el contenido correcto a su sistema se necesitan introducir unos pocos cambios en el algoritmo de resolución de dependencia dentro de las librerías y herramientas DNF.

+

+

En el par de párrafos siguientes intentaremos explicar como DNF está procesando las solicitudes para habilitar, instalar y cambiar los flujos de módulo. El primer ejemplo siguiente representa el estado de un repositorio RPM en un sistema nuevo. Nada se ha instalado desde el repositorio RPM. El repositorio RPM es un repositorio RPM modular que contiene dos flujos de módulo perl:5.24 y perl:5.32. También contiene algunos paquetes no modulares perl, perl-VSP, foo y bar.

Los siguientes ejemplos son más bien una descripción de alto nivel de como la modularidad funciona por dentro. Para instrucción específica de como usar los flujos de módulo con DNF vea la sección Usar módulos.

Ejemplo 1. estado básico de un repositorio modular

no modular perl:5.24 perl:5.32
perl-1-f36.rpm perl-2-module_524.rpm perl-3-module_532.rpm
perl-Fedora-VSP-1-f36.rpm perl-Fedora-VSP-2-module_524.rpm perl-Fedora-VSP-1-module_532.rpm
foo-1-f36.rpm foo-1-module_524.rpm bar-2-module_532.rpm
bar-1-f36.rpm

No disponible, no puede ser instalado
Disponible, no habilitado
Disponible puede ser instalado
instalado

El código de color ilustra el estado del software contenido y como lo ve DNF. Todo el contenido no modular está disponible para su instalación desde que se haya obtenido como es usual. Todo el contenido que está disponible para instalación está codificado en color verde. También todo el contenido verde está incluido en una transacción de resolución de dependencia DNF y creación de conjunto de contenidos durante la instalación. Los flujos de módulo no están disponibles para instalar puesto que necesitan ser habilitados primero. El contenido que está disponible pero no habilitado está codificado en color amarillo. El contenido amarillo no se considera para las transacciones de resolución de dependencia DNF y creación de conjunto de contenido. Si el contenido está en un estado donde no puede ser instalado está codificado en color rojo. El contenido rojo tampoco se considera para las transacciones de resolución de dependencia DNF y creación de conjunto de contenido. Cualquier contenido instalado está codificado en colo azul.

Habilitar un flujo de módulo

Ejemplo 2. estado del repositorio RPM cuando el flujo 5.24 está habilitado

no modular perl:5.24 perl:5.32
perl-1-f36.rpm perl-2-module_524.rpm perl-3-module_532.rpm
perl-Fedora-VSP-1-f36.rpm perl-Fedora-VSP-2-module_524.rpm perl-Fedora-VSP-1-module_532.rpm
foo-1-f36.rpm foo-1-module_524.rpm bar-2-module_532.rpm
bar-1-f36.rpm

No disponible, no puede ser instalado
Disponible, no habilitado
Disponible puede ser instalado
instalado

Un flujo de módulo necesita estar habilitado antes de que pueda ser instalado. En el ejemplo dos hemos habilitado el flujo de módulo perl:5.24. Todos los paquetes proporcionados por el flujo 5.24 están ahora disponibles para instalar.

Si intentamos instalar el paquete perl la transacción DNF incluirá el paquete del flujo 5.24. Los paquetes no modulares serán filtrados por modular filtering durante la creación del conjunto de contenido. Los paquetes no modulares y el archivo RPM NEVRAs no son considerados para la instalación.

Si hay un paquete no modular con el mismo nombre que un paquete de un flujo de módulo habilitado, este paquete no modular es filtrado para los propósitos de la instalación por modular filtering. El filtrado modular garantiza que se eligen los paquetes correctos para la creación del conjunto de contenido DNF y para la siguiente instalación en su sistema.

El único paquete que no está incluido en el flujo 5.24, pero es también un paquete no modular en el repositorio, es el paquete bar. El paquete bar puede todavía ser instalado como normal ya que la habilitación de 5.24 no le afecta y no es parte del flujo 5.24.

Cada vez que usted elige añadir un flujo de módulo a su repositorio RPM puede ser usado para reemplazar los paquetes no modulares existentes cuando se habilite e instale. Verifique siempre si su flujo de módulo no romperá las dependencias de su otro software instalado, después de la habilitación y la instalación de sus flujos de módulo.

El flujo 5.32 está todavía disponible para su habilitación, pero solo un flujo del módulo llamado perl puede ser habilitado a la vez en un sistema. Para ser capaz de habilitar el flujo 5.32 debemos, primero, restablecer y eliminar la instalación del flujo 5.24` y todos sus paquetes.

Instalar un flujo de módulo

Ejemplo 3. estado del repositorio RPM cuando todos los paquetes disponibles están instalados

no modular perl:5.24 perl:5.32
perl-1-f36.rpm perl-2-module_524.rpm perl-3-module_532.rpm
perl-Fedora-VSP-1-f36.rpm perl-Fedora-VSP-2-module_524.rpm perl-Fedora-VSP-1-module_532.rpm
foo-1-f36.rpm foo-1-module_524.rpm bar-2-module_532.rpm
bar-1-f36.rpm

No disponible, no puede ser instalado
Disponible, no habilitado
Disponible puede ser instalado
instalado

Cuando un flujo de módulo está habilitado usted puede instalar todos los paquetes que están incluidos en los flujos de módulo habilitados. También puede instalar todos los paquetes no modulares que tengan un nombre de paquete diferente a los incluidos en el flujo de módulo. Todos los demás paquetes no modulares son filtrados por el filtrado modular. Los archivos RPM del flujo de módulo pueden tener diferente NEVRAS (más nuevo o más antiguo) que los archivos RPM no modulares. Esto es por lo que necesitamos el filtrado modular para asegurar que solo los NEVRAs correctos de archivo RPM sean usado para definir cual es el último contenido para el propósito de actualizar el software instalado.

Cambiar un flujo de módulo

Ejemplo 4. estado del repositorio RPM cuando se cambia al flujo 5.32

non-modular perl:5.24 perl:5.32
perl-1-f36.rpm perl-2-module_524.rpm perl-3-module_532.rpm
perl-Fedora-VSP-1-f36.rpm perl-Fedora-VSP-2-module_524.rpm perl-Fedora-VSP-1-module_532.rpm
foo-1-f36.rpm foo-1-module_524.rpm bar-2-module_532.rpm
bar-1-f36.rpm

No disponible, no puede ser instalado
Disponible, no habilitado
Disponible puede ser instalado
instalado

Antes de que usted pueda habilitar otro flujo de módulo desde el mismo módulo, primero tenemos que restablecer la secuencia de módulo ya habilitada y eliminarla. En nuestra situación en el Ejemplo 3 hemos habilitado e instalado el flujo 5.24 del módulo perl. Para habilitar e instalar el flujo 5.32 primero necesitamos desinstalar todos los paquetes de 5.24 y restablecerlo.

El restablecimiento del flujo asegura que el estado del flujo de módulo en la base de datos DNF se actualiza. Solo después del restablecimiento de un flujo de módulo, se puede habilitar e instalar un nuevo flujo.

Elimine siempre todos los paquetes instalados de un flujo de módulo antes de restablecerlo. Es posible restablecer un flujo de módulo sin eliminar los paquetes RPM viejos. El problema es que cuando habilite un nuevo flujo de módulo y lo instale, el nuevo flujo de módulo intentará actualizar/degradar los paquetes RPM instalados que existan. Esto no deseable y puede originar problemas de dependencias rotas. Más sobre esto en la sección Usando Módulos.