Con Drupal 8 llegó la estandarización de composer como gestor de dependencias para nuestros proyectos. Esto supuso modificar algunos procesos para adaptarlos a esta nueva gestión de dependencias, como puede ser la instalación de módulos o actualizaciones del Core.
En este caso vamos a hablar de la actualización de componentes y más concretamente como el comando “composer prohibits” nos puede ayudar en algunas ocasiones en las que estas no salen bien. Aunque aquí pondremos como ejemplo a Drupal 8, esta explicación es extrapolable a cualquier proyecto gestionado con composer.
Pongamos como ejemplo que tenemos un proyecto Drupal con la versión de Core 8.5 y queremos actualizar a Drupal 8.6. Lo que tendríamos que ejecutar sería lo siguiente:
composer update drupal/core --with-dependencies
Al ejecutarlo, composer actualizará las dependencias y paquetes necesarios, pero al acabar puede ocurrir que drupal/core siga en su versión 8.5.x. En este caso, muchos recurren a la fuerza bruta para forzar la actualización: composer update. Esto puede traernos muchos dolores de cabeza, ya que actualizará tanto Drupal core como módulos.
Es en este momento donde el comando “composer prohibits” puede ayudarnos. Para comprobar porque no se está actualizando correctamente Drupal core, lanzaremos lo siguiente:
composer prohibits drupal/core:8.6.2
Esto hará que composer compruebe que paquete está impidiendo la actualización a Drupal 8.6.2. El resultado será algo parecido a lo siguiente (para este ejemplo; podría tratarse de cualquier otro paquete):
webflo/drupal-core-require-dev 8.5.8 requires drupal/core (8.5.8)
En este caso nos está diciendo que el paquete “webflo/drupal-core-require-dev” necesita la versión 8.5.8 del core y está impidiendo que este se actualice. Para solventar este problema, debemos incluir la actualización de este paquete junto a la del core:
composer update drupal/core webflo/drupal-core-require-dev --with-dependencies
Ahora composer actualizará este paquete conjuntamente con el core y ya tendremos actualizado el proyecto.
Este comando también se puede utilizar para comprobar si, por ejemplo, queremos subir la versión de algún requisito de sistema, como puede ser php:
composer prohibits php:7.2
En este caso nos dirá que paquetes no son compatibles con la nueva versión de php.
Como hemos dicho anteriormente, esta solución no es exclusiva para Drupal, si no que es aplicable a cualquier proyecto que utilice composer para su gestión de dependencias.
Referencias:
Agregar nuevo comentario