Actualización del núcleo de 8.2 a 8.3 a través del compositor

9

Estoy tratando de actualizar Drupal core a 8.3 pero me encuentro con dificultades.

En la parte inferior de la página está el archivo composer.json con el que estoy comenzando.

Si cambio "drupal / core": "~ 8.2" => "drupal / core": "~ 8.3" y luego ejecuto composer update drupal/core --with-dependencies, obtengo los siguientes problemas, que no estoy seguro de cómo resolver, ya que no están contenidos en el compositor .json archivo que he incluido a continuación.

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 original. 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
fuente
Me encontré con esto la semana pasada y lo arreglé, pero no estoy 100% seguro de que lo que hice fue correcto (también uso webflo / drupal-core-estricto). Me gustaría ver una respuesta definitiva sobre esto.
mpdonadio

Respuestas:

3

Similar a @rreiss, tuve que eliminar .lock. Esto es lo que funcionó para mí:

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 línea uno podría ser única para su proyecto, confirme buscando rutas de instalación en su composer.json.

powpow12
fuente
1

Acabo de encontrarme con esta misma cosa. Para solucionarlo, hice una copia de seguridad / eliminé el directorio / vendor y ejecuté 'actualización de composer' nuevamente para que Composer volviera a descargar todas las dependencias. Creo que las dependencias instaladas frente a las requeridas se desincronizan.

Keith Savoie
fuente
2
Así es como termino arreglando problemas similares de Composer. Me parece una 'solución' frustrante porque se siente como un truco. Si el propósito de Composer es administrar mis dependencias, espero que Composer maneje este tipo de cosas. Tal como está (con esta 'corrección'), Composer parece más una herramienta para INSTALAR mis dependencias de Drupal. Una vez más, esto se siente como un truco sin aliento porque se supone que esto es una mejora sobre el método de 'descargar el nuevo zip y sobrescribir el método de instalación de Drupal existente'.
RominRonin
1
Experimenté el mismo problema y también tuve que eliminar composer.lock .. drupal.org/node/2836351#comment-12056279
rreiss
1

Tuve un problema muy similar al intentar actualizar de 8.3.7 a 8.4.0. Creo que encontré al culpable.

En el archivo DOCROOT composer.json, veo las siguientes líneas:

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

Entonces esto dirige al archivo DOCROOT composer.json para que haga referencia al core/composer.jsonarchivo y también requiera esas dependencias. El problema es que está analizando las dependencias de su versión instalada actualmente de Drupal, mientras que la versión actualizada tiene nuevas dependencias. Esto crea el conflicto que estamos viendo.

Aquí está la solución que encontré que funciona. No , no requiere de eliminar cualquier archivo o módulos.

1) Descargue una copia del core/composer.jsonarchivo del tarball de la versión de Drupal a la que está actualizando .

2) En su instalación actual, reemplace el core/composer.jsonarchivo con la nueva versión que acaba de descargar.

3) Actualice su archivo DOCROOT composer.json con "drupal / core: ~ 8.xx" (lo que sea que esté actualizando).

4) Corre composer update --with-dependenciescomo siempre. Esta vez, la actualización debería continuar. Luego aplique las actualizaciones de la base de datos / entidad, reconstruya el caché, etc., etc.

Soy un usuario de Windows y definitivamente soy un creador de sitios, por lo que ni siquiera intentaré publicar mensajes de línea de comandos para hacer estas cosas en Linux. Y no estoy seguro de si esta es una solución "adecuada", o incluso por qué el código anterior bloquea la actualización, ¡pero esto es lo que funcionó para mí!

Tynan Fox
fuente
0

Solo notando que esto parecía funcionar para mí para la actualización principal de 8.2.3> 8.3.7. Tenga en cuenta que mi instalación de Drupal 8 utilizó esto: https://github.com/drupal-composer/drupal-scaffold que tiene esta estructura de directorio:

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

  • Ponga el sitio en modo de mantenimiento: / admin / config / development / maintenance
  • Ejecute este comando en la raíz del sitio: rm -rf vendor && rm -rf web/core && rm -f composer.lock
  • Ejecute este comando en la raíz del sitio: composer require drupal/core:8.3.7 --update-with-dependencies
  • Vaya a /update.php (o drush updb) y ejecute las actualizaciones. Dirá que hay 17 para correr. Probablemente devolverá errores, si es así, vaya a /update.php y ejecute las actualizaciones nuevamente (esta vez dirá que hay menos para ejecutar). Vaya a la página de inicio cuando haya terminado.
  • Revisa el sitio.
  • Sacar el sitio del modo de mantenimiento: / admin / config / development / maintenance
Richard Hood
fuente