web-dev-qa-db-ja.com

composerでパッケージを更新し、何を更新するかを知る

私はDrupal 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 )。

3
Cloudkiller

正直なところ、典型的なDrupalサイトのようなコードベースの場合、これは解決するのが難しい問題です。たとえば、昨日VMコア8.4.5から8.5.0にアップグレードしたばかりの Drupal Drupal Prod codebaseを見てみましょう。

  • Composer.jsonのdrupal/coreバージョンの制約は~8.4です
  • composer update drupal/core --with-dependenciesを実行しても_ ​​Drupalコアは更新されませんでした。 8.4.5で動かなくなった
  • composer updateを実行すると(核オプションの詳細-contribモジュールやその他の依存関係を含むすべてが更新され、問題が発生し、複雑なサイトで個々の更新をテストするのが難しくなります)Drupal core ...しかし、それは理想的ではありません。

だから私は問題でそれについて尋ねました composerは8.4.4から8.5.0-alpha1へのアップグレードに失敗します で、どの依存関係が私のDrupalコアアップグレードをブロックしているかを突き止めようとしましたComposerコマンドを使用:

composer prohibits drupal/core:8.5.0

これは、symfonyのさまざまなコンポーネントをリストアップしていました...そこに座って、14個のコンポーネントのそれぞれをcomposer updateコマンドにコピーして貼り付けることができましたが、それは面白くなかったので、続けていました(無駄に)。

コメントスレッドの後半で、@ eiriksmは、私のプロジェクトにはsymfony/config(drushおよびdrupal consoleの依存関係)があるため、composer update drupal/core symfony/config --with-dependenciesを実行する必要があると述べました。

更新コマンドにsymfony/configを追加する必要があるだけで、他のすべてのsymfonyコンポーネントを追加する必要があることをどのように理解できたのか、まだわかりません...もしそうなら、これを更新しようとします他の人が将来的に利益を得ることができるように、その情報で答えてください!

4
geerlingguy

composer)でマイナーバージョン(8.3> 8.4、8.4> 8.5)を更新することは悪夢です。

たぶんcomposer updateは「採用」されるべきであり、モジュールバージョンをcomposer.jsonで慎重に管理する必要があるという結論に達していますモジュールを更新します。それは本当にそれほど大きなことではありません。

それは本当に作曲家の前にそれをやった方法です。 drush up modulenameなどを使用して、一度にすべてではなく1つずつ更新するモジュールを決定しました。

これは、特定のバージョン番号のモジュールをインストールすることをお勧めします:

composer require "drupal/address:1.0"

これではない

composer require "drupal/address:~1.0"

"~1.0""1.0"の後半でいつでもcomposer.jsonに変更できますが、特定のバージョン番号をインストールする場合は必要ありません。

2
Richard Hood