Aggiornamento core da 8.2 a 8.3 tramite compositore


9

Sto cercando di aggiornare Drupal core a 8.3 ma sto incontrando difficoltà.

Nella parte inferiore della pagina c'è il file composer.json che sto iniziando.

Se cambio "drupal / core": "~ 8.2" => "drupal / core": "~ 8.3" e quindi eseguo composer update drupal/core --with-dependenciesi seguenti problemi che non sono sicuro di come risolvere in quanto non sono contenuti nel compositore File .json che ho incluso di seguito.

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

compositore originale. 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"
    }
]

}


Mi sono imbattuto in quest'ultima settimana e l'ho risolto, ma non sono sicuro al 100% di ciò che ho fatto in modo corretto (utilizzo anche webflo / drupal-core-strict). Vorrei vedere una risposta definitiva a riguardo.
mpdonadio

Risposte:


3

Simile a @rreiss ho dovuto eliminare .lock. Questo è ciò che ha funzionato per me:

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 prima riga potrebbe essere unica per il tuo progetto, conferma cercando i percorsi di installazione nel tuo composer.json.


1

Mi sono appena imbattuto in questa stessa cosa. Per risolvere il problema, ho eseguito il backup / eliminazione della directory / vendor ed eseguito nuovamente 'aggiornamento del compositore' in modo che Composer scarichi nuovamente tutte le dipendenze. Penso che le dipendenze installate rispetto a quelle necessarie non siano sincronizzate.


2
Questo è il modo in cui finisco per risolvere problemi simili di Composer. La trovo una "soluzione" frustrante perché sembra un trucco. Se lo scopo di Composer è gestire le mie dipendenze, mi aspetto che DO Composer gestisca questo tipo di cose. Così com'è (con questa 'correzione'), Composer sembra più uno strumento per INSTALLARE le mie dipendenze Drupal. Ancora una volta questo sembra un hack lungo perché si suppone che sia un miglioramento rispetto al metodo "scarica la nuova zip e sovrascrivi l'attuale installazione di Drupal".
Romin Ronon

1
Ho riscontrato lo stesso problema e ho dovuto eliminare anche composer.lock .. drupal.org/node/2836351#comment-12056279
rreiss,

1

Ho avuto un problema molto simile durante il tentativo di aggiornamento da 8.3.7 a 8.4.0. Penso di aver trovato il colpevole.

Nel file composro.json DOCROOT, vedo le seguenti righe:

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

Quindi questo dirige il file composro.json DOCROOT a fare riferimento al core/composer.jsonfile e richiede anche quelle dipendenze. Il problema è che sta esaminando le dipendenze dalla versione attualmente installata di Drupal, mentre la versione aggiornata ha nuove dipendenze. Questo crea il conflitto che stiamo vedendo.

Ecco la soluzione che ho trovato che funziona. Esso non richiede di eliminare qualsiasi file o moduli.

1) Scarica una copia del core/composer.jsonfile dal tarball della versione di Drupal a cui stai eseguendo l'aggiornamento .

2) Nell'installazione corrente, sostituire il core/composer.jsonfile con la nuova versione appena scaricata.

3) Aggiorna il tuo file composro.json DOCROOT con "drupal / core: ~ 8.xx" (qualunque cosa tu stia aggiornando).

4) Esegui composer update --with-dependenciescome al solito. Questa volta, l'aggiornamento dovrebbe procedere. Quindi applicare gli aggiornamenti di database / entità, ricostruire la cache, ecc. Ecc.

Sono un utente di Windows e sicuramente più un costruttore di siti, quindi non proverò nemmeno a inviare prompt da riga di comando per fare queste cose in Linux. E non sono sicuro che si tratti di una soluzione "corretta", o anche del motivo per cui quel codice sopra blocca l'aggiornamento, ma questo è ciò che ha funzionato per me!


0

Solo notando che questo sembrava funzionare per me per l'aggiornamento di base da 8.2.3> 8.3.7. Nota la mia installazione di Drupal 8 ha usato questo: https://github.com/drupal-composer/drupal-scaffold che ha questa struttura di directory:

.git
.gitignore
composer.json
composer.lock
config
script
fornitore
web

  • Metti il ​​sito in modalità manutenzione: / admin / config / development / maintenance
  • Esegui questo comando nella radice del sito: rm -rf vendor && rm -rf web/core && rm -f composer.lock
  • Esegui questo comando nella radice del sito: composer require drupal/core:8.3.7 --update-with-dependencies
  • Vai su /update.php (o drush updb) ed esegui gli aggiornamenti. Dirà che ci sono 17 da eseguire. Probabilmente restituirà errori, in tal caso, vai su /update.php ed eseguirà nuovamente gli aggiornamenti (questa volta dirà che ci sono meno da eseguire). Vai alla home page al termine.
  • Controlla sul sito.
  • Portare il sito fuori dalla modalità di manutenzione: / admin / config / development / maintenance
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.