Mise à jour du noyau de 8.2 à 8.3 via le compositeur

9

J'essaie de mettre à jour Drupal core vers 8.3, mais je rencontre des difficultés.

Au bas de la page se trouve le fichier composer.json avec lequel je commence.

Si je change "drupal / core": "~ 8.2" => "drupal / core": "~ 8.3" et que composer update drupal/core --with-dependenciesje lance, j'obtiens les problèmes suivants dont je ne sais pas comment résoudre ce problème car ils ne sont pas contenus dans le compositeur Fichier .json que j'ai inclus ci-dessous.

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

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

}

Rob Holmes
la source
J'ai rencontré cela la semaine dernière et l'ai corrigé, mais je ne suis pas sûr à 100% de ce que j'ai fait (j'utilise également webflo / drupal-core-strict). Je voudrais voir une réponse définitive à ce sujet.
mpdonadio

Réponses:

3

Semblable à @rreiss, j'ai dû supprimer .lock. C'est ce qui a fonctionné pour moi:

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

la première ligne peut être unique à votre projet, confirmez en recherchant les chemins d'installation dans votre composer.json.

powpow12
la source
1

Je suis juste tombé sur cette même chose. Pour résoudre ce problème, j'ai sauvegardé / supprimé le répertoire / vendor et exécuté à nouveau la «mise à jour du compositeur» afin que Composer télécharge à nouveau toutes les dépendances. Je pense que les dépendances installées et celles requises sont désynchronisées.

Keith Savoie
la source
2
C'est ainsi que je finis par résoudre des problèmes de compositeur similaires. Je trouve que c'est une «solution» frustrante car cela ressemble à un hack. Si le but de Composer est de gérer mes dépendances, je m'attends à ce que Composer gère ce genre de choses. En l'état (avec ce «correctif»), Composer ressemble plus à un outil pour INSTALLER mes dépendances Drupal. Encore une fois, cela ressemble à un hack de longue haleine, car cela est censé être une amélioration par rapport à la méthode `` télécharger le nouveau zip et écraser l'installation Drupal existante ''.
RominRonin
1
J'ai rencontré le même problème et j'ai également dû supprimer composer.lock .. drupal.org/node/2836351#comment-12056279
rreiss
1

J'ai eu un problème très similaire lors de la tentative de mise à niveau de 8.3.7 vers 8.4.0. Je pense avoir trouvé le coupable.

Dans le fichier DOCROOT composer.json, je vois les lignes suivantes:

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

Ainsi, le fichier DOCROOT composer.json fait référence au core/composer.jsonfichier et requiert également ces dépendances. Le problème est qu'il examine les dépendances de votre version de Drupal actuellement installée , tandis que la version mise à niveau a de nouvelles dépendances. Cela crée le conflit que nous voyons.

Voici la solution que j'ai trouvée qui fonctionne. Il ne nécessite pas de supprimer des fichiers ou des modules.

1) Téléchargez une copie du core/composer.jsonfichier depuis l'archive tar de la version de Drupal vers laquelle vous effectuez la mise à niveau .

2) Dans votre installation actuelle, remplacez le core/composer.jsonfichier par la nouvelle version que vous venez de télécharger.

3) Mettez à jour votre fichier DOCROOT composer.json avec "drupal / core: ~ 8.xx" (quelle que soit la mise à niveau).

4) Courez composer update --with-dependenciescomme d'habitude. Cette fois, la mise à jour devrait se poursuivre. Ensuite, appliquez les mises à jour de la base de données / entités, reconstruisez le cache, etc. etc.

Je suis un utilisateur Windows et certainement plus un constructeur de sites, donc je n'essaierai même pas de publier des invites de ligne de commande pour faire ces choses sous Linux. Et je ne sais pas si c'est une solution "correcte", ni même pourquoi le code ci-dessus bloque la mise à niveau, mais c'est ce qui a fonctionné pour moi!

Tynan Fox
la source
0

Juste en notant que cela semblait fonctionner pour moi pour la mise à jour principale de 8.2.3> 8.3.7. Notez que mon installation Drupal 8 a utilisé ceci: https://github.com/drupal-composer/drupal-scaffold qui a cette structure de répertoire:

.git
.gitignore
composer.json
composer.lock
config
scripts
fournisseur
web

  • Mettre le site en mode maintenance: / admin / config / development / maintenance
  • Exécutez cette commande à la racine du site: rm -rf vendor && rm -rf web/core && rm -f composer.lock
  • Exécutez cette commande à la racine du site: composer require drupal/core:8.3.7 --update-with-dependencies
  • Accédez à /update.php (ou drush updb) et exécutez les mises à jour. Il dira qu'il y en a 17 à courir. Il retournera probablement des erreurs, si c'est le cas, allez dans /update.php et exécutez à nouveau les mises à jour (cette fois, il y aura moins à exécuter). Allez à la page d'accueil quand c'est fait.
  • Vérifiez sur le site.
  • Sortir le site du mode maintenance: / admin / config / development / maintenance
Richard Hood
la source