Обновление ядра с 8.2 до 8.3 через composer

9

Я пытаюсь обновить ядро ​​Drupal до 8.3, но сталкиваюсь с трудностями.

Внизу страницы находится файл composer.json, с которого я начинаю.

Если я изменяю "drupal / core": "~ 8.2" => "drupal / core": "~ 8.3" и затем запускаю, composer update drupal/core --with-dependenciesя получаю следующие проблемы, которые я не уверен, как решить эту проблему, поскольку они не содержатся в композиторе Файл .json, который я включил ниже.

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

{
"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"
    }
]

}

Роб Холмс
источник
Я столкнулся с этой на прошлой неделе и исправил ее, но не уверен на 100%, что я сделал правильно (я также использую webflo / drupal-core-strict). Я хотел бы увидеть окончательный ответ по этому поводу.
mpdonadio

Ответы:

3

Подобно @rreiss, мне пришлось удалить .lock. Вот что сработало для меня:

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

Первая строка может быть уникальной для вашего проекта, подтвердите, посмотрев пути к установщику в вашем composer.json.

powpow12
источник
1

Просто столкнулся с тем же. Чтобы исправить это, я сделал резервную копию / удалил каталог / vendor и снова запустил «обновление композитора», чтобы Composer заново загрузил все зависимости. Я думаю, что установленные зависимости от требуемого не синхронизированы.

Кит Савойя
источник
2
Вот так я и решаю подобные проблемы Composer. Я нахожу это разочаровывающим «решением», потому что это похоже на взлом. Если целью Composer является управление моими зависимостями, то я ДОЛЖЕН ожидать, что Composer справится с подобными вещами. На самом деле (с этим «исправлением») Composer больше похож на инструмент для УСТАНОВКИ моих зависимостей Drupal. Опять же, это похоже на долгий взлом, поскольку предполагается, что это улучшение по сравнению с методом «скачай новый zip и переписать существующую установку Drupal».
RominRonin
1
У меня возникла та же проблема, и мне также пришлось удалить composer.lock .. drupal.org/node/2836351#comment-12056279
rreiss,
1

У меня была очень похожая проблема при попытке обновления с 8.3.7 до 8.4.0. Я думаю, что нашел виновника.

В файле DOCROOT composer.json я вижу следующие строки:

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

Таким образом, это указывает файлу DOCROOT composer.json ссылаться на core/composer.jsonфайл и также требовать этих зависимостей. Проблема заключается в том, что он просматривает зависимости от установленной на данный момент версии Drupal, тогда как обновленная версия имеет новые зависимости. Это создает конфликт, который мы видим.

Вот решение, которое я нашел, которое работает. Он не требует удаления каких - либо файлов или модулей.

1) Загрузите копию core/composer.jsonфайла из архива версии Drupal, до которой вы обновляетесь .

2) В текущей версии, замените в core/composer.jsonфайл с новой версией вы только что загрузили.

3) Обновите файл DOCROOT composer.json с помощью «drupal / core: ~ 8.xx» (независимо от того, что вы обновляете).

4) Беги composer update --with-dependenciesкак обычно. На этот раз обновление должно продолжаться. Затем примените обновления базы данных / сущности, восстановите кеш и т. Д. И т. Д.

Я пользователь Windows и, безусловно, в большей степени разработчик сайтов, поэтому я даже не буду пытаться публиковать приглашения командной строки для выполнения этих действий в Linux. И я не уверен, является ли это «правильным» решением или даже почему вышеприведенный код блокирует обновление, но это то, что сработало для меня!

Тайнан Фокс
источник
0

Просто отметив, что мне показалось, что это работает для обновления ядра с 8.2.3> 8.3.7. Обратите внимание, что моя установка Drupal 8 использовала это: https://github.com/drupal-composer/drupal-scaffold, который имеет такую ​​структуру каталогов:

.git
.gitignore
composer.json
composer.lock
Конфигурационные
скрипты Веб-сайт
поставщика

  • Переведите сайт в режим обслуживания: / admin / config / development / maintenance
  • Запустите эту команду в корне сайта: rm -rf vendor && rm -rf web/core && rm -f composer.lock
  • Запустите эту команду в корне сайта: composer require drupal/core:8.3.7 --update-with-dependencies
  • Перейдите в /update.php (или drush updb) и запустите обновления. Это скажет, что есть 17, чтобы бежать. Вероятно, он вернет ошибки, если это так, перейдите в /update.php и снова запустите обновления (на этот раз будет сказано, что запускать нужно меньше). Перейти на домашнюю страницу, когда это будет сделано.
  • Проверьте сайт.
  • Вывести сайт из режима обслуживания: / admin / config / development / maintenance
Ричард Худ
источник