Ich gehe davon aus, dass Sie Drupal-Composer / Drupal-Project als Basis für Ihr Projekt verwenden. Wenn nicht, schauen Sie sich das Projekt an und vergleichen Sie es mit Ihrem.
Außerdem haben Sie gesagt, dass Sie Composer zum Verwalten von Drupal 8-Abhängigkeiten verwenden möchten. Ich gehe also davon aus, dass Sie Ihre Contrib-Module über ausgewählt haben composer require drupal/devel
und nicht über drush dl devel
.
Wenn Sie all diese Dinge tun, sollten Sie verwenden composer update
, um den Drupal-Kern und alle Ihre Contrib-Module zu aktualisieren. Solange Sie Ihre composer.lock
Datei behalten , composer install
sollten Sie die Version Ihrer Abhängigkeiten nicht ändern. Sie sollten überhaupt nicht verwenden drush pm-update
. Es sollte Ihnen egal sein, ob Dateien im core
Verzeichnis aktualisiert werden oder nicht, da dieses Verzeichnis von Composer verwaltet wird. Sie sollten keine von Composer verwalteten Verzeichnisse in Ihrem Repository festschreiben, obwohl Sie dies auf Wunsch tun können.
Natürlich sollten Sie drush updatedb
immer dann laufen, wenn Sie den composer update
Drupal-Kern oder ein beliebiges Modul ersetzen.
Um zu vermeiden, dass Entwicklungsversionen abgerufen werden, setzen Sie Ihre Mindeststabilität in der Datei composer.json mithilfe von Composer-Stabilitätsflags auf "beta" .
Wenn Sie Ihre Site mit drupal-composer / drupal-project verwalten, werden alle Stammdateien wie README.txt, .htaccess und index.html Eigentum Ihres Projekts. Das bedeutet, dass Sie sie in Ihr Git-Repository einchecken sollten. Composer aktualisiert sie nicht. Sie müssen sie selbst aktualisieren, wenn sie sich ändern. Diese Dateien sollten sich nur selten ändern, aber Drupal-Composer / Drupal-Project verfügt über ein Skript zum Aktualisieren dieser Dateien .
drush updatedb
immer dann ausführen, wenn das Composer-Update den Drupal-Kern oder ein beliebiges Modul ersetzt." - Vielen Dank. Wenn Sie Drupal ursprünglich mit diesen Schritten installiert haben, benötigen Sie den vollständigen Pfad zu dem jeweiligen Problem mit Ihrer Drupal 8-Installation (da diese die Installation als letzten Schritt ausgeführt hat). Sie müssen zuerst in das Web cd und einmal in / web den Befehl zum Aktualisieren der Datenbank mit dem vollständigen Pfad wäre daher:../vendor/drush/drush/drush updatedb
(Ich fand dies funktioniert).Im Folgenden ist OK für Patch - Versionen 8.4.x> 8.4.y , aber nicht OK für kleinere Releases 8.4.x> 8.5.x . Wechseln Sie zu UPDATE 3 , um die Antwort auf kleinere Release-Updates zu finden.
1- Sichern Sie alle Dateien, die mit Drupal geliefert werden und die Sie geändert haben, z. B. .htaccess, robots.txt usw. (die beiden am häufigsten geänderten).
2- [Mir wurde mitgeteilt, dass das Löschen der Sperrdatei falsch ist, siehe UPDATE unten]
Löschen Sie die Datei composer.lock (im obersten Ordner Ihrer Site). Dies wird in Schritt 5 neu erstellt.3- Überprüfen Sie Ihre composer.json (im obersten Ordner Ihrer Site) und stellen Sie sicher, dass sich "drupal: core" im Bereich require und nicht in einem Ersetzungsbereich befindet
nicht
Wenn sich "Drupal / Core" im Ersetzungsabschnitt befindet, verschieben Sie es in den erforderlichen Abschnitt und löschen Sie den Ersetzungsabschnitt. Wenn es andere Einträge im Ersetzungsabschnitt gibt, entfernen Sie einfach den "Drupal / Core", nicht den gesamten Ersetzungsabschnitt - aber ich denke, "Drupal / Core" ist normalerweise das einzige, was dort vorhanden ist.
Tragen Sie in "drupal / core" die Version ein, auf die Sie updaten möchten, Beispiele:
"drupal / core": "^ 8.5" - wird auf die neueste Version von 8.5 aktualisiert. "drupal / core": "8.4.6" - wird auf Version 8.4.6 aktualisiert.
5- Führen Sie dies aus (im obersten Ordner Ihrer Site):
6- Wenn keine Fehler aufgetreten sind, führen Sie die Updates wie gewohnt aus und leeren Sie den Cache:
Wenn Sie drush nicht verwenden, gehen Sie zu /update.php, um Updates auszuführen, dann zu admin / config / development / performance und klicken Sie auf die Schaltfläche "Alle Caches löschen".
7- Wenn Sie im ersten Schritt Dateien gesichert hatten (.htaccess, robots.txt), setzen Sie sie zurück. Überprüfen Sie jedoch, ob Drupal Aktualisierungen an diesen Dateien vorgenommen hat, und fügen Sie diese Änderungen zu Ihren hinzu.
ERLEDIGT
Wenn beim Composer-Update in Schritt 5 Fehler aufgetreten sind, liegt dies normalerweise an Problemen mit den Versionen des Materials im Herstellerordner.
Dies ist ein großartiger Beitrag im Umgang mit solchen Problemen: https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update und lies Jeffs andere 2 Beiträge auf Drupal und Composer, um sie zu erhalten mehr Wissen darüber.
Auf Twitter wurde mir von 2 Leuten gesagt, dass composer.lock nicht gelöscht werden soll (Schritt 2 oben). Der
composer update drupal/core --with-dependencies
Befehl erstellt die Sperrdatei trotzdem neu.Wenn ich diese Methode teste, finde ich, dass sie für 8.4.3> 8.4.6 (zum Beispiel) gut funktioniert, aber ich bekomme Fehler für 8.4.6> 8.5.x. Werde zurück berichten, wenn ich es herausgefunden habe.
Beispiel für Fehler:
Dieser Beitrag von Jeff Geerling befasst sich mit ähnlichen Problemen, aber bisher kein Glück für mich: https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update
Also ... das einzige, was für mich bei 8.4.x> 8.5.x zu funktionieren scheint, ist die "nukleare Option", die so viele andere zu nutzen scheinen und die ausgeführt wird
composer update
.Ich denke, das ist in Ordnung, solange Sie sich über die Modulversionen in composer.json sicher sind. Vielleicht sollte man sie auf die aktuelle Version beschränken. Beispielsweise:
eher, als:
Aber ist das die richtige Antwort?
OK, die Antwort, die überall zu sein scheint, ist die "nukleare Option":
A. Löschen Sie den
/vendor
Ordner.B. Führen
composer update
Sie die Module zusammen mit dem Core aus und aktualisieren Sie sie einfach. Oder sperren Sie die Modulversionen,composer.json
wenn Sie sie nicht aktualisieren möchten.Eine Person auf Drupal Slack sagte: "Die ganze Philosophie von Composer ist, dass Sie Pakete immer so häufig wie möglich aktualisieren sollten . " Paket beinhaltet Module, denke ich. Es macht also einen Sinn, denke ich.
Sobald ich von 8.4.6 auf 8.5.0 kam, funktionierte dies einwandfrei, um von 8.5.0 auf 8.5.1 zu kommen,
composer update drupal/core --with-dependencies
genauso wie es bei 8.4.3 auf 8.4.6 der Fall war.Ich fange an zu folgern, dass "die Antwort" darin besteht, dass das Löschen des Vendor-Ordners und der composer.lock-Datei und die anschließende Verwendung
composer update
in Ordnung sind und dass man einfach sicherstellen sollte, dass die Versionsnummern für Abhängigkeiten in der composer.json-Datei Ihren Wünschen entsprechen . Es ist keine große Sache, zu verwalten, welche Modulversionen Sie behalten oder ein Update zulassen möchtencomposer.json
.Beispielsweise:
"drupal/admin_toolbar": "1.18",
bedeutet bei 1.18 bleiben"drupal/admin_toolbar": "^1.18",
Also mach weiter und aktualisiere aber innerhalb von 1.x (nicht 2.x)Dies wird durch einen Kommentar (General Redneck) zu diesem Beitrag untermauert : https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update "Eines der Dinge, die ich habe Während ich im Support arbeite, ist es eine gute Idee, die Versionen der Module und des Kerns zu sperren, damit Sie das Ding thermonuken können, wenn Sie wollen, weil es Zeiten gibt, in denen sich einige der verschiedenen Plugins nicht richtig verhalten wollen. "
Übrigens ist die Datei composer.lock keine Hilfe,
composer update
da sie weggeblasen wird (im Gegensatz zucomposer install
dem Ort, an dem die Sperrdatei gelesen wird):Laufen
composer install
wird:composer.lock
vorhanden istcomposer update
zu erstellencomposer.lock
vorhanden, installieren Sie die angegebenen Versionen aus der SperrdateiLaufen
composer update
wird:composer.json
composer.lock
, um die neuesten installierten Versionen zu berücksichtigenRef: https://www.engineyard.com/blog/composer-its-all-about-the-lock-file
Ich sehe, dass dies oben erwähnt wird: https://github.com/drupal-composer/drupal-project . Ich habe das verwendet und es ist in Ordnung, aber es ist keine Voraussetzung für die Verwendung von Composer mit Drupal. Es ist verwirrend, da es sich so "anhört", als wäre es vom Namen. Als ich mit Drupal 8 anfing, dachte ich, es sei erforderlich, und baute meine erste D8-Site damit auf.
In dieser "Version" von Drupal befindet sich docroot in einem / web-Ordner, nicht im obersten Ordner des Projekts. Außerdem wurde .gitignore im Vergleich zu normalem Drupal einiges hinzugefügt:
Daher ist diese Version von Drupal eher für Sites gedacht, die eine kontinuierliche Integration verwenden, um bei jeder Bereitstellung mithilfe der Composer-Installation eine neue Drupal-Version zu erstellen. Wenn Sie mit einer normaleren Methode bereitstellen, müssen Sie natürlich alle oben genannten Dinge für Ihr Git-Repo festschreiben, oder es wird nicht auf Ihrem Server bereitgestellt [1], und diese Dinge werden alle benötigt, damit Drupal ausgeführt werden kann.
[1] Wenn Git an Ihrer Bereitstellung beteiligt ist - Wenn Sie mit SFTP bereitstellen, ignorieren Sie dies.
quelle
composer update drupal/core symfony/config webflo/drupal-core-strict --with-dependencies
hat mich noch nie im Stich gelassen. Funktioniert über mehrere Nebenversionen, zB 8.3 -> 8.6Mit dem Drupal / Core- Paket auf packagist.org können wir den Core, die Contrib-Module (, Themen und Profile) und die anderen Anbieter über Composer verwalten.
Ich habe die folgenden Dateien in meinem Stammverzeichnis eingerichtet und ausgeführt
composer install
composer.json
post_install.sh
Genießen :)
quelle
Ja, Sie können Drupal Core mit Composer verwalten. Es gibt jedoch ein paar Dinge zu beachten.
Wahrscheinlich treten Zeitüberschreitungen auf, die auf eine Reihe von Elementen zurückzuführen sind, die Composer ausführen muss, insbesondere, wenn Sie in einer lokalen VM ausgeführt werden. Wenn Sie ausführen
composer install
, wird wahrscheinlich der Composer-Fehler angezeigt:Stellen Sie sicher, dass Sie erforderlich verwenden
Fügen Sie dem Timeout in der Konfiguration auch eine Erweiterung hinzu
Wenn dies nicht funktioniert, können Sie die Composer-Installation auch von außerhalb von SSH in Ihrer VM ausführen .
Dies umgeht alle NFS-Freigabe-Timeouts und entpackt Drupal an der richtigen Stelle.
quelle
"drupal / core": "~ 8.0-beta14" bedeutet, dass alle Releases größer als 8.0-beta14 und kleiner als 9 sind! Sie möchten die Tilde entfernen, um sie für eine bestimmte Version zu sperren. Stellen Sie dann sicher, dass Sie Ihre Sperrdatei aktualisieren, indem Sie Composer ausführen, und verwenden Sie auf dem Zielsystem die Composer-Installation.
Ein einfacher Einstieg besteht darin, die Codebasis mit https://github.com/drupal-composer/drupal-project zu erstellen .
Wenn wir etwas wie das Aktualisieren des Kerns aktualisieren müssen, führen Sie "composer up" lokal aus. Dadurch wird die Datei composer.lock aktualisiert.
Wenn andere Entwickler herunterfahren oder ein Bereitstellungsskript ausführen, führen Sie "composer install" aus, das die Sperrdatei verwendet.
Die Zeile in unserem composer.json für Drupal-Core lautet:
Die Tilde () bedeutet jedes Release innerhalb der 8-Zahl (aber nicht 9) .
Wenn Sie es für eine bestimmte Version sperren möchten, sollten Sie die Tilde nicht verwenden.
Führen Sie dann "composer up" lokal aus, übertragen Sie die Dateien "composer.json" und "composer.lock" und führen Sie "composer install" in anderen Installationen aus, nachdem Sie die Codebasis heruntergezogen haben.
quelle