Pakettien päivittäminen säveltäjän kanssa ja tieto päivitettävistä
On helmikuu 10, 2021 by adminOlen vasta aloittamassa työskentelyä Drupal 8: n ja säveltäjän kanssa ja yritän selvittää, miten päivitys työnkulun pitäisi toimia. Tiedän perustiedot Drupal 7 -palvelimen hallinnoinnista vuosien ajan, mutta Composer-osa kaataa minut.
Juoksen juuri nyt Drupal-asennuksen juurikansiosta (kun ylläpitotila on käytössä) composer outdated
ja saan luettelon joukosta päivityksiä tarvitsevia paketteja.
Sallikaa minun päivittää vain paketteja, jotka alkavat ”drupal /”. Olettaen, että vain konsoli ja ydin ovat vanhentuneita, suoritan composer update drupal/console drupal/core --with-dependencies
, ja se vetää päivitykset alas ja tekee asian. Kun tämä on tehty, jos suoritan composer outdated
uudelleen, näen silti joukon paketteja, jotka ovat vanhentuneet säveltäjän mukaan. Onko se tarkoitettu? Vai pitäisikö nämä paketit päivittää?
Oletan, että Drupal on rakennettu pakettien tietyillä versioilla, joten niiden kaikkien päivittäminen todennäköisesti rikkoa jotain, eikö? Kuinka jonkun pitäisi tietää, mitä paketteja pitäisi olla päivitetyt ja joiden tulisi pysyä tietyssä versiossa?
Tämän saan, kun suoritan 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.
Tämä on melko vaniljainen Drupal-asennus. Minulla on vain muutama moduuli lisätty ja yksi teema. Minun on todennäköisesti mainittava myös, että tämä sivusto rakennettiin käyttäen virallisissa dokumenteissa mainittua drupal-composer-mallia ( https://github.com/drupal-composer/drupal-project ).
Kommentit
Vastaa
Rehellisesti, tyypillisen Drupal-sivuston kaltaiselle koodipohjalle tämä on vaikea ongelma ratkaista. Otetaan esimerkiksi Drupal VM Prod -kooditietokanta, jonka päivitin juuri eilen Drupal core 8.4.5: stä 8.5.0: iin:
- Drupal / core version -rajoitukseni composer.jsonissa on
~8.4
-
composer update drupal/core --with-dependencies
ei päivitetty Drupal-ydin; se oli jumissa kohdassa 8.4.5 - Käynnissä
composer update
(enemmän ydinvaihtoehdosta – se päivittää kaiken, mukaan lukien avustavat moduulit ja muut riippuvuudet, mikä voi aiheuttaa ongelmia ja vaikeuttaa yksittäisten päivitysten testaamista monimutkaisella sivustolla!) toimi Drupal-ytimen päivittämiseksi … mutta se ei ole ihanteellinen.
Joten kysyin siitä julkaisussa säveltäjä epäonnistui päivittämisestä 8.4.4: stä 8.5.0-alfa1: een ja yritti jopa selvittää, mikä riippuvuus estää Drupal-ytimen päivityksen käyttämällä Säveltäjän komento:
composer prohibits drupal/core:8.5.0
Tässä lueteltiin joukko erilaisia symfoniakomponentteja … joten voisin ”istua siellä ja yhdessä py-liittänyt kaikki 14 komponenttia composer update
-komentooni, mutta se ei ole hauskaa tehdä, joten jatkoin tunkeutumista (turhaan).
Myöhemmin kommenttiketjussa @eiriksm mainitsi, että koska projektissani on symfony/config
(riippuvainen drush- ja drupal-konsolista), minun täytyi suorittaa composer update drupal/core symfony/config --with-dependencies
.
Minulla ei vieläkään ole aavistustakaan, kuinka voisin ”huomata, että minun tarvitsee vain lisätä symfony/config
päivityskomentoon (vs. lisäämällä kaikki muut symfony komponentit) … mutta jos teen, yritän päivittää tämän vastauksen tietoihin, jotta muut voivat hyötyä tulevaisuudessa!
Kommentit
- Kirjoitin myös blogikirjoituksen tästä aiheesta, jossa hieman lisätietoja: Drupal / core päivitetään Composerilla – mutta Drupal core ei ’ t päivitys
vastaus
Päivitetään pienempiä versioita (8.3> 8.4, 8.4> 8.5) säveltäjän kanssa on painajainen.
Olen tulossa siihen tulokseen, että ehkä composer update
tulisi ”omaksua” ja että moduuliversioita tulisi hallita huolellisesti kohdassa composer.json
ehkä lukitsemalla ne kaikki tällä hetkellä asennettuihin versioihin ja muuttamalla sitten versiota vain, kun haluat päivittää moduulin. Se ei todellakaan ole niin iso juttu.
Näin teimme sen ennen säveltäjää. Päätimme päivitettävän moduulin yksitellen, ei kerralla, nimellä drush up modulename
tai mitä tahansa.
Tämä voi tarkoittaa, että moduulien asentaminen tietyillä versionumeroilla on hyvä idea:
composer require "drupal/address:1.0"
ei tämä
composer require "drupal/address:~1.0"
Voit aina muuttaa "~1.0"
arvoksi "1.0"
myöhemmin kohdassa composer.json
, mutta jos asennat tietyn versionumeron, sinun ei tarvitse.
Kommentit
- Pienversioiden päivittäminen (8.3 > 8.4, 8.4 > 8.5) säveltäjän kanssa on painajainen. I ’ olet tehnyt noin 10 8.4 – > 8.5 päivitystä viime viikolla, kaikki säveltäjän kautta, kaikki yhtä yksinkertaisia kuin
composer update
, ei ongelmia minkään niistä kanssa. En ’ ole varma, mikä asioiden yhdistelmä saa ihmiset kamppailemaan tämän kanssa, en ole ’ t osui vielä yhteen ongelmaan Drupal / Composerilla - @Clive, jos vain haluat päivittää Drupal Core -palvelun d ei kaikkia ytimiä, avustajia ja kaikkia muita riippuvuuksia, ja et ’ et lukitse tiettyä versiota kaikille muille ytimen lisäksi …
composer update
voi olla hyvin monia tahattomia seurauksia. Monille sivustoille on yleensä tarpeeksi turvallista päivittää kaikki koko ajan, mutta joillekin se voi olla katastrofi. Testaa aina ennen tuotantoon menoa!
composer show --tree
näyttää riippuvuuspuun, selaamisen, joka voi auttaa sinua selvittämään, mitä päivitettäviä paketteja tarvitaan ja ilmoittaa päätöksestä. Saatat myös löytää github.com/webflo/drupal-core-strict hyödyllinen, se korjaa ydinriippuvuudet tiedossa oleviin hyviin versioihin, mikä saattaa auttaa sinua päivittämään entistä varmemmincomposer update
-komentoa ja luottaa composer.json-tiedostoon pitämään paketit yhteensopivina ( ainakin ytimen kanssa)? Ja sitten, jos sisältö rikkoutuu dev-päivityksessä päivityksen aikana, käyn vain läpi jokaisen pakettipäivityksen ja saan selville, mikä ’ aiheuttaa ongelman. Vaikuttaa järkevältä.