Composer Update Shop auf 6.3.0 - symfony/filesystem[v4.4.21]

Hallo
Ich habe gerade mit dem composer meinen Shop von 6.2.3 auf 6.2.4 gehoben, weil das Update auf 6.3 nicht funktioniert hat.
Wenn ich jetzt von 6.2.4 auf 6.3.0 updaten will kommt allerdings der gleiche Fehler wie zuvor mit 6.2.3.

Your requirements could not be resolved to an installable set of packages.

Problem 1
- Installation request for oxid-esales/oxideshop-metapackage-ce v6.3.0 → satisfiable by oxid-esales/oxideshop-metapackage-ce[v6.3.0].
- oxid-esales/oxideshop-ide-helper v3.1.2 requires symfony/filesystem ^3.3 → satisfiable by symfony/filesystem[v3.4.47, v3.3.0, v3.3.1, v3.3.10, v3.3.11, v3.3.12, v3.3.13, v3.3.14, v3.3.15, v3.3.16, v3.3.17, v3.3.18, v3.3.2, v3.3.3, v3.3.4, v3.3.5, v3.3.6, v3.3.7, v3.3.8, v3.3.9, v3.4.0, v3.4.1, v3.4.10, v3.4.11, v3.4.12, v3.4.13, v3.4.14, v3.4.15, v3.4.16, v3.4.17, v3.4.18, v3.4.19, v3.4.2, v3.4.20, v3.4.21, v3.4.22, v3.4.23, v3.4.24, v3.4.25, v3.4.26, v3.4.27, v3.4.28, v3.4.29, v3.4.3, v3.4.30, v3.4.31, v3.4.32, v3.4.33, v3.4.34, v3.4.35, v3.4.36, v3.4.37, v3.4.38, v3.4.39, v3.4.4, v3.4.40, v3.4.41, v3.4.42, v3.4.43, v3.4.44, v3.4.45, v3.4.46, v3.4.5, v3.4.6, v3.4.7, v3.4.8, v3.4.9].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.35].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.36].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.37].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.38].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.39].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.40].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.41].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.42].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.43].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.44].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.45].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.46].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.47].
- Can only install one of: symfony/filesystem[v4.4.21, v3.3.0].
- Can only install one of: symfony/filesystem[v4.4.21, v3.3.1].
- Can only install one of: symfony/filesystem[v4.4.21, v3.3.10].
- Can only install one of: symfony/filesystem[v4.4.21, v3.3.11].
- Can only install one of: symfony/filesystem[v4.4.21, v3.3.12].
- Can only install one of: symfony/filesystem[v4.4.21, v3.3.13].
- Can only install one of: symfony/filesystem[v4.4.21, v3.3.14].
- Can only install one of: symfony/filesystem[v4.4.21, v3.3.15].
- Can only install one of: symfony/filesystem[v4.4.21, v3.3.16].
- Can only install one of: symfony/filesystem[v4.4.21, v3.3.17].
- Can only install one of: symfony/filesystem[v4.4.21, v3.3.18].
- Can only install one of: symfony/filesystem[v4.4.21, v3.3.2].
- Can only install one of: symfony/filesystem[v4.4.21, v3.3.3].
- Can only install one of: symfony/filesystem[v4.4.21, v3.3.4].
- Can only install one of: symfony/filesystem[v4.4.21, v3.3.5].
- Can only install one of: symfony/filesystem[v4.4.21, v3.3.6].
- Can only install one of: symfony/filesystem[v4.4.21, v3.3.7].
- Can only install one of: symfony/filesystem[v4.4.21, v3.3.8].
- Can only install one of: symfony/filesystem[v4.4.21, v3.3.9].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.0].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.1].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.10].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.11].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.12].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.13].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.14].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.15].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.16].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.17].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.18].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.19].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.2].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.20].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.21].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.22].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.23].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.24].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.25].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.26].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.27].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.28].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.29].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.3].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.30].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.31].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.32].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.33].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.34].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.4].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.5].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.6].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.7].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.8].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.9].
- Can only install one of: symfony/filesystem[v4.4.21, v3.4.47].
- oxid-esales/oxideshop-metapackage-ce v6.3.0 requires symfony/filesystem v4.4.21 → satisfiable by symfony/filesystem[v4.4.21].
- Installation request for oxid-esales/oxideshop-ide-helper ^v3.1.2 → satisfiable by oxid-esales/oxideshop-ide-helper[v3.1.2].

Running update with --no-dev does not mean require-dev is ignored, it just means the packages will not be installed. If dev requirements are blocking the update you have to resolve those problems.

Leider habe ich vom composer und diesen Komponenten überhaupt keine Ahnung.
Verstehe ich das richtig, dass ich eine höhere Version von Symfony brauche!?
Wenn ja wie installiere ich das mit dem composer.
… oder muss ich irgendwie eine der vielen Versionen wählen / angeben?
… oder was ist hier zu tun?

Danke an Euch ALLE im Voraus!

Hast

composer update

probiert?

Jetzt JA
Gleiche Meldung.

EDIT: @rubbercut PHP 7.4.14 (cli) (built: Jan 22 2021 13:30:29) ( NTS ) :wink:

Zwei Probleme

  1. Du solltest bei Update immer mit composer udpate --no-dev arbeiten, wenn Du mit den Entwicklungspaketen nicht arbeitest

  2. Ist mit dem Versionsupdate vieles unter Dev-Requirements geändert z.B. auch die Version von oxid-esales/oxideshop-ide-helper sich geändert. Dieses Packages wird in Deiner Fehlermeldung bemängelt wird, dass nicht kompatibel mit anderen Paketen. Dies wurde anscheinend schon beim vorherigen Update vergessen… Update from 6.1.x to 6.2.0 — OXID eShop 6.2 | User documentation

Herleitung

Tipp bei einem Update ist ein Vergleich der Packages in der composer.json sinnvoll. Gebe zu dies hätte ich auch nicht gleich als Erstes auf den Schirm gehabt.

Probier es mal aus mit --no-dev laufen zu lassen bzw. die Dev-Requirements entsprechen zu ändern.

Danke @indianer3c

von da komme ich ja aus der Anleitung: composer update --no-plugins --no-scripts --no-dev

Sehe ich das richtig, dass oxid-esales/oxideshop-ide-helper nicht installiert wird, da das symfony/filsystem nicht installiert / kompatibel ist?
…und wenn ja… kann ich einfach die Einträge:
“symfony/event-dispatcher”: “^3.4”,
“symfony/dependency-injection”: “^3.4.26”,
“symfony/config”: “~3.3|~4.0”,
“symfony/yaml”: “~3.4|~4.0”,
“symfony/expression-language”: “^3.4”,
“symfony/lock”: “^3.4”,
“symfony/console”: “^v3.4.15”,
“webmozart/path-util”: “^2.3”,
“symfony/finder”: “^3.4”,
“symfony/filesystem”: “^3.4”,
“oxid-esales/flow-theme”: “^v3.4.1”,
in die composer.json reineditieren?
oder sollte ich einmalig die komplette:

übernehmen?

Wenn man wie in der Dokumentation Standard-Update — OXID eShop 6.3 | Anwenderdokumentation
‘composer require --no-update oxid-esales/oxideshop-metapackage-ce:v6.3.0’
ausführt, ändert sich zwar die OXID Version aber nicht die Abhängigkeiten unter “require-dev”! So gewollt oder Bug?
Entweder man löscht den Teil ganz, wenn der nicht gebraucht wird oder ändert händisch.

Ja, der --no-dev Parameter dazu da Pakete die nur zur Entwickung benötigt werden wegzulassen weil die für den LIVE Betrieb des Shops nicht notwendig.

Dies mag ein Grund sein, oder weil sich das Rad weiter dreht und diese Pakete zur Entwicklung nicht mehr benötigt werden.

Nein, man macht dort einen Vergleich was sich geändert und ändert nur die Stellen welche für den jeweilgen Shop relevant sind.

Die composer.json ist für jeden Shop mit der Zeit individuell und anders. Weil jeder Shop andere Module nutzt, andere Pakete…

Das kein Bug, dies war schon immer so. Der --no-update Paramter sorgt nur dafür, dass nach Aktualisierung der composer.json nicht anschließend das Vendor Verzeichnis aktualisiert wird. Dies passiert im nachgelagerten Update Schritt.

Dies kann man machen wie man möchte, man ist dort frei in seiner Entscheidung.

Wenn eine neue Version, hier die v6.3.0 neue Abhängigkeiten verlangt, dann müssen die doch aber auch in der composer.json geändert werden!
Ansonsten passiert beim 2. Update Schritt das:

’ Problem 1
- Root composer.json requires oxid-esales/oxideshop-ide-helper ^v3.1.2 → satisfiable by oxid-esales/oxideshop-ide-helper[v3.1.2].
- oxid-esales/oxideshop-ide-helper v3.1.2 requires composer-plugin-api ^1.1.0 → found composer-plugin-api[2.0.0] but it does not match the constraint.
Problem 2
- oxid-esales/testing-library[v7.2.0, …, v7.3.0] require symfony/filesystem ^3.0 → satisfiable by symfony/filesystem[v3.0.0, …, v3.4.47].
- You can only install one version of a package, so only one of these can be installed: symfony/filesystem[v2.3.0, …, v2.8.52, v3.0.0, …, v3.4.47, v4.0.0, …, v4.4.22, v5.0.0, …, v5.2.7].
- oxid-esales/oxideshop-metapackage-ce v6.3.0 requires symfony/filesystem v4.4.21 → satisfiable by symfony/filesystem[v4.4.21].
- Root composer.json requires oxid-esales/oxideshop-metapackage-ce v6.3.0 → satisfiable by oxid-esales/oxideshop-metapackage-ce[v6.3.0].
- Root composer.json requires oxid-esales/testing-library ^v7.2.0 → satisfiable by oxid-esales/testing-library[v7.2.0, v7.3.0].

Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.

You are using Composer 2, which some of your plugins seem to be incompatible with. Make sure you update your plugins or report a plugin-issue to ask them to support Composer 2.
Running update with --no-dev does not mean require-dev is ignored, it just means the packages will not be installed. If dev requirements are blocking the update you have to resolve those problems.

Ist das nur bei mir so? Kann ich fast nicht glauben!

Wenn man
“require-dev”: {
“oxid-esales/testing-library”: “^v8.0.0”,
“incenteev/composer-parameter-handler”: “~v2.0”,
“oxid-esales/oxideshop-ide-helper”: “^v4.1.0”
}, in der composer.json händisch ändert funktionioniert das Update!

Ja, die Composer Dateien composer.json und composer.lock sind doch entscheidend.

Man kann die composer.json über die CLI ändern oder manuell.

Die composer.lock ist wichtig um den identischen Versionsstand installieren zu können.

Ah okay, dann muss man auch die Dev-Requirements aktualisieren.

Was kannst du nicht glauben?

Das nur bei mir das Update hängen bleibt, wenn ich mich an die Doku halte.

Ich denke, Du bist nicht allein.

hi all

ich bin hier auch hängen geblieben und habe mich geärgert, dass die Doku zum Update von 6.2.x auf 6.3.0 nicht aktualisiert wurde. Ich habe mir dann die Infos aus der json einer Neu- Installation geholt.

Die Antwort ist oben zwar schon gegeben aber hier mal dennoch noch die Änderungen im require-dev:

“require-dev”: {
“oxid-esales/testing-library”: “^v8.0.0”,
“incenteev/composer-parameter-handler”: “^v2.0.0”,
“oxid-esales/oxideshop-ide-helper”: “^v4.1.0”,
“oxid-esales/azure-theme”: “^v1.4.2”
},

Damit hat das Composer update dann geklappt.

Warum habe ich mich geärgert? Weil ich kein hauptberuflicher Entwickler (sondern technischer Redakteur) bin und bei der Pflege des Shops auf saubere Dokumentation angewiesen bin. Ich habe daher die Bitte an das Oxid Team, diese Updates immer zeitnah auch zu dokumentieren…

3 Likes

Danke, das gebe ich so weiter. Wenn einem so etwas auffällt, kann man auch selbst Hand anlegen und hier einen Pull Request schicken :wink:
https://github.com/OXID-eSales/developer_documentation/blob/b-6.3/update/update-from-6.1.x-to-6.2.0.rst

Glaube hier gewaltig was durcheinander geraten siehe auch Update CE 6.1 auf CE 6.2: Version testing-library

Zum Verständnis wenn man sich das Projekt ausscheckt am Beispiel einer OXID eShop Community Edition 6.2 Serie

  1. dann nimmt man den Branch “b-6.2-ce” https://github.com/OXID-eSales/oxideshop_project/blob/b-6.2-ce/composer.json#L10 in diesem ist die Metapackage Version definiert “6.2.4”

  2. Metapackage Tag Version 6.2.4 https://github.com/OXID-eSales/oxideshop_metapackage_ce/blob/v6.2.4/composer.json#L117 enthält die Versionsnummer vom Shop

  3. Shop Versionsnummer Dev-Requires für die Test-Library https://github.com/OXID-eSales/oxideshop_ce/blob/v6.7.0/composer.json#L37

Update: Hat sich im anderen Ticket gelöst, das Caret ^ stellt sicher, dass immer die neuste Version genommen wird von 7.0 bis 7.3. Aber ab 8.0 Version braucht es eine Anpassung in der composer.json.

@akademiker super habe das gleiche Problem mit deiner Antwort lösen können. Composer update … lief durch.

Bis auf einige gelbe Hinweise nach $ composer update --no-dev

Package phpunit/php-token-stream is abandoned, you should avoid using it. No replacement was suggested.
Package sebastian/resource-operations is abandoned, you should avoid using it. No replacement was suggested.

und 

Class Incenteev\ParameterHandler\ScriptHandler is not autoloadable, can not call post-update-cmd script

Außerdem stelle ich gerade fest das bei einigen Sachen im Backend Bereich (Admin-GUI) statt des angewählten Punktes einfach die Front-End-Seite angezeigt wird. Bis jetzt so bei den Modulen und bei Diagnosewerkzeug nach klick auf Diagnose starten.

oje, wie immer ganze Arbeit. Nochmals ein ‘composer update’ los gelassen, seither Page nicht mehr erreichbar bzw. nur noch weise leere Seite. Und das im Front sowie Backend. Sauber und nun??

Log-Datei einsehen.

in der error.log steht unter anderem folgendes:

Stack trace:
#0 /myhome/my_oxid_eshop_project/vendor/composer/autoload_real.php(75): Composer\Util\ErrorHandler::handle(2, 'require('/myhome/...', 75, Array)
#1 /myhome/my_oxid_eshop_project/vendor/composer/autoload_real.php(75): require()
#2 /myhome/my_oxid_eshop_project/vendor/composer/autoload_real.php(65): composerRequire123225b2628faa9c66fe09094c82cb07('25072dd6e247008...', '/myhome/...')
#3 /myhome/my_oxid_eshop_project/vendor/autoload.php(7): ComposerAutoloaderInit123225b2628faa9c66fe09094c82cb07::getLoader()
#4 /myhome/my_oxid_eshop_project/vendor/oxid-esales/oxidesho in /myhome/my_oxid_eshop_project/vendor/composer/autoload_real.php on line 75
[26-Jul-2021] PHP Fatal error:  composerRequire123225b2628faa9c66fe09094c82cb07(): Failed opening required '/myhome/my_oxid_eshop_project/vendor/composer/../symfony/polyfill-php72/bootstrap.php' (include_path='/myhome/my_oxid_eshop_project/vendor/symfony/yaml:.:/opt/alt/php73/usr/share/pear') in /myhome/my_oxid_eshop_project/vendor/composer/autoload_real.php on line 75

Puuuh. Ich würde den vendor löschen oder umbenennen und

composer update --no-dev

versuchen.