Aggiornamento del core tramite Composer
Questa documentazione è incompleta. Aggiungi ulteriori informazioni.
Problemi nell’aggiornamento a Drupal 8.8.0 o versioni successive?
Modifiche importanti sono state introdotte in Drupal 8.8.0 nell’ambito dell’iniziativa Composer, che migliora notevolmente la gestione a lungo termine dei siti Drupal tramite Composer. Tuttavia, ci sono alcune considerazioni particolari da tenere a mente quando si esegue l’aggiornamento da versioni precedenti.
Primi passi
Per comprendere come Composer gestisce le dipendenze di Drupal, consulta la pagina Utilizzare Composer con Drupal. Per capire se Composer è il metodo più adatto al tuo aggiornamento, confronta le varie opzioni disponibili.
Per comodità , queste istruzioni includono anche i comandi Drush necessari per completare l’aggiornamento: molti utenti trovano Drush più rapido e semplice rispetto al pannello di amministrazione web.
Se si tratta di un sito Drupal esistente che non ha mai utilizzato Composer, assicurati prima che sia configurato per funzionare con Composer.
Aggiornare il core di Drupal 8
Per prima cosa, verifica se è disponibile un aggiornamento del core Drupal:
composer update --dry-run "drupal/*"
Questo comando mostra eventuali aggiornamenti minori o di patch disponibili. Se non appare alcuna riga che inizi con drupal/core, significa che Composer non rileva aggiornamenti. Se è presente drupal/core-recommended, prendi nota. Se è disponibile un aggiornamento, procedi con i comandi seguenti.
Aggiornamento in un solo passaggio
Se hai familiarità con gli aggiornamenti di Drupal e conosci le precauzioni da adottare, l’aggiornamento è semplice come:
composer update drupal/core --with-dependencies drush updatedb drush cache:rebuild
Sostituisci drupal/core con drupal/core-recommended se il tuo sito utilizza quest’ultimo pacchetto, come indicato nel tuo composer.json o nei risultati di composer update --dry-run.
Se il tuo sito è stato originariamente creato con drupal-composer/drupal-project, il comando sopra potrebbe non funzionare. Consulta l’elenco seguente.
Per aggiornare a Drupal 8.8.0 o versioni successive
La versione più recente di drupal-composer/drupal-project è compatibile con Drupal 8.8.x. Tuttavia, se il tuo sito è stato creato con versioni più vecchie (2019 o precedenti), potrebbero essere necessari alcuni interventi una tantum per il primo aggiornamento a 8.8.0 o versioni successive. Questi sono descritti nelle note speciali più avanti.
Se non hai installato Drupal 8 con Composer
Se il tuo sito Drupal non è stato installato con Composer, devi convertirlo in un progetto gestito da Composer per poter utilizzare i comandi indicati. Consulta Aggiungere Composer ai siti esistenti per una guida passo passo.
Istruzioni passo-passo per l’aggiornamento
Procedura completa per aggiornare il core di Drupal 8 con Composer:
1. Esegui sempre un backup dei file e del database prima dell’aggiornamento.
drush sql:dump
effettua l’esportazione del database.drush archive-dump
è stato rimosso da Drush 9, quindi usa un normale strumento CLI per salvare i file (escludendo solitamente la cartella vendor).
2. Leggi le note di rilascio ufficiali. Alcuni moduli o temi potrebbero richiedere aggiornamenti per funzionare con la nuova versione minore di Drupal. Gli aggiornamenti di patch non dovrebbero richiederli.
3. Attiva la modalitĂ manutenzione impostando system.maintenance_mode 1 e ricostruisci la cache.
4. Se alcuni moduli o temi necessitano di aggiornamento, segui le istruzioni per aggiornare i moduli.
5. Aggiorna il core di Drupal e le sue dipendenze:
composer update drupal/core --with-dependencies
Sostituisci drupal/core con drupal/core-recommended se utilizzi il pacchetto raccomandato. Se hai avviato il tuo sito con drupal-composer/drupal-project, consulta le note seguenti per eventuali passaggi aggiuntivi.
6. Applica gli aggiornamenti del database con drush updatedb
e ricostruisci la cache con drush cache:rebuild
.
7. Se utilizzi la gestione della configurazione, esporta la configurazione aggiornata con drush config:export --diff
per visualizzare le modifiche introdotte dal nuovo core.
8. Verifica che il sito funzioni correttamente:
- Controlla la pagina del rapporto sullo stato per eventuali errori.
- Se il modulo Database Logging è attivo, esegui alcune operazioni e controlla i log per errori o avvisi.
9. Disattiva la modalitĂ manutenzione con drush state:set system.maintenance_mode 0
e ricostruisci la cache.
10. Dopo aver riattivato il sito, testalo anche come utente anonimo.
In ambiente di produzione
- Non è necessario ripetere l’intero processo:
composer install
installerĂ le versioni precise definite in composer.lock. - Su server separati (dev/staging/production), assicurati di copiare composer.json e composer.lock e usa
composer install --no-dev
in produzione. L’opzione --no-dev evita l’installazione di pacchetti di debug o test.
Note speciali per l’aggiornamento a Drupal 8.8.0+
Il partner ufficiale PreviousNext ha pubblicato un utile articolo sui passaggi per l’aggiornamento da Drupal 8.7 a 8.8.0 beta, che può aiutare chi riscontra problemi simili.
Il principale motivo di problemi durante l’aggiornamento a Drupal 8.8.0 è la transizione dal vecchio template community-based al nuovo template ufficiale drupal/recommended-project. I seguenti passaggi aiutano a risolvere la migrazione e a utilizzare le istruzioni standard di aggiornamento descritte sopra.
Rimuovere la cartella /vendor
Eliminare la cartella vendor può risolvere conflitti durante l’aggiornamento Composer:
cd your_install_dir rm -rf vendor
Migrazione da webflo/drupal-core-strict a drupal/core-recommended
Prima di Drupal 8.8.0, molti siti utilizzavano webflo/drupal-core-strict per vincolare le versioni delle dipendenze (es. pacchetti Symfony). Dalla 8.8.0 in poi, è stato introdotto drupal/core-recommended. Il passaggio non è automatico e il vecchio pacchetto non funziona più con 8.8.0.
Il modo più semplice per migrare senza conflitti è eliminare composer.lock e reinstallare. Esegui:
composer update
git add composer.lock; git commit
composer remove webflo/drupal-core-strict --no-update
composer remove drupal/core --no-update
composer require 'composer/installers:^1.7' --no-update
rm composer.lock
rm -rf vendor
composer require drupal/core-recommended:^8.8 --update-with-dependencies
git add composer.json composer.lock; git commit -m "Aggiornamento a Drupal 8.8.0 e passaggio a drupal/core-recommended"
Migrazione da webflo/drupal-core-require-dev a drupal/core-dev
Se il tuo sito utilizza webflo/drupal-core-require-dev per le dipendenze di sviluppo, sostituiscilo con drupal/core-dev.
composer remove --dev webflo/drupal-core-require-dev composer require --dev drupal/core-dev
Aggiornare le patch
Se utilizzi cweagans/composer-patches, potresti dover rigenerare le patch e aggiornare la sezione extra/patches del tuo composer.json.
Aggiornare dipendenze in conflitto
Se esistono dipendenze non compatibili con la nuova versione di Drupal, specifica le versioni corrette con composer require e poi rimuovile. Esempio:
composer require --update-with-dependencies \ drupal/core:^8.8.0 \ symfony/finder:^3.4 \ symfony/filesystem:^3.4 composer require --dev --update-with-dependencies \ drupal/core-dev:^8.8.0 \ symfony/debug:^3.4 composer remove -n symfony/finder symfony/filesystem composer remove -n --dev symfony/debug
Aggiornare configurazioni e schema database
drush updb drush cr drush config-export
Aggiornare settings.php
Da Drupal 8.8.0, la directory di sincronizzazione è definita in $settings invece che in $config_directories.
$config_directories['sync'] = 'foo/bar';
diventa
$settings['config_sync_directory'] = 'foo/bar';
Problemi noti e soluzioni alternative
Se composer update non aggiorna drupal/core, una dipendenza potrebbe bloccare l’aggiornamento. Usa:
composer prohibits drupal/core:8.5.0
per identificare i pacchetti in conflitto. Aggiornali insieme a drupal/core con:
composer update drupal/core "symfony/*" --with-dependencies
Molti problemi con Composer derivano da vecchi template o configurazioni errate in composer.json. Assicurati di usare un modello aggiornato come indicato nella Guida ufficiale di Drupal.
Dal gennaio 2020 il template drupal-composer/drupal-project non è più consigliato per Drupal 8.8 e versioni successive. Consulta la guida comunitaria per iniziare un sito con i nuovi template Composer.
Ulteriori risorse utili:
- Aggiornare a Drupal 8.4.0 e Drush 9 con Composer
- Aggiornamento a Drupal core 8.4: guida passo passo
- Aggiornamento a Drupal 8.5 con Composer
- Problema: Composer non aggiorna da 8.4.4 a 8.5.0-alpha1
- Problemi con l’aggiornamento di Drupal 8? Guida pratica con GoComposer
In caso di errori o avvisi durante l’aggiornamento, leggili con attenzione e cerca soluzioni nella coda delle issue prima di proseguire. In caso di errori fatali, interrompi il processo e riparti dal backup eseguito in precedenza.