web-dev-qa-db-ja.com

Composerを使用したコアの更新が機能しない

D 8.3.0-rc2を使用していて、D 8.3.0の安定版に更新したい。 Composerは私の唯一のオプションです(アドレスモジュールの要件)。 Composerコアの更新では、8.3-0-rc2を超えることはなく、強制することもありません。 drush composer require "drupal/core:^8.3@stable"を実行すると、次の出力が得られます。

./composer.jsonが更新されました
パッケージ情報を含むcomposerリポジトリをロードしています
依存関係の更新(require-devを含む)
インストールまたは更新するものはありません

Composer.jsonの内容は次のとおりです。

{

"name": "drupal/drupal",
"description": "Drupal is an open source content management platform powering millions of websites and applications.",
"type": "project",
"license": "GPL-2.0+",
"require": {
    "composer/installers": "^1.0.21",
    "drupal/core": "^8.3@stable",
    "wikimedia/composer-merge-plugin": "~1.3",
    "drupal/address": "~1.0",
    "drush/drush": "^8.1"
},
"replace": {
},
"minimum-stability": "dev",
"prefer-stable": true,
"config": {
    "preferred-install": "dist",
    "autoloader-suffix": "Drupal8"
},
"extra": {
    "_readme": [
        "By default Drupal loads the autoloader from ./vendor/autoload.php.",
        "To change the autoloader you can edit ./autoload.php."
    ],
    "merge-plugin": {
        "include": [
            "core/composer.json"
        ],
        "recurse": false,
        "replace": false,
        "merge-extra": false
    }
},
"autoload": {
    "psr-4": {
        "Drupal\\Core\\Composer\\": "core/lib/Drupal/Core/Composer"
    }
},
"scripts": {
    "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump",
    "post-autoload-dump": "Drupal\\Core\\Composer\\Composer::ensureHtaccess",
    "post-package-install": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup",
    "post-package-update": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup"
},
"repositories": {
    "drupal": {
        "type": "composer",
        "url": "https://packages.drupal.org/8"
    }
}
}

Vendorとcomposer.lockの削除について読みましたが、これが機能する理由がわかりません。

5
Peter Janes

ComposerでDrupalを直接更新する代わりに、開始点として drupal-composer/drupal-project で開始してみてください。このプロジェクトは間違いなくDrupal 8.3.0で動作します。

Drupal-composer/drupal-projectで新しいプロジェクトを設定し、composer requireを使用して必要なモジュールを追加します。新しいプロジェクトでコードが古いものと同じになったら、データベースをコピーして(または、settings.phpで既存のデータベースをポイントするだけで)、updatedbを実行できます。

3
greg_1_anderson

Composer.jsonに正しいバージョンがすでにあります。次に、それはcomposer installです(あなたの場合はdrush composer installです)。

それが機能しない場合は、composer install(またはdrush composer install)を呼び出す前に、ロックファイルやベンダーフォルダを削除してください。

そして、composer update drupal/core(あなたの場合はdrush composer update drupal/core)も同様に機能すると思います(ロックファイルまたはベンダーフォルダーのバージョンがcomposer.jonのバージョンと異なるため)。

0
leymannx