Memperbarui inti dari 8,2 ke 8,3 melalui komposer


9

Saya mencoba memperbarui inti Drupal ke 8.3 tetapi saya mengalami kesulitan.

Di bagian bawah halaman adalah file composer.json saya mulai dengan.

Jika saya mengubah "drupal / core": "~ 8.2" => "drupal / core": "~ 8.3" dan kemudian jalankan, composer update drupal/core --with-dependenciessaya mendapatkan masalah berikut ini yang saya tidak yakin bagaimana menyelesaikannya karena tidak terdapat dalam komposer File .json saya sudah sertakan di bawah ini.

Your requirements could not be resolved to an installable set of packages.



   Problem 1
    - drupal/core 8.3.0 requires symfony/psr-http-message-bridge ^1.0 -> satisfiable by symfony/psr-http-message-bridge[1.0.x-dev].
    - drupal/core 8.3.x-dev requires symfony/psr-http-message-bridge ^1.0 -> satisfiable by symfony/psr-http-message-bridge[1.0.x-dev].
    - drupal/core 8.4.x-dev requires symfony/psr-http-message-bridge ^1.0 -> satisfiable by symfony/psr-http-message-bridge[1.0.x-dev].
    - Conclusion: don't install symfony/psr-http-message-bridge 1.0.x-dev
    - Conclusion: don't install drupal/core 8.3.0-rc2
    - Conclusion: don't install drupal/core 8.3.0-rc1
    - Conclusion: don't install drupal/core 8.3.0-beta1
    - Installation request for symfony/psr-http-message-bridge v0.2 -> satisfiable by symfony/psr-http-message-bridge[v0.2].
    - Conclusion: remove symfony/dom-crawler v3.2.6
    - Installation request for drupal/core ~8.3 -> satisfiable by drupal/core[8.3.0, 8.3.0-alpha1, 8.3.0-beta1, 8.3.0-rc1, 8.3.0-rc2, 8.3.x-dev, 8.4.x-dev].
    - Conclusion: don't install symfony/dom-crawler v3.2.6
    - drupal/core 8.3.0-alpha1 requires symfony/dom-crawler >=2.8.13 <3.0 -> satisfiable by symfony/dom-crawler[2.8.x-dev, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19].
    - Can only install one of: symfony/dom-crawler[2.8.x-dev, v3.2.6].
    - Can only install one of: symfony/dom-crawler[v2.8.13, v3.2.6].
    - Can only install one of: symfony/dom-crawler[v2.8.14, v3.2.6].
    - Can only install one of: symfony/dom-crawler[v2.8.15, v3.2.6].
    - Can only install one of: symfony/dom-crawler[v2.8.16, v3.2.6].
    - Can only install one of: symfony/dom-crawler[v2.8.17, v3.2.6].
    - Can only install one of: symfony/dom-crawler[v2.8.18, v3.2.6].
    - Can only install one of: symfony/dom-crawler[v2.8.19, v3.2.6].
    - Installation request for symfony/dom-crawler (locked at v3.2.6) -> satisfiable by symfony/dom-crawler[v3.2.6].

composer.json asli

{
"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": {
    "drupal/core": "~8.2",
    "drupal/backup_migrate": "4.x-dev",
    "composer/installers": "^1.0.21",
    "wikimedia/composer-merge-plugin": "~1.3",
    "drupal/console": "^1.0",
    "drupal/file_browser": "^1.0@alpha",
    "enyo/dropzone": "4.2.0",
    "desandro/masonry": "3.3.1",
    "desandro/imagesloaded": "3.1.8",
    "drupal/admin_toolbar": "^1.18",
    "drupal/ctools": "^3.0@alpha",
    "drupal/devel": "^1.0@beta",
    "drupal/migrate_tools": "^3.0",
    "drupal/migrate_plus": "^3.0",
    "drupal/media_entity": "^1.6",
    "drupal/media_entity_document": "^1.1",
    "drupal/media_entity_image": "^1.2",
    "drupal/inline_entity_form": "^1.0@beta",
    "drupal/entity_embed": "^1.0@beta",
    "drupal/entity_browser": "^1.0@beta",
    "paquettg/php-html-parser": "^1.7",
    "drupal/better_exposed_filters": "^3.0@alpha",
    "drupal/workbench_access": "^1.0@alpha",
    "drupal/webform": "^5.0@beta",
    "j7mbo/twitter-api-php": "^1.0",
    "nesbot/carbon": "^1.22",
    "Drupal/userprotect": "^1.0",
    "drupal/config_ignore": "^1.2",
    "Drupal/permissions_by_term": "^1.16",
    "Drupal/views_menu_children_filter": "^1.0@alpha",
    "drupal/sitemap": "^1.2",
    "drupal/xmlsitemap": "^1.0@alpha",
    "drupal/simple_sitemap": "^2.8",
    "drupal/redirect": "^1.0@alpha",
    "drupal/metatag": "^1.0",
    "drupal/acl": "^1.0@alpha",
    "drupal/examples": "1.x-dev",
    "drupal/honeypot": "^1.23",
    "drupal/field_collection": "^1.0@alpha",
    "drupal/dropzonejs": "^1.0@alpha",
    "drupal/embed": "^1.0@RC",
    "drupal/pathauto": "^1.0@RC",
    "drupal/rabbit_hole": "^1.0@beta",
    "drupal/entity_reference_display": "^1.0",
    "drupal/field_group": "^1.0@RC",
    "drupal/layouter": "^1.0",
    "drupal/mailsystem": "^4.1",
    "drupal/mimemail": "^1.0@alpha",
    "drupal/permissions_by_term": "^1.17",
    "drupal/content_access": "1.x-dev",
    "drupal/rules": "^3.0@alpha",
    "drupal/smart_trim": "^1.0",
    "drupal/taxonomy_menu": "^3.3",
    "drupal/token": "^1.0@RC",
    "drupal/typed_data": "^1.0@alpha",
    "drupal/video_embed_field": "^1.4",
    "drupal/views_infinite_scroll": "^1.3",
    "drupal/noreferrer": "^1.1",
    "drupal/system_status": "^2.4",
    "drupal/google_analytics": "^2.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
    },
    "installer-paths": {
        "modules/contrib/{$name}": [
            "type:drupal-module"
        ],
        "modules/custom/{$name}": [
            "type:drupal-custom-module"
        ],
        "libraries/{$name}": [
            "type:drupal-library"
        ],
        "profiles/contrib/{$name}": [
            "type:drupal-profile"
        ],
        "themes/contrib/{$name}": [
            "type:drupal-theme"
        ],
        "themes/custom/{$name}": [
            "type:drupal-custom-theme"
        ]
    }
},
"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"
},
"dependencies": {
    "backupmigrate/core": "dev-master",
    "psr/log": "dev-master"
},
"repositories": [
    {
        "type": "composer",
        "url":  "https://packages.drupal.org/8"
    },
    {
        "type": "package",
        "package": {
            "name": "desandro/masonry",
            "version": "3.3.1",
            "type": "drupal-library",
            "dist": {
                "url": "https://github.com/desandro/masonry/archive/v3.3.1.zip",
                "type": "zip"
            }
        }
    },
    {
        "type": "package",
        "package": {
            "name": "desandro/imagesloaded",
            "version": "3.1.8",
            "type": "drupal-library",
            "dist": {
                "url": "https://github.com/desandro/imagesloaded/archive/v3.1.8.zip",
                "type": "zip"
            }
        }
    },
    {
        "type": "package",
        "package": {
            "name": "enyo/dropzone",
            "version": "4.2.0",
            "type": "drupal-library",
            "source": {
                "url": "https://github.com/enyo/dropzone",
                "type": "git",
                "reference": "origin/master"
            }
        }
    },
    {
        "type": "vcs",
        "url": "https://github.com/backupmigrate/backup_migrate_core"
    }
]

}


Saya berlari ke ini minggu lalu, dan memperbaikinya, tetapi saya tidak 100% yakin apa yang saya lakukan benar (saya juga menggunakan webflo / drupal-core-strict). Saya ingin melihat jawaban yang pasti tentang ini.
mpdonadio

Jawaban:


3

Mirip dengan @rreiss, saya harus menghapus .lock. Inilah yang bekerja untuk saya:

rm -rf vendor && rm -rf docroot/core && rm -rf docroot/modules/contrib && rm -f composer.lock

composer require drupal/core:8.3.1 --update-with-dependencies

baris pertama bisa unik untuk proyek Anda, konfirmasikan dengan mencari jalur pemasang di composer.json Anda.


1

Baru saja bertemu hal yang sama. Untuk memperbaikinya saya mencadangkan / menghapus direktori / vendor dan menjalankan 'pembaruan komposer' lagi sehingga Composer akan mengunduh ulang semua dependensi. Saya pikir dependensi yang diinstal vs. yang diperlukan tidak sinkron.


2
Inilah bagaimana saya akhirnya memperbaiki masalah Komposer serupa. Saya merasa ini 'solusi' yang membuat frustrasi karena rasanya seperti retasan. Jika tujuan Komposer adalah untuk mengelola dependensi saya, maka saya semacam DO berharap Komposer untuk menangani hal semacam ini. Seperti ini (dengan 'perbaikan' ini), Komposer tampaknya lebih seperti alat untuk MENGINSTAL dependensi Drupal saya. Sekali lagi ini terasa seperti hack yang panjang lebar karena ini seharusnya merupakan perbaikan dari metode 'unduh zip baru dan timpa metode instalasi Drupal yang ada'.
RominRonin

1
Saya telah mengalami masalah yang sama dan saya juga harus menghapus composer.lock .. drupal.org/node/2836351#comment-12056279
rreiss

1

Saya memiliki masalah yang sangat mirip ketika mencoba untuk meningkatkan dari 8.3.7 ke 8.4.0. Saya pikir saya menemukan pelakunya.

Dalam file DOCROOT composer.json, saya melihat baris berikut:

"merge-plugin": {
    "include": [
        "core/composer.json"
    ],
    "recurse": false,
    "replace": false,
    "merge-extra": false
},

Jadi ini mengarahkan file DOCROOT composer.json untuk merujuk ke core/composer.jsonfile dan juga memerlukan dependensi tersebut. Masalahnya adalah ia melihat dependensi dari versi Drupal yang saat ini Anda instal , sedangkan versi yang ditingkatkan memiliki dependensi baru. Ini menciptakan konflik yang kita lihat.

Inilah solusi yang saya temukan yang berfungsi. Ini tidak memerlukan menghapus file atau modul.

1) Unduh salinan core/composer.jsonfile dari tarball versi Drupal yang Anda tingkatkan ke .

2) Dalam instalasi Anda saat ini, ganti dengan core/composer.jsonfile dengan versi baru saja Anda download.

3) Perbarui file DOCROOT composer.json Anda dengan "drupal / core: ~ 8.xx" (apa pun yang Anda perbarui).

4) Jalankan composer update --with-dependenciesseperti biasa. Kali ini, pembaruan harus dilanjutkan. Kemudian menerapkan pembaruan basis data / entitas, membangun kembali cache, dll. Dll

Saya adalah pengguna Windows dan tentunya lebih merupakan pembangun situs, jadi saya bahkan tidak akan mencoba memposting perintah-perintah untuk melakukan hal-hal ini di Linux. Dan saya tidak yakin apakah ini solusi yang "tepat", atau bahkan mengapa kode di atas memblokir pembaruan, tetapi inilah yang berhasil bagi saya!


0

Hanya mencatat bahwa ini sepertinya bekerja untuk saya untuk pembaruan inti dari 8.2.3> 8.3.7. Perhatikan pemasangan Drupal 8 saya menggunakan ini: https://github.com/drupal-composer/drupal-scaffold yang memiliki struktur direktori ini:

.git
.gitignore
composer.json
composer.lock web
konfigurasi
skrip
vendor

  • Masukkan situs ke mode pemeliharaan: / admin / config / pengembangan / pemeliharaan
  • Jalankan perintah ini di root situs: rm -rf vendor && rm -rf web/core && rm -f composer.lock
  • Jalankan perintah ini di root situs: composer require drupal/core:8.3.7 --update-with-dependencies
  • Buka /update.php (atau drush updb) dan jalankan pembaruan. Itu akan mengatakan ada 17 untuk dijalankan. Mungkin akan mengembalikan kesalahan, jika demikian, buka /update.php dan jalankan pembaruan lagi (kali ini akan mengatakan ada lebih sedikit untuk dijalankan). Buka beranda saat selesai.
  • Periksa situs tersebut.
  • Hapus situs dari mode pemeliharaan: / admin / config / pengembangan / pemeliharaan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.