Atualizando o núcleo de 8.2 para 8.3 via compositor


9

Estou tentando atualizar o núcleo do Drupal para 8.3, mas estou tendo dificuldades.

Na parte inferior da página, está o arquivo composer.json com o qual estou começando.

Se eu alterar "drupal / core": "~ 8.2" => "drupal / core": "~ 8.3" e executar, composer update drupal/core --with-dependencieseu recebo os seguintes problemas que não sei ao certo como resolver isso, pois eles não estão contidos no compositor Arquivo .json que incluí abaixo.

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].

compositor.json original

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

}


Encontrei isso na semana passada e o corrigi, mas não tenho 100% de certeza de que o que fiz foi adequado (também uso o webflo / drupal-core-strict). Eu gostaria de ver uma resposta definitiva sobre isso.
mpdonadio

Respostas:


3

Semelhante ao @rreiss, tive que excluir .lock. Isto é o que funcionou para mim:

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

a linha um pode ser exclusiva para o seu projeto, confirme procurando os caminhos do instalador no seu composer.json.


1

Apenas encontrei a mesma coisa. Para corrigir, eu fiz backup / excluí o diretório / vendor e executei 'update do compositor' novamente para que o Composer baixasse novamente todas as dependências. Eu acho que as dependências instaladas vs. necessárias ficam fora de sincronia.


2
É assim que acabo corrigindo problemas semelhantes do Composer. Acho isso uma 'solução' frustrante, porque parece um hack. Se o objetivo do Composer é gerenciar minhas dependências, espero que o Composer lide com esse tipo de coisa. Do jeito que está (com essa 'correção'), o Composer parece mais uma ferramenta para INSTALAR minhas dependências do Drupal. Novamente, isso parece um hack longo, porque é suposto ser uma melhoria em relação ao método 'baixar o novo zip e substituir a instalação existente do Drupal'.
RominRonin

11
Eu experimentei o mesmo problema e eu também tive que composer.lock de exclusão .. drupal.org/node/2836351#comment-12056279
rreiss

1

Eu tive um problema muito semelhante ao tentar atualizar do 8.3.7 para o 8.4.0. Eu acho que encontrei o culpado.

No arquivo DOCROOT composer.json, vejo as seguintes linhas:

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

Portanto, isso direciona o arquivo DOCROOT composer.json para se referir ao core/composer.jsonarquivo e também exigir essas dependências. O problema é que ele está analisando as dependências da versão do Drupal atualmente instalada , enquanto a versão atualizada possui novas dependências. Isso cria o conflito que estamos vendo.

Aqui está a solução que encontrei que funciona. Ele não requer eliminar quaisquer ficheiros ou módulos.

1) Faça o download de uma cópia do core/composer.jsonarquivo do tarball da versão do Drupal para a qual você está atualizando .

2) Na sua instalação atual, substitua o core/composer.jsonarquivo pela nova versão que você acabou de baixar.

3) Atualize seu arquivo DOCROOT composer.json com "drupal / core: ~ 8.xx" (para o que você estiver atualizando).

4) Corra composer update --with-dependenciescomo de costume. Desta vez, a atualização deve continuar. Em seguida, aplique atualizações de banco de dados / entidade, reconstrua o cache etc. etc.

Sou usuário do Windows e definitivamente mais construtor de sites, por isso nem tentarei postar prompts de linha de comando para fazer essas coisas no Linux. E não tenho certeza se essa é uma solução "adequada" ou mesmo por que o código acima bloqueia a atualização, mas é isso que funcionou para mim!


0

Apenas observando que isso parecia funcionar para mim na atualização principal do 8.2.3> 8.3.7. Observe que minha instalação do Drupal 8 usou isso: https://github.com/drupal-composer/drupal-scaffold que possui esta estrutura de diretórios:

.git
.gitignore
composer.json
composer.lock
configuração
scripts de
fornecedor
web

  • Coloque o site no modo de manutenção: / admin / config / development / maintenance
  • Execute este comando na raiz do site: rm -rf vendor && rm -rf web/core && rm -f composer.lock
  • Execute este comando na raiz do site: composer require drupal/core:8.3.7 --update-with-dependencies
  • Vá para /update.php (ou drush updb) e execute as atualizações. Dirá que há 17 para executar. Provavelmente retornará erros; nesse caso, vá para /update.php e execute as atualizações novamente (desta vez, haverá menos opções para executar). Vá para a página inicial quando terminar.
  • Verifique o site.
  • Tire o site do modo de manutenção: / admin / config / development / maintenance
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.