Aktualizacja rdzenia z wersji 8.2 do 8.3 za pośrednictwem kompozytora

9

Próbuję zaktualizować rdzeń Drupala do wersji 8.3, ale mam trudności.

Na dole strony znajduje się plik composer.json, od którego zaczynam.

Jeśli zmienię „drupal / core”: „~ 8.2” => „drupal / core”: „~ 8.3”, a następnie uruchomię composer update drupal/core --with-dependencies, otrzymuję następujące problemy, których nie jestem pewien, jak to rozwiązać, ponieważ nie są one zawarte w kompozytorze Plik .json, który zamieściłem poniżej.

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

oryginalny 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
źródło
Wpadłem na to w zeszłym tygodniu i naprawiłem to, ale nie jestem w 100% pewien, że to, co zrobiłem, było prawidłowe (używam również webflo / drupal-core-strict). Chciałbym zobaczyć ostateczną odpowiedź na ten temat.
mpdonadio

Odpowiedzi:

3

Podobnie jak @rreiss musiałem usunąć .lock. Oto, co zadziałało dla mnie:

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

wiersz pierwszy może być unikalny dla twojego projektu, potwierdź, wyszukując ścieżki instalatora w pliku composer.json.

powpow12
źródło
1

Właśnie wpadłem na to samo. Aby naprawić, utworzyłem kopię zapasową / usunąłem katalog / vendor i ponownie uruchomiłem „aktualizację kompozytora”, aby Composer ponownie pobierał wszystkie zależności. Wydaje mi się, że zainstalowane zależności vs. wymagane nie są zsynchronizowane.

Keith Savoie
źródło
2
W ten sposób naprawiam podobne problemy z kompozytorem. Uważam to za frustrujące „rozwiązanie”, ponieważ wydaje się być hackem. Jeśli celem Kompozytora jest zarządzanie moimi zależnościami, NALEŻY oczekiwać, że Kompozytor zajmie się tego rodzaju sprawami. W tej chwili (z tą „poprawką”) Composer wydaje się bardziej narzędziem do ZAINSTALOWANIA moich zależności Drupala. Znowu wydaje się, że jest to długi hack, ponieważ ma to być ulepszenie w stosunku do metody „pobierz nowy zip i zastąp istniejącą metodę instalacji Drupala”.
RominRonin
1
Wystąpił
rreiss
1

Miałem bardzo podobny problem podczas próby aktualizacji z 8.3.7 do 8.4.0. Myślę, że znalazłem winowajcę.

W pliku DOCROOT composer.json widzę następujące wiersze:

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

To powoduje, że plik DOCROOT composer.json odwołuje się do core/composer.jsonpliku, a także wymaga tych zależności. Problem polega na tym, że patrzy na zależności od aktualnie zainstalowanej wersji Drupala, podczas gdy uaktualniona wersja ma nowe zależności. To tworzy konflikt, który widzimy.

Oto znalezione przeze mnie rozwiązanie, które działa. Robi nie wymagają usuwania plików ani modułów.

1) Pobierz kopię core/composer.jsonpliku z tarballa wersji Drupala, na którą aktualizujesz .

2) W bieżącej instalacji, zastąpić ten core/composer.jsonplik z nową wersją po prostu pobrać.

3) Zaktualizuj plik DOCROOT composer.json za pomocą „drupal / core: ~ 8.xx” (cokolwiek aktualizujesz).

4) Uruchom composer update --with-dependenciesjak zwykle. Tym razem aktualizacja powinna być kontynuowana. Następnie zastosuj aktualizacje bazy danych / encji, odbuduj pamięć podręczną itp. Itp.

Jestem użytkownikiem systemu Windows i zdecydowanie bardziej jestem twórcą stron, więc nawet nie będę próbował publikować wierszy poleceń w celu wykonania tych czynności w systemie Linux. I nie jestem pewien, czy jest to „właściwe” rozwiązanie, czy nawet dlaczego powyższy kod blokuje aktualizację, ale to mi się udało!

Tynan Fox
źródło
0

Po prostu zauważam, że to wydawało się działać dla mnie w przypadku aktualizacji rdzenia z wersji 8.2.3> 8.3.7. Uwaga: moja instalacja Drupal 8 używała tego: https://github.com/drupal-composer/drupal-scaffold, który ma następującą strukturę katalogów:

.git
.gitignore
composer.json
composer.lock skrypty
konfiguracyjne dostawcy WWW


  • Przełącz witrynę w tryb konserwacji: / admin / config / development / Maintenance
  • Uruchom to polecenie w katalogu głównym witryny: rm -rf vendor && rm -rf web/core && rm -f composer.lock
  • Uruchom to polecenie w katalogu głównym witryny: composer require drupal/core:8.3.7 --update-with-dependencies
  • Przejdź do /update.php (lub drush updb) i uruchom aktualizacje. To powie, że jest 17 do uruchomienia. Prawdopodobnie zwróci błędy, jeśli tak, przejdź do /update.php i ponownie uruchom aktualizacje (tym razem powie, że jest mniej do uruchomienia). Po zakończeniu przejdź do strony głównej.
  • Sprawdź na stronie.
  • Wyjmij witrynę z trybu konserwacji: / admin / config / development / Maintenance
Richard Hood
źródło