Composer を使った Drupal コアの更新
このドキュメントは 未完成 です。情報を追加する。
Drupal 8.8.0 以降への更新で困っていますか?
Composer イニシアチブの一環として、Drupal 8.8.0 で大きな変更が導入され、長期的なサイト管理が大幅に改善されました。ただし、以前のバージョンからのアップグレードには重要な考慮事項があります。
はじめに
Composer が Drupal の依存関係をどのように管理するかを理解するには、Drupal で Composer を使う を参照してください。Composer が自分に適しているかどうかを判断するには、利用可能な選択肢を比較してください。
このガイドには、アップグレードを完了するのに役立つ Drush コマンドが含まれています。多くの人は、管理 UI よりも Drush の方が速いと感じています。
既存の Drupal サイトが一度も Composer を使ったことがない場合は、アップグレードの前に Composer の準備ができている ことを確認してください。
Drupal 8 コアのアップグレード
まず、コアの更新が利用可能かどうかを確認します:
composer update --dry-run "drupal/*"
これにより、利用可能なマイナーまたはパッチの更新が一覧表示されます。drupal/core または drupal/core-recommended で始まる行を探してください。更新が表示された場合は、次に進みます。
ワンステップ更新
経験があり、注意点を理解している場合は、次を実行します:
composer update drupal/core --with-dependencies
drush updatedb
drush cache:rebuild
core-recommended を使っている場合は、drupal/core を適宜置き換えてください。
drupal-composer/drupal-project を使って構築したサイトでは、追加の手順が必要になる場合があります。以下の特記事項を参照してください。
ステップバイステップの更新手順
- ファイルとデータベースをバックアップします:
drush sql:dumpで DB をエクスポートします。- CLI ツールを使ってディレクトリ(
vendorを除く)をバックアップします。
- リリースノート を確認します。
- メンテナンスモード を有効にします:
drush state:set system.maintenance_mode 1 && drush cr - 必要に応じてモジュール/テーマを更新します:モジュールの更新。
- Drupal コアとその依存関係を更新します:
composer update drupal/core --with-dependencies該当する場合は
drupal/core-recommendedを使います。 - 次を実行します:
drush updatedb drush cache:rebuild - 構成管理を使っている場合:
drush config:export --diff - ステータスレポートページとログでエラーを確認します。
- メンテナンスモードを無効にします:
drush state:set system.maintenance_mode 0 drush cache:rebuild - 匿名ユーザーとしてサイトをテストします。
本番環境では
- 一貫したバージョンにするために、
composer.lockを使ってcomposer installを実行します。 - 本番環境で開発用の依存関係を除外するには、
composer install --no-devを使います。
Drupal 8.8.0 以降への更新に関する特記事項
実際の更新例については、PreviousNext のブログ記事 を参照してください。
/vendor ディレクトリを削除する
cd your_install_dir
rm -rf vendor
webflo/drupal-core-strict からの移行
composer updategit add composer.lock; git commitcomposer remove webflo/drupal-core-strict --no-updatecomposer remove drupal/core --no-updatecomposer require 'composer/installers:^1.7' --no-updaterm composer.lock && rm -rf vendorcomposer require drupal/core-recommended:^8.8 --update-with-dependencies
webflo/drupal-core-require-dev からの移行
composer remove --dev webflo/drupal-core-require-dev
composer require --dev drupal/core-dev
パッチの更新
composer-patches を使っている場合は、パッチを reroll(再作成) し、composer.json を更新する必要があるかもしれません。
ソフト依存関係の競合を解決する
composer require --update-with-dependencies \
drupal/core:^8.8.0 \
symfony/finder:^3.4 \
symfony/filesystem:^3.4
composer require --dev --update-with-dependencies \
drupal/core-dev:^8.8.0 \
symfony/debug:^3.4
composer remove -n \
symfony/finder \
symfony/filesystem
composer remove -n --dev symfony/debug
構成とスキーマを更新する
drush updb
drush cr
drush config:export
settings.php を更新する
// 旧
$config_directories['sync'] = 'foo/bar';
// 新
$settings['config_sync_directory'] = 'foo/bar';
既知の問題と回避策
composer update で drupal/core が更新されない場合は、次を実行します:
composer prohibits drupal/core:8.5.0
これは、更新を妨げているものを表示します。
推奨される Composer テンプレートを使ってください:既存のサイトに Composer を追加する。
2020 年 1 月時点で、drupal-composer/drupal-project は Drupal 8.8 以降には推奨されなくなりました。プロジェクトテンプレートを使うためのコミュニティガイド を参照してください。
さらに読む
- 8.4.0 と Drush 9 へのアップグレード
- 8.4 へのステップバイステップのアップグレード
- Composer で 8.5 に更新する
- Composer が 8.4.4 から 8.5.0-alpha1 へのアップグレードに失敗した
- WebKings による Composer 更新ガイド
エラーメッセージは必ず読み、issue キューを検索してください。致命的なエラーが発生した場合は、ロールバックして、バックアップを使って更新をやり直してください。