Composerを使用してパッケージを更新し、何を更新するかを知っている
On 2月 10, 2021 by adminDrupal 8とcomposerを使い始めたばかりで、更新方法を理解しようとしています。ワークフローは機能するはずです。 Drupal 7サーバーの管理の基本は何年も知っていますが、Composerの部分でつまずきます。
現在、Drupalインストールのルートフォルダーから実行しています(メンテナンスモードが有効になっています)composer outdated
更新が必要なパッケージのリストが表示されます。
ドキュメントからわかる限り、次で始まるパッケージのみを更新する必要があります。 「drupal /」。コンソールとコアだけが古くなったと仮定して、composer update drupal/console drupal/core --with-dependencies
を実行すると、更新がプルダウンされ、処理が実行されます。これが完了した後、composer outdated
を再度実行すると、composerによると古いパッケージがたくさん表示されます。それは意図されていますか?または、これらのパッケージを更新する必要がありますか?
Drupalは特定のバージョンのパッケージを使用して構築されていると思います。したがって、すべてを更新すると、おそらくいくつかの問題が発生します。誰かがパッケージをどのように知っているのでしょうか。更新され、特定のバージョンを維持する必要があるのはどれですか?
これは、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.
これはかなりバニラなDrupalインストールです。いくつかのモジュールと1つのテーマしか追加されていません。このサイトは、公式ドキュメントに記載されているdrupal-composerテンプレートを使用して構築されていることにも言及する必要があります( https://github.com/drupal-composer/drupal-project )。
コメント
回答
正直なところ、典型的なDrupalサイトのようなコードベースの場合、これは解決するのが難しい問題。たとえば、昨日Drupalコア8.4.5から8.5.0にアップグレードしたばかりの Drupal VM Prod コードベースを見てください。
- composer.jsonのdrupal / coreバージョンの制約は
~8.4
-
composer update drupal/core --with-dependencies
を実行しても更新されませんでしたDrupalコア; 8.4.5でスタックしました -
composer update
を実行しています(より多くの核オプション-contribモジュールやその他の依存関係を含むすべてを更新します。これは問題を引き起こし、複雑なサイトで個々の更新をテストするのを非常に難しくする可能性があります!)Drupalコアのアップグレードに取り組みました…しかしそれは理想的ではありません。
それで私はそれについて尋ねましたこの問題では、コンポーザーが8.4.4から8.5.0-alpha1 へのアップグレードに失敗し、Drupalコアのアップグレードをブロックしている依存関係を特定しようとしました。 Composerコマンド:
composer prohibits drupal/core:8.5.0
これにより、さまざまなsymfonyコンポーネントがリストアップされました…だから私はそこに座って共同で14個のコンポーネントのそれぞれをcomposer update
コマンドにpy-pastedしましたが、それは面白くないので、(無駄に)じっと見回し続けました。
コメントスレッドの後半で、@ eiriksmは、私のプロジェクトにはsymfony/config
(drushとdrupalコンソールの依存関係)があるため、composer update drupal/core symfony/config --with-dependencies
。
更新コマンドにsymfony/config
を追加するだけでよいことがわかりました(他のすべてのsymfonyを追加するのではなく)コンポーネント)…しかし、もしそうなら、私はこの回答をその情報で更新して、他の人が将来利益を得ることができるようにします!
コメント
- このトピックに関するブログ投稿も書きました。もう少し情報があります: Composerでdrupal / coreを更新していますが、Drupalコアは' t update
回答
マイナーバージョンの更新(8.3> 8.4、8.4> 8.8。5)作曲家と一緒にいるのは悪夢です。
composer update
を「受け入れる」必要があり、モジュールのバージョンをcomposer.json
<で慎重に管理する必要があるという結論に達しました。
おそらく、それらすべてを現在インストールされているバージョンにロックし、モジュールを更新する場合にのみバージョンを変更します。それは本当に大したことではありません。
それが作曲家の前に私たちがやった方法です。 drush up modulename
などを使用して、一度にではなく1つずつ更新するモジュールを決定しました。
これは、特定のバージョン番号でモジュールをインストールすることをお勧めします:
composer require "drupal/address:1.0"
これではありません
composer require "drupal/address:~1.0"
後でcomposer.json
を"1.0"
に変更できます。
ただし、特定のバージョン番号をインストールする場合は、インストールする必要はありません。
コメント
- マイナーバージョンの更新(8.3 > 8.4、8.4 > 8.5)作曲家との戦いは悪夢です。 I '先週、約10 8.4- > 8.5の更新を、すべてコンポーザーを介して、
composer update
を実行するのと同じくらい簡単に行いました。 、それらのいずれにも問題はありません。'どのような組み合わせが人々をこれに苦しめているのかわかりません、私は' t Drupal / Composerでまだ1つの問題が発生しています - @ Clive、DrupalCoreを更新したい場合は dコア、contrib、およびその他すべての依存関係のすべてではなく、'コア以外のすべてのものに対して特定のバージョンをロックしていません…
composer update
は非常に多くの意図しない結果をもたらす可能性があります。多くのサイトでは、通常、すべてを常に更新するのに十分安全ですが、一部のサイトでは災害になる可能性があります。本番環境に移行する前に必ずテストしてください!
composer show --tree
は依存関係ツリーを表示し、更新が必要なパッケージが必要かどうかを判断するのに役立つ可能性があります。決定を通知します。 github.com/webflo/drupal-core-strict 便利で、コアの依存関係を既知の適切なバージョンに修正し、より自信を持って更新できるようにしますcomposer update
コマンドを使用し、composer.jsonファイルを使用してパッケージの互換性を維持できると推測しています(少なくともコアで)?そして、更新中に開発で問題が発生した場合は、各パッケージの更新を確認して、問題の原因となっている'を見つけます。理にかなっているようです。