Aktualisieren von Paketen mit Composer und Wissen, was
On Februar 10, 2021 by adminaktualisiert werden soll Ich fange gerade an, mit Drupal 8 und Composer zu arbeiten, und ich versuche herauszufinden, wie die Aktualisierung erfolgt Workflow sollte funktionieren. Ich kenne die Grundlagen aus der jahrelangen Verwaltung eines Drupal 7-Servers, aber der Composer-Teil löst mich aus.
Im Moment starte ich aus dem Stammordner meiner Drupal-Installation (mit aktiviertem Wartungsmodus) composer outdated
und ich erhalte eine Liste einiger Pakete, die aktualisiert werden müssen.
Soweit ich aus der Dokumentation ersehen kann, sollte ich nur die Pakete aktualisieren, die mit beginnen „drupal /“. Angenommen, nur die Konsole und der Kern sind veraltet, dann führe ich composer update drupal/console drupal/core --with-dependencies
aus, und das ruft die Updates herunter und macht seine Sache. Wenn ich danach composer outdated
erneut ausführe, werden immer noch einige Pakete angezeigt, die laut Composer veraltet sind. Ist das beabsichtigt? Oder sollten diese Pakete aktualisiert werden?
Ich vermute, Drupal wurde mit bestimmten Versionen von Paketen erstellt, sodass das Aktualisieren aller Pakete wahrscheinlich einige Probleme verursachen würde, oder? Wie soll jemand wissen, welche Pakete sein sollten? aktualisiert und welche sollten in einer bestimmten Version bleiben?
Dies wird angezeigt, wenn ich composer outdated
ausführe.
alchemy/zippy 0.4.3 0.4.8 Zippy, the archive manager companion composer/installers v1.4.0 v1.5.0 A multi-framework Composer library installer consolidation/annotated-command 2.8.1 2.8.2 Initialize Symfony Console commands from annotated command class methods. consolidation/output-formatters 3.1.12 3.1.13 Format text by applying transformations provided by plug-in formatters. cweagans/composer-patches 1.6.2 1.6.4 Provides a way to patch Composer packages. dflydev/dot-access-data v1.1.0 v2.0.0 Given a deep data structure, access data by dot notation. drupal/php 1.0.0-beta1 1.0.0-beta2 Allows embedded PHP code/snippets to be evaluated. Enabling this can cause security and performance issues as it allows users to execute PHP code on your site. egulias/email-validator 1.2.14 2.1.3 A library for validating emails fabpot/goutte v3.2.1 v3.2.2 A simple PHP Web Scraper gabordemooij/redbean v4.3.4 v5.0 RedBeanPHP ORM jcalderonzumba/gastonjs v1.0.3 v1.2.0 PhantomJS API based server for webpage automation phpdocumentor/reflection-docblock 2.0.5 4.2.0 phpspec/prophecy v1.7.2 1.7.3 Highly opinionated mocking framework for PHP 5.3+ phpunit/php-code-coverage 2.2.4 5.3.0 Library that provides collection, processing, and rendering functionality for PHP code coverage information. phpunit/php-file-iterator 1.4.2 1.4.5 FilterIterator implementation that filters files based on a list of suffixes. phpunit/php-token-stream 1.4.11 2.0.2 Wrapper around PHP"s tokenizer extension. phpunit/phpunit 4.8.36 6.5.5 The PHP Unit Testing framework. phpunit/phpunit-mock-objects 2.3.8 5.0.6 Mock Object library for PHPUnit sebastian/comparator 1.2.4 2.1.1 Provides the functionality to compare PHP values for equality sebastian/diff 1.4.3 2.0.1 Diff implementation sebastian/environment 1.3.8 3.1.0 Provides functionality to handle HHVM/PHP environments sebastian/exporter 1.2.2 3.1.0 Provides the functionality to export PHP variables for visualization sebastian/global-state 1.1.1 2.0.0 Snapshotting of global state sebastian/recursion-context 1.0.5 3.0.0 Provides functionality to recursively process PHP variables sebastian/version 1.0.6 2.0.1 Library that helps with managing the version number of Git-hosted PHP projects symfony-cmf/routing 1.4.1 2.0.3 Extends the Symfony2 routing component for dynamic routes and chaining several routers symfony/browser-kit v3.3.10 v4.0.3 Symfony BrowserKit Component symfony/class-loader v3.2.14 v3.4.3 Symfony ClassLoader Component symfony/config v3.2.14 v4.0.3 Symfony Config Component symfony/console v3.2.14 v4.0.3 Symfony Console Component symfony/css-selector v3.3.10 v4.0.3 Symfony CssSelector Component symfony/debug v3.4.3 v4.0.3 Symfony Debug Component symfony/dependency-injection v3.2.14 v4.0.3 Symfony DependencyInjection Component symfony/dom-crawler v3.4.3 v4.0.3 Symfony DomCrawler Component symfony/event-dispatcher v3.2.14 v4.0.3 Symfony EventDispatcher Component symfony/expression-language v3.4.3 v4.0.3 Symfony ExpressionLanguage Component symfony/filesystem v3.4.3 v4.0.3 Symfony Filesystem Component symfony/finder v3.4.3 v4.0.3 Symfony Finder Component symfony/http-foundation v3.2.14 v4.0.3 Symfony HttpFoundation Component symfony/http-kernel v3.2.14 v4.0.3 Symfony HttpKernel Component symfony/process v3.2.14 v4.0.3 Symfony Process Component symfony/routing v3.2.14 v4.0.3 Symfony Routing Component symfony/serializer v3.2.14 v4.0.3 Symfony Serializer Component symfony/translation v3.2.14 v4.0.3 Symfony Translation Component symfony/validator v3.2.14 v4.0.3 Symfony Validator Component symfony/var-dumper v3.4.3 v4.0.3 Symfony mechanism for exploring and dumping PHP variables symfony/yaml v3.2.14 v4.0.3 Symfony Yaml Component twig/twig v1.35.0 v2.4.4 Twig, the flexible, fast, and secure template language for PHP webflo/drupal-finder 1.0.0 1.1.0 Helper class to locate a Drupal installation from a given path.
Dies ist eine ziemlich vanillefarbene Drupal-Installation. Ich habe nur ein paar Module und ein Thema hinzugefügt. Ich sollte wahrscheinlich auch erwähnen, dass diese Site mit der in den offiziellen Dokumenten erwähnten Drupal-Composer-Vorlage erstellt wurde ( https://github.com/drupal-composer/drupal-project ).
Kommentare
- Es ist schwierig zu sagen, was aktualisiert werden soll, ohne zu wissen, was Sie installiert haben.
composer show --tree
zeigt den Abhängigkeitsbaum an und durchsucht ihn, um festzustellen, welche Pakete aktualisiert werden müssen und informieren Sie eine Entscheidung. Möglicherweise finden Sie auch github.com/webflo/drupal-core-strict nützlich, es behebt Kernabhängigkeiten zu bekannten guten Versionen, die Ihnen helfen können, mit mehr Vertrauen zu aktualisieren - Von meinem begrenzten Erfahrung: ‚ ist in Ordnung, einige veraltete Pakete zu haben, da Drupal normalerweise Sicherheitshinweise veröffentlicht, wenn eine ihrer Kernabhängigkeiten ein Problem aufweist. Bisher hatte ich aber auch kein Problem mit dem Aktualisieren, ohne mich auf Drupal / Core zu beschränken … Symfony-Pakete machten nie Probleme mit dem Composer-Update, aber das kann ich definitiv NICHT von Drupal-Modulen sagen!
- @Hudri, Ich ‚ schätze, ich kann einfach den generischen Befehl
composer update
verwenden und mich auf die Datei composer.json verlassen, um die Pakete kompatibel zu halten (at am wenigsten mit dem Kern)? Und wenn während eines Updates Probleme mit dev auftreten, gehe ich einfach jedes Paket-Update durch und finde heraus, was ‚ das Problem verursacht. Scheint sinnvoll zu sein.
Antwort
Ehrlich gesagt, für eine Codebasis wie Ihre typische Drupal-Site ist dies eine schwer zu lösendes Problem. Nehmen Sie zum Beispiel meine Drupal VM Prod -Codebasis, die ich gestern von Drupal Core 8.4.5 auf 8.5.0 aktualisiert habe:
- Meine Einschränkung für die Drupal- / Core-Version in composer.json lautet
~8.4
- Das Ausführen von
composer update drupal/core --with-dependencies
wurde nicht aktualisiert Drupal-Kern; es steckte bei 8.4.5 fest. -
composer update
ausführen (mehr von der nuklearen Option – es wird alles aktualisiert, einschließlich Contrib-Module und anderer Abhängigkeiten). Das könnte Probleme verursachen und das Testen einzelner Updates auf einer komplexen Site erheblich erschweren!) hat daran gearbeitet, den Drupal-Kern zu aktualisieren … aber das ist nicht ideal.
Also habe ich danach gefragt In der Ausgabe konnte der Composer kein Upgrade von 8.4.4 auf 8.5.0-alpha1 durchführen und versuchte sogar herauszufinden, welche Abhängigkeit mein Drupal-Core-Upgrade mithilfe von blockierte Composer-Befehl:
composer prohibits drupal/core:8.5.0
Dies listete eine Menge verschiedener Symfony-Komponenten auf … damit ich dort sitzen und co py-fügte jede der 14 Komponenten in meinen composer update
-Befehl ein, aber das macht keinen Spaß, also stöberte ich weiter (ohne Erfolg).
Später im Kommentarthread erwähnte @eiriksm, dass ich composer update drupal/core symfony/config --with-dependencies
ausführen musste, da mein Projekt symfony/config
(eine Abhängigkeit von Drush und Drupal-Konsole) hat div>.
Ich habe immer noch keine Ahnung, wie ich herausfinden könnte, dass ich nur symfony/config
in den Update-Befehl einfügen muss (im Gegensatz zum Hinzufügen aller anderen Symfony) Komponenten) … aber wenn ich das tue, werde ich versuchen, diese Antwort mit diesen Informationen zu aktualisieren, damit andere in Zukunft davon profitieren können!
Kommentare
- Ich habe auch einen Blog-Beitrag zu diesem Thema geschrieben, mit ein wenig mehr Infos: Drupal / Core mit Composer aktualisieren – Drupal Core jedoch nicht ‚ t update
Antwort
Aktualisierung kleinerer Versionen (8.3> 8.4, 8.4> 8.5) mit Komponisten ist ein Albtraum.
Ich komme zu dem Schluss, dass vielleicht composer update
„angenommen“ werden sollte und dass man Modulversionen in composer.json
sperrt sie möglicherweise alle auf die aktuell installierten Versionen und ändert die Version dann nur, wenn Sie das Modul aktualisieren möchten. Das ist wirklich keine so große Sache.
Genau so haben wir es vor dem Komponisten gemacht. Wir haben entschieden, welches Modul einzeln und nicht alle gleichzeitig mit drush up modulename
oder was auch immer aktualisiert werden soll.
Dies kann bedeuten, dass die Installation von Modulen mit bestimmten Versionsnummern eine gute Idee ist:
composer require "drupal/address:1.0"
nicht diese
composer require "drupal/address:~1.0"
Sie können "~1.0"
später in composer.json
ändern , aber wenn Sie eine bestimmte Versionsnummer installieren, müssen Sie dies nicht tun.
Kommentare
- Aktualisieren kleinerer Versionen (8.3 > 8.4, 8.4 > 8.5) mit Komponisten ist ein Albtraum. I ‚ habe in der letzten Woche ungefähr 10 8.4 – > 8.5-Updates durchgeführt, alles über Composer, alles so einfach wie das Ausführen von
composer update
Ich ‚ bin mir nicht sicher, welche Kombination von Dingen die Leute dazu bringt, damit zu kämpfen. Ich habe ‚ t traf ein einziges Problem mit Drupal / Composer noch - @Clive, wenn Sie nur Drupal Core aktualisieren möchten d nicht alle Core-, Contrib- und alle anderen Abhängigkeiten, und Sie ‚ sperren nicht eine bestimmte Version für alle anderen Dinge außer Core …
composer update
kann sehr viele unbeabsichtigte Folgen haben. Für viele Websites ist es normalerweise sicher genug, um ständig alles zu aktualisieren, für einige kann es jedoch eine Katastrophe sein. Testen Sie immer, bevor Sie zur Produktion gehen!
Schreibe einen Kommentar