Actualizarea pachetelor cu compozitor și știind ce să actualizez
On februarie 10, 2021 by adminAbia încep să lucrez cu Drupal 8 și compozitor și încerc să aflu cum se face actualizarea fluxul de lucru ar trebui să funcționeze. Știu noțiunile de bază de la administrarea unui server Drupal 7 de ani de zile, dar partea Composer mă împiedică.
În acest moment rulez, din folderul rădăcină al instalării mele Drupal, (cu modul de întreținere activat) composer outdated
și primesc o listă cu o grămadă de pachete care au nevoie de o actualizare.
Din câte îmi dau seama din documentație, ar trebui să actualizez numai pachetele care încep cu „drupal /”. Presupunând că doar consola și nucleul apar ca fiind învechite, rulez composer update drupal/console drupal/core --with-dependencies
și asta trage în jos actualizările și își face treaba. După ce se termină acest lucru, dacă rulez din nou composer outdated
, văd în continuare o grămadă de pachete care sunt învechite conform compozitorului. Se intenționează asta? Sau ar trebui actualizate aceste pachete?
Bănuiesc că Drupal este construit folosind versiuni specifice de pachete, așa că actualizarea tuturor acestora ar rupe probabil unele lucruri, nu-i așa? actualizate și care ar trebui să rămână la o anumită versiune?
Aceasta este ceea ce primesc când rulez composer outdated
.
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.
Aceasta este o instalare Drupal destul de vanilată. Am doar câteva module adăugate și o temă. Probabil ar trebui să menționez, de asemenea, că acest site a fost construit folosind șablonul drupal-composer menționat în documentele oficiale ( https://github.com/drupal-composer/drupal-project ).
Comentarii
Răspuns
Sincer, pentru o bază de cod precum site-ul dvs. tipic Drupal, acesta este un problemă greu de rezolvat. Luați, de exemplu, baza mea de cod Drupal VM Prod , pe care tocmai l-am actualizat de la nucleul Drupal 8.4.5 la 8.5.0 ieri:
- Constrângerea mea de versiune de bază / drupal în composer.json este
~8.4
- Executarea
composer update drupal/core --with-dependencies
nu a fost actualizată Nucleul Drupal; a fost blocat la 8.4.5 - Rularea
composer update
(mai multe opțiuni nucleare – va actualiza totul, inclusiv modulele contrib și orice alte dependențe, care ar putea provoca probleme și ar putea face mult mai dificilă testarea actualizărilor individuale pe un site complex!) A funcționat pentru actualizarea nucleului Drupal … dar asta nu este ideal.
Așa că am întrebat despre asta în numărul compozitor nu a reușit să facă upgrade de la 8.4.4 la 8.5.0-alpha1 și chiar a încercat să afle care dependență îmi bloca actualizarea de bază Drupal folosind Comandă compozitor:
composer prohibits drupal/core:8.5.0
Aceasta enumeră o mulțime de componente symfony diferite … așa că aș putea să stau acolo și să py-lipit fiecare dintre cele 14 componente în comanda mea composer update
, dar asta nu este amuzant de făcut, așa că am continuat să scotocesc (fără rezultat).
Mai târziu în firul de comentarii, @eiriksm a menționat că, din moment ce proiectul meu are symfony/config
(o dependență de consola drush și drupal), trebuia să rulez composer update drupal/core symfony/config --with-dependencies
.
Încă nu am nicio idee despre cum aș fi putut „afla că am nevoie doar să adaug symfony/config
în comanda de actualizare (comparativ cu adăugarea tuturor celorlalte symfony componente) … dar dacă o fac, voi încerca să actualizez acest răspuns cu acele informații, astfel încât alții să poată beneficia în viitor!
Comentarii
- De asemenea, am scris o postare pe blog pe acest subiect, cu ceva mai multe informații: Actualizarea drupal / core cu Composer – dar nucleul Drupal nu ‘ t update
Răspuns
Actualizarea versiunilor minore (8.3> 8.4, 8.4> 8.5) cu compozitor este un coșmar.
Am ajuns la concluzia că poate composer update
ar trebui „îmbrățișat” și că ar trebui să gestionăm cu atenție versiunile modulelor în composer.json
probabil blocându-le pe toate la versiunile instalate curent, apoi schimbând versiunea numai atunci când doriți să actualizați modulul. Nu este o afacere atât de mare de făcut.
Așa am făcut-o înainte de compozitor. Am decis ce modul să actualizăm unul câte unul, nu dintr-o dată, cu drush up modulename
sau orice altceva.
Aceasta ar putea însemna instalarea modulelor cu numere de versiune specifice este o idee bună:
composer require "drupal/address:1.0"
nu aceasta
composer require "drupal/address:~1.0"
Puteți schimba oricând "~1.0"
în "1.0"
mai târziu în composer.json
, dar dacă instalați un anumit număr de versiune, nu veți avea nevoie.
Comentarii
- Actualizarea versiunilor minore (8.3 > 8.4, 8.4 > 8.5) cu compozitor este un coșmar. I ‘ Am făcut aproximativ 10 8.4 – > 8.5 actualizări în ultima săptămână, toate prin intermediul compozitorului, toate la fel de simple ca rularea
composer update
, nu am probleme cu oricare dintre ele. Nu ‘ nu sunt sigur ce combinație de lucruri îi face pe oameni să se lupte cu asta, nu am ‘ t a lovit o singură problemă cu Drupal / Composer încă - @Clive dacă doar doriți să actualizați Drupal Core, un Nu toate dependențele core, contrib și toate celelalte dependențe și nu ‘ nu blocați o versiune specifică pentru orice alt lucru în afară de Core …
composer update
poate avea foarte multe consecințe neintenționate. Pentru multe site-uri, este de obicei suficient de sigur pentru a actualiza totul tot timpul, dar pentru unii poate fi un dezastru. Încercați întotdeauna înainte de a merge la producție!
composer show --tree
va afișa arborele dependenței, navigarea care vă poate ajuta să determinați ce necesită pachetele care trebuie actualizate și informați o decizie. De asemenea, s-ar putea să găsiți github.com/webflo/drupal-core-strict util, remediază dependențele de bază la versiunile bune cunoscute, care vă pot ajuta să actualizați cu mai multă încrederecomposer update
și mă bazez pe fișierul composer.json pentru a menține pachetele compatibile (la cel puțin cu nucleul)? Și apoi, dacă lucrurile se întrerup pe dev în timpul unei actualizări, parcurg fiecare actualizare a pachetului și aflu ce ‘ cauzează problema. Se pare că are sens.