Aktualizuji balíčky pomocí skladatele a vím, co aktualizovat
On 10 února, 2021 by adminZačínám pracovat s Drupal 8 a skladatelem a snažím se přijít na to, jak aktualizace pracovní postup by měl fungovat. Znám základy administrace serveru Drupal 7 po celá léta, ale část Composer mě zakopává.
Právě teď běžím z kořenové složky mé instalace Drupalu (s povoleným režimem údržby) composer outdated
a dostanu seznam spousty balíčků, které potřebují aktualizaci.
Pokud vím z dokumentace, měl bych aktualizovat pouze balíčky, které začínají „drupal /“. Za předpokladu, že konzole a jádro budou zastaralé, spustím composer update drupal/console drupal/core --with-dependencies
a to stáhne aktualizace a udělá to. Poté, co znovu spustím composer outdated
, stále vidím spoustu balíčků, které jsou podle skladatele zastaralé. Je to zamýšleno? Nebo by tyto balíčky měly být aktualizovány?
Myslím, že Drupal je postaven na konkrétních verzích balíčků, takže aktualizace všech by pravděpodobně rozbila nějaké věci, že? Jak má někdo vědět, jaké balíčky by měly být aktualizováno a které z nich by měly zůstat v konkrétní verzi?
To je to, co dostanu, když spustím 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.
Toto je docela vanilková instalace Drupalu. Mám přidáno pouze několik modulů a jedno téma. Pravděpodobně bych měl také zmínit, že tento web byl vytvořen pomocí šablony drupal-composer uvedené v oficiálních dokumentech ( https://github.com/drupal-composer/drupal-project ).
Komentáře
Odpověď
Upřímně řečeno, pro kódovou základnu, jako je váš typický web Drupalu, se jedná o těžký problém vyřešit. Vezměme si například moji Drupal VM Prod kódovou základnu, kterou jsem včera právě upgradoval z jádra Drupal 8.4.5 na 8.5.0:
- Moje omezení verze drupalu / jádra v souboru composer.json je
~8.4
- spuštěno
composer update drupal/core --with-dependencies
neaktualizováno Drupal core; to uvázlo na 8.4.5 - Spuštěno
composer update
(více jaderné možnosti – aktualizuje vše, včetně příspěvkových modulů a dalších závislostí, což by mohlo způsobit problémy a zkomplikovat testování jednotlivých aktualizací na složitém webu!) pracoval na upgradu jádra Drupalu … ale to není ideální.
Tak jsem se na to zeptal v čísle skladatel nepodařilo upgradovat z 8.4.4 na 8.5.0-alpha1 , a dokonce se pokusil zjistit, která závislost blokuje můj upgrade jádra Drupalu pomocí Příkaz skladatele:
composer prohibits drupal/core:8.5.0
Toto vypsalo spoustu různých komponent symfony … takže jsem tam mohl sedět a spolupracovat py-pasted each of the 14 components into my composer update
command, but that is not fun fun to do, so I didnt puting around around (to marnoil).
Později ve vlákně komentářů @eiriksm zmínil, že protože můj projekt má symfony/config
(závislost drush a drupal konzole), potřeboval jsem spustit composer update drupal/core symfony/config --with-dependencies
.
Stále netuším, jak jsem mohl zjistit, že jsem do příkazu update potřeboval přidat symfony/config
(oproti přidání všech ostatních symfonií komponenty) … ale pokud ano, pokusím se tuto odpověď aktualizovat o tyto informace, aby z toho v budoucnu mohli mít prospěch i ostatní!
Komentáře
- Na toto téma jsem také napsal blogový příspěvek s trochou dalších informací: Aktualizace drupal / core pomocí Composeru – ale jádro Drupalu ‚ t update
Odpověď
Aktualizace menších verzí (8.3> 8.4, 8.4> 8.5) se skladatelem je noční můra.
Docházím k závěru, že možná composer update
by mělo být „přijato“ a že je třeba opatrně spravovat verze modulů v composer.json
možná je všechny uzamknete na aktuálně nainstalované verze a poté změníte verzi pouze tehdy, když chcete aktualizovat modul. To opravdu není tak velký problém.
Tak jsme to udělali před skladatelem. Rozhodli jsme se, který modul aktualizovat jeden po druhém, ne všechny najednou, pomocí drush up modulename
nebo čehokoli jiného.
To by mohlo znamenat, že instalace modulů s konkrétními čísly verzí je dobrý nápad:
composer require "drupal/address:1.0"
ne toto
composer require "drupal/address:~1.0"
V composer.json
můžete kdykoli později změnit"1.0"
, ale pokud si nainstalujete konkrétní číslo verze, nebudete muset.
Komentáře
- Aktualizace menších verzí (8.3 > 8.4, 8.4 > 8,5) se skladatelem je noční můra. I ‚ udělal jsem asi 10 8.4 – > 8.5 aktualizací za poslední týden, vše prostřednictvím skladatele, vše stejně jednoduché jako spuštění
composer update
, žádné problémy s žádným z nich. Nejsem si jistý, jaká kombinace věcí nutí lidi s tím zápasit, nemám ‚ t narazit na jediný problém s Drupal / Composer - @Clive, pokud jen chcete aktualizovat Drupal Core, d ne všechny jádro, příspěvek a všechny ostatní závislosti a vy ‚ znovu nezamykáte v konkrétní verzi pro všechny další věci kromě jádra …
composer update
může mít mnoho nezamýšlených důsledků. Pro mnoho webů je obvykle dost bezpečné neustále aktualizovat vše, ale pro některé to může být katastrofa. Před zahájením výroby vždy otestujte!
composer show --tree
zobrazí strom závislostí, procházení, které vám může pomoci určit, co vyžaduje balíčky, které je třeba aktualizovat a informovat rozhodnutí. Rovněž můžete najít github.com/webflo/drupal-core-strict užitečné, opravuje základní závislosti na známé dobré verze, které vám mohou pomoci aktualizovat s větší jistotoucomposer update
a spoléhat se na soubor composer.json, aby byly balíčky kompatibilní (na alespoň s jádrem)? A když se během aktualizace věci na vývojovém prostředí rozbijí, projdu každou aktualizaci balíčku a zjistím, co ‚ způsobuje problém. Zdá se, že to dává smysl.