Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)

« Installer Drush avec composer pour Drupal 7 existant » : différence entre les versions

De AJLSM
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
 
(6 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
Depuis le passage à Ubuntu 18.04 LTS, il n'est plus possible d'installer directement drush pour gérer les mises à jour des modules et de Drupal 7 et 8.
[[category:Drush]][[category:Drupal]][[category:Ubuntu 18.04 LTS]][[category:Composer]]
Depuis le passage à '''Ubuntu 18.04 LTS''', il n'est plus possible d'installer directement drush pour gérer les mises à jour des modules et de Drupal 7 et 8.


Si l'on migre un projet Drupal 7 existant dans un OS Ubuntu 18.04 LTS, on ne peut plus récupérer Drush dans les paquets de Ubuntu.  
Si l'on migre un projet Drupal 7 existant dans un OS Ubuntu 18.04 LTS, on ne peut plus récupérer Drush dans les paquets de Ubuntu.  
Ligne 15 : Ligne 16 :


'''Le scénario :'''
'''Le scénario :'''
On a une instance de Drupal 7 dans un Ubuntu 18.04 LTS : {{path|/home/ajlsm/projet-du-client/drupals/internet}} et on veut mettre à jour les dépendance et le core avec drush.
On a une instance de Drupal 7 dans un Ubuntu 18.04 LTS : {{path|/home/ajlsm/projet-du-client/drupals/internet}} et on veut mettre à jour les dépendance et le core avec drush.


'''La solution :'''
'''La solution :'''


# Installer composer et drush (voir [[Installer Drush avec Composer]]) puis, créer un projet drupal-composer pour D7 (voir et adapter drupal-composer/drupal-project:7.x-dev [[Installer_Drupal_avec_Composer|Installer Drupal avec Composer]], par exemple {{path|/home/ajlsm/projet-du-client/drupals/internet-composer}}
# Installer composer et drush (voir [[Installer Drush avec Composer]]) (pour l'instant, Drush ne "voit pas" encore Drupal <ref>Après l'installation de Drush et de composer, essai de vidage des caches avec Drush dans le répertoire Drupal 7 existant. Echec. <syntaxhighlight lang="bash">drush cr
# Remplacer le répertoire {{path|/home/ajlsm/projet-du-client/drupals/internet-composer/web}} (où est installé le Drupal créé par composer) par le répertoire {{path|/home/ajlsm/projet-du-client/drupals/internet}}
 
# Modifier la conf apache selon le nouveau PATH
In BootstrapHook.php line 32:
                                                                     
  Bootstrap failed. Run your command with -vvv for more information.  </syntaxhighlight></ref>), puis, créer un projet drupal-composer pour D7 (voir et adapter [[Installer_Drupal_avec_Composer|Installer Drupal avec Composer]] <ref>Exemple de projet composer Drupal 7. La commande est lancée dans le répertoire parent du futur Drupal :
<syntaxhighlight lang="bash">php composer.phar create-project drupal-composer/drupal-project:7.x-dev internet-composer --no-interaction</syntaxhighlight></ref>), par exemple {{path|/home/ajlsm/projet-du-client/drupals/internet-composer}}
# Remplacer le répertoire {{path|/home/ajlsm/projet-du-client/drupals/internet-composer/web}} (où est installé le Drupal créé par composer) par le répertoire {{path|/home/ajlsm/projet-du-client/drupals/internet}} <ref>L'arborescence va ressembler à quelque chose comme ce qui suit. dans cet exemple, drupals/internet-drupal/web contient les dossiers/fichiers de "l'ancien" Drupal 7 : <syntaxhighlight lang="bash">drupals
├── composer.phar
└── internet-drupal
    ├── composer.json
    ├── composer.lock
    ├── drush
    ├── scripts
    ├── vendor
    ├── web</syntaxhighlight></ref>
# Modifier la conf apache selon le nouveau PATH <ref>Exemple de modification de la configuration apache2 : <syntaxhighlight lang="bash">### Drupal ###
  DocumentRoot  /home/ajlsm/drupals/internet-drupal/web
  <Directory "/home/ajlsm/drupals/internet-drupal/web">
    #AllowOverride None
  #Options None
  <IfModule mod_version.c>
    [...]
  </IfModule>
  </Directory>
</syntaxhighlight>
Relancer apache :
<syntaxhighlight lang="bash">sudo service apache2 restart</syntaxhighlight></ref>
# Vider les caches de Drupal avec drush en lançant la commande suivante depuis le répertoire où se trouve Drupal :
# Vider les caches de Drupal avec drush en lançant la commande suivante depuis le répertoire où se trouve Drupal :
<syntaxhighlight lang="bash">drush cc</syntaxhighlight>
<syntaxhighlight lang="bash">drush cc</syntaxhighlight>
Ligne 44 : Ligne 70 :


Il reste maintenant à lancer drush pour faire les mises à jour.
Il reste maintenant à lancer drush pour faire les mises à jour.
 
<syntaxhighlight lang="bash">drush up
This codebase is assembled with Composer instead of Drush. Use `composer update` and `composer require` instead of `drush pm-updatecode` and `drush pm-download`. You may override this error by using the --pm-force option. </syntaxhighlight>
La commande '''drush up''' ne fonctionne pas car le projet est ''construit'' avec composer.  
La commande '''drush up''' ne fonctionne pas car le projet est ''construit'' avec composer.  


De plus, on ne peut pas utiliser '''composer require''', ou '''composer update''', car le projet Drupal n'est pas construit pour fonctionner avec composer.
De plus, on ne peut pas utiliser '''composer require''', ou '''composer update''', car le projet Drupal n'est pas construit pour fonctionner avec composer.
{{important|Ne surtout pas essayer de faire un composer update ! }}
{{important|Ne surtout pas essayer de faire un composer update ! }}


<syntaxhighlight lang="bash">drush up
Il reste la solution proposée dans le message d'erreur : faire fonctionner Drush "à l'ancienne", en le forçant à faire les mises à jour avec la commande :
This codebase is assembled with Composer instead of Drush. Use `composer update` and `composer require` instead of `drush pm-updatecode` and `drush pm-download`. You may override this error by using the --pm-force option. </syntaxhighlight>
<syntaxhighlight lang="bash">drush up --pm-force</syntaxhighlight>
Si la commande fonctionne on obtient quelque chose comme :


On va donc faire fonctionner Drush "à l'ancienne", en le forçant à faire les mises à jour avec la commande :
<syntaxhighlight lang="bash">drush up --pm-force</syntaxhighlight>


Projet composer Drupal 7 :
== Références == <references/>
<syntaxhighlight lang="bash">php composer.phar create-project drupal-composer/drupal-project:7.x-dev some-dir --no-interaction</syntaxhighlight>
-------

Dernière version du 20 juin 2019 à 07:56

Depuis le passage à Ubuntu 18.04 LTS, il n'est plus possible d'installer directement drush pour gérer les mises à jour des modules et de Drupal 7 et 8.

Si l'on migre un projet Drupal 7 existant dans un OS Ubuntu 18.04 LTS, on ne peut plus récupérer Drush dans les paquets de Ubuntu.

Drupal.org ne maintient plus Drush depuis la version 8+.

Pour pouvoir gérer le core de Drupal et les dépendances, il faut maintenant installer composer.

Composer vient avec un grand nombre d'outils, dont Drush, qui est "embarqué" dans composer.

Pour continuer à gérer les dépendances avec drush, on va contourner "à l'arrache" les méthodes préconisées et expliquées dans les autres sections concernant composer et drush.


Important :
Attention, c'est une approche "toute pourrie". C'est juste pour permettre d'utiliser Drush avec Ubuntu 18,04 LTS. Les nouveaux projets doivent être créés et gérés entièrement avec composer.

Le scénario :

On a une instance de Drupal 7 dans un Ubuntu 18.04 LTS : /home/ajlsm/projet-du-client/drupals/internet et on veut mettre à jour les dépendance et le core avec drush.

La solution :

  1. Installer composer et drush (voir Installer Drush avec Composer) (pour l'instant, Drush ne "voit pas" encore Drupal <ref>Après l'installation de Drush et de composer, essai de vidage des caches avec Drush dans le répertoire Drupal 7 existant. Echec.
    drush cr
    
    In BootstrapHook.php line 32:
                                                                          
      Bootstrap failed. Run your command with -vvv for more information.
    
    </ref>), puis, créer un projet drupal-composer pour D7 (voir et adapter Installer Drupal avec Composer <ref>Exemple de projet composer Drupal 7. La commande est lancée dans le répertoire parent du futur Drupal :
php composer.phar create-project drupal-composer/drupal-project:7.x-dev internet-composer --no-interaction

</ref>), par exemple /home/ajlsm/projet-du-client/drupals/internet-composer

  1. Remplacer le répertoire /home/ajlsm/projet-du-client/drupals/internet-composer/web (où est installé le Drupal créé par composer) par le répertoire /home/ajlsm/projet-du-client/drupals/internet <ref>L'arborescence va ressembler à quelque chose comme ce qui suit. dans cet exemple, drupals/internet-drupal/web contient les dossiers/fichiers de "l'ancien" Drupal 7 :
    drupals
    ├── composer.phar
    └── internet-drupal
        ├── composer.json
        ├── composer.lock
        ├── drush
        ├── scripts
        ├── vendor
        ├── web
    
    </ref>
  2. Modifier la conf apache selon le nouveau PATH <ref>Exemple de modification de la configuration apache2 :
    ### Drupal ###
      DocumentRoot  /home/ajlsm/drupals/internet-drupal/web
      <Directory "/home/ajlsm/drupals/internet-drupal/web">
        #AllowOverride None
       #Options None
       <IfModule mod_version.c>
         [...]
       </IfModule>
      </Directory>
    

Relancer apache :

sudo service apache2 restart

</ref>

  1. Vider les caches de Drupal avec drush en lançant la commande suivante depuis le répertoire où se trouve Drupal :
drush cc

Maintenant, on a bien accès à l'ensemble des répertoires ainsi qu'à l'option "all".

Enter a number to choose which cache to clear.
 [0]   :  Cancel         
 [1]   :  drush          
 [2]   :  all            
 [3]   :  theme-registry 
 [4]   :  menu           
 [5]   :  css-js         
 [6]   :  block          
 [7]   :  module-list    
 [8]   :  theme-list     
 [9]   :  registry       
 [10]  :  libraries      
 [11]  :  metatag        
 [12]  :  token          
 [13]  :  views

Choisir le cache à vider. Ici, on choisit [2], ou all

Il reste maintenant à lancer drush pour faire les mises à jour.

drush up
This codebase is assembled with Composer instead of Drush. Use `composer update` and `composer require` instead of `drush pm-updatecode` and `drush pm-download`. You may override this error by using the --pm-force option.

La commande drush up ne fonctionne pas car le projet est construit avec composer.

De plus, on ne peut pas utiliser composer require, ou composer update, car le projet Drupal n'est pas construit pour fonctionner avec composer.

Important :
Ne surtout pas essayer de faire un composer update ! .

Il reste la solution proposée dans le message d'erreur : faire fonctionner Drush "à l'ancienne", en le forçant à faire les mises à jour avec la commande :

drush up --pm-force

Si la commande fonctionne on obtient quelque chose comme :


== Références == <references/>