Je suppose que vous utilisez drupal-composer / drupal-project comme base de votre projet. Sinon, jetez un œil à ce projet et comparez-le avec le vôtre.
De plus, vous avez dit que vous vouliez utiliser composer pour gérer les dépendances de Drupal 8, donc je suppose que vous avez sélectionné vos modules contrib via composer require drupal/devel
plutôt que drush dl devel
.
Si vous faites toutes ces choses, vous devez utiliser composer update
pour mettre à jour le noyau Drupal et tous vos modules contrib. Tant que vous conservez votre composer.lock
fichier, composer install
vous ne devez modifier la version d'aucune de vos dépendances. Vous ne devriez pas utiliser drush pm-update
du tout. Peu importe que les fichiers du core
répertoire soient mis à jour ou non, car ce répertoire est géré par Composer. Il vaut mieux ne pas engager de répertoires gérés par le compositeur dans votre référentiel, bien que vous puissiez le faire si vous le souhaitez.
Bien sûr, vous devez exécuter drush updatedb
chaque fois que composer update
remplace le noyau Drupal ou tout module.
Pour éviter d'obtenir des versions de développement, définissez votre stabilité minimale sur «beta» dans votre fichier composer.json à l' aide des indicateurs de stabilité de Composer .
Si vous utilisez drupal-composer / drupal-project pour gérer votre site, tous les fichiers de niveau racine tels que README.txt, .htaccess et index.html deviennent la propriété de votre projet. Cela signifie que vous devez les archiver dans votre référentiel git; Composer ne les mettra pas à jour, vous devez les mettre à jour vous-même lorsqu'ils changent. Ces fichiers ne devraient changer que rarement, mais drupal-composer / drupal-project dispose d'un script pour mettre à jour ces fichiers .
greg_1_anderson
la source
drush updatedb
chaque fois que la mise à jour du compositeur remplace le noyau Drupal ou tout module." - merci et si vous aviez initialement installé drupal avec ces étapes, drupal.org/node/2471553 alors vous avez besoin du chemin complet vers le drush particulier avec votre installation Drupal 8 (car ils exécutaient l'installation en tant qu'étape finale). Vous devez d'abord cd dans le web et une fois dans / web la commande pour mettre à jour la base de données avec le chemin complet serait donc:../vendor/drush/drush/drush updatedb
(j'ai trouvé que cela fonctionnait).Ce qui suit est OK pour les versions de patch 8.4.x> 8.4.y , mais pas OK pour les versions mineures 8.4.x> 8.5.x . Passez à la MISE À JOUR 3 ci-dessous pour ce que je crois être "la réponse" aux mises à jour mineures des versions.
1- Sauvegardez tous les fichiers fournis avec Drupal que vous avez modifiés, tels que .htaccess, robots.txt, etc. (ces 2 sont les plus souvent modifiés).
2- [On m'a dit que supprimer le fichier de verrouillage est incorrect, voir MISE À JOUR ci-dessous]
Supprimer le fichier composer.lock (dans le dossier de niveau supérieur de votre site). Cela est recréé à l'étape 5.3- Vérifiez votre composer.json (dans le dossier de niveau supérieur de votre site) et assurez-vous que le "drupal: core" est dans la section require et non dans une section replace, par exemple
ne pas
Si "drupal / core" se trouve dans la section de remplacement, déplacez-le dans la section requise et supprimez la section de remplacement. S'il y a d'autres entrées dans la section de remplacement, supprimez simplement "drupal / core" et non la totalité de la section replace - mais je pense que "drupal / core" est normalement la seule chose là-bas.
Mettez la version à mettre à jour dans "drupal / core", exemples:
"drupal / core": "^ 8.5" - sera mis à jour vers la dernière version de 8.5. "drupal / core": "8.4.6" - sera mis à jour vers la version 8.4.6.
5- Exécutez ceci (dans le dossier de niveau supérieur de votre site):
6- S'il n'y a pas d'erreur, faites comme d'habitude, exécutez les mises à jour et videz le cache:
Ou si vous n'utilisez pas drush, accédez à /update.php pour exécuter les mises à jour, puis à admin / config / development / performance et appuyez sur le bouton "Effacer tous les caches".
7- Si vous aviez sauvegardé des fichiers dans la première étape (.htaccess, robots.txt), remettez-les en place. Mais vérifiez si Drupal a mis à jour ces fichiers et ajoutez ces modifications aux vôtres.
TERMINÉ
S'il y a eu des erreurs avec la mise à jour du composeur à l'étape 5, cela est généralement dû à des problèmes avec les versions des éléments dans le dossier du fournisseur.
C'est un excellent article sur ces problèmes: https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update et lisez les 2 autres articles de Jeff sur Drupal et Composer pour obtenir plus de connaissances à ce sujet.
Deux personnes m'ont dit sur Twitter que composer.lock ne devait pas être supprimé (étape 2 ci-dessus). La
composer update drupal/core --with-dependencies
commande recrée de toute façon le fichier de verrouillage.En testant cette méthode, je trouve que cela fonctionne bien pour 8.4.3> 8.4.6 (par exemple) mais j'obtiens des erreurs pour 8.4.6> 8.5.x. Je ferai rapport quand je le découvrirai.
Exemple d'erreurs:
Cet article de Jeff Geerling traite de problèmes similaires, mais jusqu'à présent, pas de chance pour moi: https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update
Donc ... la seule chose qui semble fonctionner pour moi pour 8.4.x> 8.5.x est "l'option nucléaire" que tant d'autres semblent utiliser, qui est exécutée
composer update
.Je suppose que c'est OK tant que vous êtes sûr des versions du module dans composer.json. Peut-être que l'on devrait les verrouiller dans la version actuelle. Par exemple:
plutôt que:
Mais est-ce la bonne réponse?
OK la réponse qui semble être partout est de faire "l'option nucléaire":
A. Supprimez le
/vendor
dossier.B. Exécutez
composer update
et mettez simplement à jour vos modules avec le noyau. Ou, verrouillez les versions du modulecomposer.json
si vous ne souhaitez pas les mettre à jour.Une personne sur Drupal Slack a déclaré que "toute la philosophie de Composer est que vous devriez toujours mettre à jour les packages, aussi souvent que possible" . Packaged comprend des modules je pense. Donc, cela a du sens, je suppose.
Une fois que je suis passé de 8.4.6 à 8.5.0, cela a bien fonctionné pour passer de 8.5.0 à 8.5.1
composer update drupal/core --with-dependencies
tout comme pour 8.4.3 à 8.4.6.Je commence à conclure que "la réponse" est que la suppression du dossier du fournisseur et du fichier composer.lock, puis l'utilisation
composer update
est très bien, et que l'on doit simplement s'assurer que les numéros de version des dépendances dans le fichier composer.json sont ce que vous voulez . Ce n'est pas si grave de gérer les versions de modules que vous souhaitez conserver ou autoriser à mettre à jourcomposer.json
.Par exemple:
"drupal/admin_toolbar": "1.18",
signifie rester avec 1,18"drupal/admin_toolbar": "^1.18",
signifie aller de l'avant et mettre à jour mais dans 1.x (pas 2.x)Ceci est soutenu par un commentaire (Général Redneck) sur ce post: https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update "L'une des choses que j'ai trouvé que je travaille dans le support est que le verrouillage des versions des modules et du noyau est une bonne idée afin que vous puissiez thermonuke la chose quand vous le souhaitez car il y a des moments où certains des différents plugins ne veulent même pas se comporter correctement. "
Soit dit en passant, le fichier composer.lock n'est d'aucune aide
composer update
car il est emporté (par opposition à l'composer install
endroit où il verrouille le fichier est lu):Courir
composer install
:composer.lock
existecomposer update
pour en créer uncomposer.lock
existe, installez les versions spécifiées à partir du fichier de verrouillageCourir
composer update
:composer.json
composer.lock
à jour pour refléter les dernières versions installéesRéf: https://www.engineyard.com/blog/composer-its-all-about-the-lock-file
Je vois que cela est mentionné ci-dessus: https://github.com/drupal-composer/drupal-project . Je l'ai utilisé et c'est bien mais ce n'est pas une condition pour utiliser Composer avec Drupal. C'est déroutant car cela "sonne" comme si cela venait du nom. Quand j'ai commencé avec Drupal 8, je pensais que c'était nécessaire, alors j'ai construit mon premier site D8 avec cela, pensant que c'était la meilleure pratique.
Cette "version" de Drupal a sa docroot dans un dossier / web, pas dans le dossier supérieur du projet. Il y a aussi un tas de choses ajoutées à .gitignore par rapport à Drupal normal:
Ainsi, cette version de Drupal est vraiment plus destinée aux sites qui utilisent l'intégration continue pour faire une nouvelle version de Drupal à chaque déploiement, en utilisant l'installation de composer. Si vous déployez avec une méthode plus normale, vous devez évidemment valider toutes les choses ci-dessus dans votre dépôt git ou il ne sera pas déployé sur votre serveur [1], et toutes ces choses sont nécessaires pour que Drupal s'exécute.
[1] si git est impliqué dans votre déploiement - si vous déployez avec SFTP, ignorez cela.
la source
composer update drupal/core symfony/config webflo/drupal-core-strict --with-dependencies
ne m'a jamais encore échoué. Fonctionne sur plusieurs versions mineures, par exemple 8.3 -> 8.6En utilisant le package drupal / core sur packagist.org, nous pouvons réellement gérer le core, les modules contrib (, thèmes et profils) et les autres fournisseurs via composer.
J'ai installé les fichiers suivants dans mon répertoire racine et exécuté
composer install
composer.json
post_install.sh
Prendre plaisir :)
la source
Oui, vous pouvez gérer Drupal core avec composer. Il y a cependant deux choses à savoir.
Vous obtiendrez probablement des délais d'attente en raison d'un certain nombre d'éléments que le compositeur doit exécuter, surtout si vous exécutez sur une machine virtuelle locale. Si vous exécutez,
composer install
vous obtiendrez probablement l'erreur de composition:Assurez-vous d'utiliser
Ajoutez également une extension au délai d'expiration dans la configuration
De plus, si cela ne fonctionne pas, vous pouvez exécuter l'installation de composer depuis l'extérieur SSH dans votre machine virtuelle .
Cela contournera tous les délais d'attente de partage NFS et décompressera Drupal au bon endroit.
la source
"drupal / core": "~ 8.0-beta14" signifie toute version supérieure à 8.0-beta14 et inférieure à 9! Vous souhaiterez supprimer le tilde pour le verrouiller sur une version spécifique. Assurez-vous ensuite de mettre à jour votre fichier de verrouillage en exécutant Composer, et sur le système cible, utilisez Installer Composer.
Un moyen simple de commencer est de créer la base de code à l'aide de https://github.com/drupal-composer/drupal-project .
Lorsque nous devons mettre à jour quelque chose comme la mise à niveau du noyau, vous exécutez "composer up" localement. Cela mettra à jour le fichier composer.lock.
Lorsque d'autres développeurs tirent vers le bas, ou dans un script de déploiement, vous exécutez "installer le compositeur", qui utilise le fichier de verrouillage.
La ligne dans notre composer.json pour le noyau Drupal est:
Le tilde () signifie toute version dans le nombre 8 (mais pas 9) .
Si vous souhaitez le verrouiller sur une version spécifique, vous ne devez pas utiliser le tilde.
exécutez ensuite "composer up" localement, validez les fichiers composer.json et composer.lock, puis exécutez "composer install" sur d'autres installations après avoir déroulé la base de code.
la source