パッチリリース8.4.x> 8.4.yでは問題ありませんが、マイナーリリース8.4.x> 8.5.xでは問題ありません。マイナーリリースアップデートの「答え」と思われるものについては、以下のUPDATE 3にジャンプしてください。
1- .htaccess、robots.txtなど、変更したDrupalに付属するファイルをバックアップします(最も一般的に変更されるのは2つです)。
2- [ロックファイルの削除が間違っていると言われました。以下の更新を参照してください] composer.lockファイルを削除します(サイトの最上位フォルダーにあります)。これは手順5で再作成されます。
3- composer.json (サイトの最上位フォルダーにあります)を確認し、「drupal:core」がreplaceセクションではなくrequireセクションにあることを確認します。
"require": {
"drupal/core": "^8.4"
},
じゃない
"replace": {
"drupal/core": "^8.4"
},
「drupal / core」が置換セクションにある場合、それを必要なセクションに移動し、置換セクションを削除します。置換セクションに他のエントリがある場合は、置換セクション全体ではなく「drupal / core」を削除しますが、通常は「drupal / core」だけが存在すると思います。
更新したいバージョンを「drupal / core」の例に入れてください:
"drupal / core": "^ 8.5"-8.5の最新バージョンに更新されます。「drupal / core」:「8.4.6」-バージョン8.4.6に更新されます。
5-これを実行します(サイトの最上位フォルダーで):
composer update drupal/core --with-dependencies
6-エラーがない場合は、通常どおりに更新を実行し、キャッシュをクリアします。
drush updatedb
drush cr
または、drushを使用していない場合は、/ update.phpにアクセスして更新を実行し、次にadmin / config / development / performanceに移動して[すべてのキャッシュをクリア]ボタンをクリックします。
7-最初のステップでファイルをバックアップした場合(.htaccess、robots.txt)、それらを元に戻します。ただし、Drupalがそれらのファイルを更新したかどうかを確認し、それらの変更を自分のファイルに追加してください。
完了
手順5の作曲家の更新でエラーが発生した場合は、通常、ベンダーフォルダー内のバージョンの問題が原因です。
これは、このような問題に対処するのに最適な投稿です。https: //www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-updateにアクセスし、DrupalおよびComposerに関する他の2つの投稿を読んで入手してください。それに関するより多くの知識。
Twitterの2人からcomposer.lockを削除してはいけないと言われました(上記のステップ2)。composer update drupal/core --with-dependencies
コマンドはとにかくロックファイルを再作成します。
このメソッドをテストすると、8.4.3> 8.4.6(たとえば)で正常に動作しますが、8.4.6> 8.5.xでエラーが発生します。私がそれを理解したときに報告します。
エラーの例:
Your requirements could not be resolved to an installable set of packages.
Problem 1
- symfony/yaml 3.4.x-dev conflicts with symfony/console[v3.2.8].
- symfony/yaml 3.4.x-dev conflicts with symfony/console[v3.2.8].
- symfony/yaml 3.4.x-dev conflicts with symfony/console[v3.2.8].
- drupal/core 8.5.0 requires symfony/yaml ~3.4.5 -> satisfiable by symfony/yaml[3.4.x-dev].
- Installation request for drupal/core 8.5.0 -> satisfiable by drupal/core[8.5.0].
- Installation request for symfony/console (locked at v3.2.8, required as ~3.2.8) -> satisfiable by symfony/console[v3.2.8].
Jeff Geerlingによるこの投稿は、同様の問題に対処していますが、これまでのところ私には運がありません:https : //www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update
だから... 8.4.x> 8.5.xで私にとってうまくいくと思われる唯一のことは、他の多くの人が使用しているように見える「核オプション」であり、これは実行されcomposer update
ます。
composer.jsonのモジュールのバージョンについて確信が持てる限り、それは問題ないと思います。それらを現在のバージョンにロックダウンする必要があるかもしれません。例えば:
"drupal/address": "1.3"
のではなく:
"drupal/address": "^1.3"
しかし、正しい答えはありますか?
どこにでもあると思われる答えは、「核オプション」を実行することです。
A. /vendor
フォルダーを削除します。
B. composer update
モジュールを実行し、コアとともにモジュールを更新します。または、モジュールのバージョンcomposer.json
を更新したくない場合はロックダウンします。
Drupal Slackのある人は、「Composerの全体的な哲学は、できるだけ頻繁にパッケージを更新する必要があるということです」と述べています。パッケージには、私が思うモジュールが含まれています。だから私は推測するに理にかなっています。
8.4.6から8.5.0に移行すると、composer update drupal/core --with-dependencies
8.4.3から8.4.6の場合と同様に、8.5.0から8.5.1に移行するのに問題なく機能しました。
私は「答え」はベンダーフォルダとcomposer.lockファイルを削除してから使用composer update
することであり、composer.jsonファイルの依存関係のバージョン番号があなたが望むものであることを単に確認すべきだと結論付け始めています。保持したいモジュールのバージョンを管理したり、更新を許可したりすることはそれほど大したことではありませんcomposer.json
。
例えば:
"drupal/admin_toolbar": "1.18",
1.18に固執することを意味します
"drupal/admin_toolbar": "^1.18",
は先に進んでアップデートすることを意味しますが、1.x(2.xではありません)
:これは、この記事にコメント(一般的な田舎者)によってバックアップされhttps://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update
「私がきたことの一つ私がサポートしているのは、モジュールとコアのバージョンをロックダウンすることをお勧めします。そのため、さまざまなプラグインの一部が正しく動作したくない場合もあるため、必要なときにそれをサーモヌークできます。」
ちなみに、composer.lockファイルはcomposer update
(composer install
ファイルをロックする場所とは対照的に)吹き飛ばされるため、役に立ちません。
実行composer install
予定:
composer.lock
が存在するかどうかを確認します
- そうでない場合は、を実行し
composer update
て作成します
composer.lock
存在する場合は、指定されたバージョンをロックファイルからインストールします
実行composer update
予定:
- 小切手
composer.json
- バージョン仕様に基づいてインストールする最新バージョンを決定します
- 最新バージョンをインストールする
composer.lock
インストールされている最新バージョンを反映するように更新する
参照:https : //www.engineyard.com/blog/composer-its-all-about-the-lock-file
:私は、これは、上記記載されて参照https://github.com/drupal-composer/drupal-project。私はそれを使用しましたが、問題ありませんが、ComposerをDrupalで使用するための要件ではありません。名前に由来するような「音」の一種であるため、混乱を招きます。Drupal 8を初めて使用したとき、それが必要だと思ったので、それを使って最初のD8サイトを構築しました。
Drupalの「バージョン」には、プロジェクトの最上位フォルダーではなく、/ webフォルダーにdocrootがあります。また、通常のDrupalと比較して、.gitignoreに追加されたものがあります:
/drush/contrib/
/vendor/
/web/core/
/web/modules/contrib/
/web/themes/contrib/
/web/profiles/contrib/
/web/libraries/
したがって、このバージョンのDrupalは、コンポーザーインストールを使用して、デプロイごとにDrupalの新しいビルドを実行するために継続的な統合を使用しているサイト向けです。より通常の方法でデプロイする場合、明らかに上記のすべてをgitリポジトリにコミットする必要があります。コミットしないと、サーバーにデプロイされません[1]。
[1] gitがデプロイに関係している場合-SFTPでデプロイする場合、これを無視します。