Actualiza Drupal y sus módulos con Composer
drupal9

Actualizar Drupal y sus módulos con Composer

Esta es la manera recomendada por Drupal.org para actualizar el core del CMS como sus módulos y temas contribuidos.

Actualizar el core de Drupal:

  • Correr
    composer outdated "drupal/*"
    para ver las actualizaciones disponibles, y verificamos si hay actualizaciones disponibles para el core.
  • Luego corremos el comando que actualizara Drupal a la última versión de Drupal que tenemos, (por ejemplo actulizará de la 9.0.5 > 9.0.11 pero no actualizará a 9.1.x o a 10.0.x):
    composer update "drupal/core-*" --with-all-dependencies
  • Es recomendable usar el módulo Upgrade Status  cuando tengamos una actualización hacia una major versión por ejemplo de Drupal 9 a Drupal 10.
    • Este módulo nos dará un listado de todo lo que debemos modificar, para poder actualizar Drupal.
    • Después de tener todo listo y antes de actualizar el core por composer debemos desinstalar Upgrade Status, desde Drupal y quitarlo por composer con:
    • composer remove drupal/upgrade_status
  • Alternativamente si por alguna razón quisiéramos actualizar a una versión específica de Drupal sería de la siguiente manera:
    1. Ej. Versión 9.3.6 (esto fijara la versión de Drupal en nuestro proyecto):
    2. composer require drupal/core-recommended:9.3.6 drupal/core-composer-scaffold:9.3.6 drupal/core-project-message:9.3.6 --update-with-all-dependencies
    3. Si hemos fijado una versión y ya no queremos que esté fija y queremos actualizar el core corremos
      composer require drupal/core-recommended drupal/core-composer-scaffold drupal/core-project-message --update-with-all-dependencies
  • Actualizar la base de datos y limpiar caché (más rápido y eficiente por drush pero también se puede hacer por la interface de Drupal) :
    1. drush updatedb -y 
      (con el parametro "-y" ya nos nos preguntara si queremos actualizar la base de datos)
    2. drush cache:rebuild
    3. Esto sería en ambiente local si pasamos la actualización a otros ambientes  y/o producción:
      1. Hacer pull en el server y luego correr:
      2. composer install (recomiendan composer install --no-dev para ambientes de producción)
      3. Actualizar base de datos (updatedb o update.php).
      4. Limpiar caché.

Notas:

  • Se asume que el proyecto se creo siguiendo lo recomendado en drupal.org, para verificar esto correr: 
    composer show drupal/core-recommended

    Si devuelve información del proyecto y sus dependecias se está usando la manera recomendada, si nos da un mensaje de "Package drupal/core-recommended not found" no estamos usando nuestro proyecto de la forma recomendada, y para actualizar deberemos seguir otras instrucciones aquí

  • Para el core, si no nos dejara actualizar podemos correr para ver que está frenando la actualización composer prohibits ej.
    composer prohibits drupal/core 9.4.0
  • Debemos actualizar esas dependencias junto al core ej.
    composer update drupal/core "symfony/*" --with-dependencies

     

  • En un proyecto por ejemplo encontré una dependencia que estaba fija (en el composer.json) y no dejaba actualizar el core:
    • "symfony/var-dumper": "v5.3.9", al no tener el símbolo ^ le dice a composer que solo queremos usar esa versión.
    • Se cambió por  "symfony/var-dumper": "^v5.3.9", en el composer.json y se pudo actualizar.

 

Actualizar módulos (módulos y temas contribuidos):

  • Ver que esta desactualizado, composer marcará de diferente color las minor-version updates y los major-version upgrades, adicionalmente si queremos ver actualizaciones de seguridad debemos correr:
    drush pm:security
     
    1. composer outdated "drupal/*"

       

  • Actualizar módulo, para más de 1 módulo dejar un espacio, ej. drupal/module drupal/other_module
    1. composer update drupal/module --with-all-dependencies

       

    2. Esto funciona para actualizaciones entre las mismas versiones de módulos minor-version updates (minor-version updates ej. module_1.2.0 a module_1.3.1) pero no para cambios de major-version upgrade (major-version upgrade ej. module_1.3.0 a module_2.0.0) para eso se usará el composer require y nos recomiendan visitar las página de los módulos y revisar la documentación ya que las major-version updates tiene cambios significativos que podrían afectar nuestro proyecto.
      1. composer require drupal/module:^2.0

         

  • Después de hacer update o upgrade a el/los módulo/s debemos actualizar la base de datos y limpiar caché (recomendado correr estos comando por drush pero también se puede hacer por la interface de Drupal) :
    1. drush updatedb -y

       

    2. drush cache:rebuild

       

    3. drush config:export --diff 
      1. Esto último es recomendado por drupal.org para exportar los cambios potenciales en la configuración y revisarlos via --diff: que creo seria recomendado pero opcional.
    4. Para quitar un módulo de composer (debe haber sido desinstalado por interface de Drupal o por drush previamente) luego corremos:
      1. composer remove drupal/module

         

 

Me pareció interesante el artículo

Deseo más información

O también puedes comunicarte con nosotros.

por whatsapp por whatsapp

Añadir nuevo comentario

Me gustaría más información sobre:

CAPTCHA