OXID eShop Update ab v6.0.0

Hey Frank,

Wir nutzen “Exact Version Contraints”, weil wir wollen, dass die Versionen kontrolliert ausgerollt werden können. Insofern ist der Schritt 1 notwendig.

Weiss ich nicht ^^
–no-dev wird eigentlich nur in der Produktivumgebung benötigt. Sollte man mal noch so in der Update-Anleitung dokumentieren…

Dann sollte in der Anleitung stehen, dass das “^” vor dem 6.0.0 weg muss. Dann kann man die Updates kontrollieren und auf die Version updaten, auf die man will.

Oder liege ich falsch? :roll_eyes:

Bzw in der Version die ich nutze wird eben kein Exact Version Contrains benutzt. Wird das geändert oder muss das jeder selbst ändern?

Du hat recht: Ich hab grad beide Varianten, also Caret Version Range (ziehe automatisch alles bis zur nächsten Major) wie auch Exact Version Contraint gefunden. Ich versuch mal, dazu noch mehr Infos ranzubekommen bzw. das ggf. auch in Code oder Doku etwas konsistenter gestalten zu lassen :wink:

1 Like

In der Installationsanleitung ist --no-dev der Standard, Installation mit Dev-Tools wird in einem Extra Abschnitt beschrieben.

Hm also oxid-esales/oxideshop-metapackage ist doch immer mit caret.

Lass uns nächste Woche nochmal per PN besprechen, Frank, damit dort etwas mehr Klarheit reinkommt :wink:

@Martin-Hot, ich schliesse mich voll Deiner Meinung an.
Da wir hier ja in einer Diskussion stehen, wie ein Update mit composer läuft und wo es hakt, gebe ich mal meine Erfahrung dazu:
Testumgebung Server Debian 8.

  1. Jan-2018 Server verfügbare php 5.6, 7.0, 7.1
    Oxid Installation v600 in Verzeichnis mit php 7.0
    Composer installiert alles problemlos.

  2. Feb-2018 Server verfügbare php 5.6, 7.0, 7.1, 7.2 (also autom. neu 7.2. nach ServerUpdate)
    Oxid Update v600 auf v601 in Verzeichnis mit php 7.0

composer update --no-plugins --no-scripts
Your requirements could not be resolved to an installable set of packages.

Problem 1
- amzn/amazon-pay-sdk-php 3.1.0 requires ext-curl * -> the requested PHP extension curl is missing from your system.
- amzn/amazon-pay-sdk-php 3.1.0 requires ext-curl * -> the requested PHP extension curl is missing from your system.
- oxid-esales/oxideshop-metapackage-ce v6.0.1 requires amzn/amazon-pay-sdk-php 3.1.0 -> satisfiable by amzn/amazon-pay-sdk-php[3.1.0].
- Installation request for oxid-esales/oxideshop-metapackage-ce ^v6.0.1 -> satisfiable by oxid-esales/oxideshop-metapackage-ce[v6.0.1].

To enable extensions, verify that they are enabled in your .ini files:
- /etc/php/7.2/cli/php.ini
- /etc/php/7.2/cli/conf.d/10-opcache.ini


PROBLEM-LÖSUNG:
php -v zeigt php 7.2 ist Server default.
A. Dann setze ich Server default auf php 7.0
Damit läuft das Update natürlich problemlos.
B. Oder müsste die composer.phar in jedem Shop-Verzeichnis mit verschiedener php-Version liegen?
Das habe ich noch nicht getestet.

Für Oxid 600 sollte aber im Verzeichnis unter php 7.0 ein Update möglich sein.

Wie dem auch sei, eine GUI-Lösung mit Optionen wäre auf jeden Fall einfacher = userfreundlich.

Da steht doch genau, wo das Problem ist: die curl-Extension für PHP 7.2 ist nicht installiert. :wink:
Einfach mit apt install php7.2-curl installieren

Das ist schon klar so wie es dort steht aber Oxid 600 braucht doch überhaupt keine php7.2 (die durch ein ServerUpdate autom. installiert wurde) sondern php7.0, die ja im Shopverzeichnis eingestellt ist. Wozu hängt er sich daran auf? Der Shop läuft in dieser Situation problemlos nur das Update nicht.

Das hat mit dem Verzeichnis nichts zu tun, wenn durch das Update PHP 7.2 als CLI eingestellt ist, nutzt Composer das auch

Caret wird entfernt, und wir nutzen bis auf Weiteres nur fixed version :wink:

1 Like

Darf ich wissen wo man die Infos her bekommt? Wäre super zu wissen welche Version immer die aktuelle ist.

1 Like

Ja natürlich:

Allerdings bin ich mit dem Release wahrscheinlich erst morgen durch. Die Jungs schauen schon mal direkt auf GitHub nach oder werden bei (PE/EE/Partner-Agenturen) direkt per E-Mail benachrichtigt.

1 Like

Danke erstmal, aber ich habe eigentlich nach nem Link gesucht (wie das: https://github.com/OXID-eSales/development-wiki/blob/master/shop/changelog/changelog_v6.0.1.rst) das man öffentlich einsehen kann.

Leider sind die Changes alle privat und demnach kann ich damit nichts anfangen.
Bei Git schaue ich selbst regelmäßig nach und werde auch bei Updates benachrichtigt, wenn ich die composer.json von Git ansehe sehe ich leder nicht direkt welche Versionen das benötigt und weiß demnach nicht was ich eintragen muss.

Mein Problem ist aktuell, dass alles eben bei OXID gehalten wird und das ist auch ok, aber manche Infos sollte man eben ohne erst nachfragen zu müssen erreichen können, gerade was man zum Updaten benötigt.

Die aktuellen Infos für 6.1.0 (ja man weis jetzt nicht ob ich 6.0.1 oder 6.1.0 meine :joy:) die habe ich von deinem Artifact, mega fettes Danke an dich nochmal an der Stelle! :heart:

Oh - hab jetzt grad erst auf meinen eigenen Link geklickt und gesehen, worum es eigentlich geht. Du meinst so etwas hier, oder? https://github.com/OXID-eSales/oxideshop_metapackage_ce/blob/v6.1.0/composer.json

Das Metapackage schiesst Dir im Grunde alle Komponenten der Compilation zusammen. Du kannst Dich dort natürlich wie gewohnt innerhalb der Branches und Tags bewegen. Releases ist aber eigentlich am spannendsten: https://github.com/OXID-eSales/oxideshop_metapackage_ce/releases. Beweg Dich dort einfach mal über den Link hinter a58083f rein :wink:

Passt das so?

Ja und nein.

Das ist ja genau das, was ich damit meinte:

Um erfolgreich upzudaten (von 6.0.x auf 6.1.x) muss man nicht nur (wie von 6.0.x auf 6.0.x) oxid-esales/oxideshop-metapackage-ce auf verändern, sondern auch die anderen Abhängigkeiten.

Also auch folgendes:

"require-dev": {
    "oxid-esales/testing-library": "^v5.0.3",
    "oxid-esales/coding-standards": "^v3.0.5",
    "incenteev/composer-parameter-handler": "~v2.0",
    "oxid-esales/oxideshop-ide-helper": "^v3.1.1",
    "oxid-esales/azure-theme": "^v1.4.1"
  }

Bei dem Update auf 6.1.0 gibt es sonst folgenden Fehler (Danke @Earlybird) FEHLER

Woher soll ich bitte die Infos bekommen um erfolgreich das Update durch zu führen?
Momentan müsste ich 6.1.0 frisch irgendwo installieren um dort die composer.json auszulesen.
Gottseidank stellst du die Artifacts (oder Artifakte?) zur Verfügung, welche die richtige (compilierte?) composer.json beinhaltet, die mir die Wertvollen Infos liefert, auf welche Version en ich die Abhängigkeiten setzen muss, damit das Update funktioniert.

Hier nochmal zum Vergleich, damit das Problem klar wird.

Aus der composer.json von Git bekomme ich nicht die benötigten Infos die ich brauche (aus der fertig kompilierten aber schon → composer.json, die gibt es aber ohne Artifacts nirgends!) um meine composer.json im Livesystem zu editieren damit ich das Update erfolgreich ausführen kann. Und ohne die Infos funktioniert das Update (auf 6.1.0) nicht.
Von 6.0.x auf 6.0.x musste man die composer.json eigentlich nicht mal editieren, jetzt schon.

Ich hoffe nun ist klar, was ich meine ansonsten können wir gerne privat schreiben will hier nicht voll spammen.

Meiner Meinung nach sollten sich die Abhängigkeiten jedoch mit jedem Update selbst verändern, denn dazu ist ja der composer da?

tl;dr : Um auf 6.1.0 upzudaten brauchen wir diesmal mehr Infos, die wir nicht bekommen, ohne Infos gehts nicht.
Infos kann man bekommen wenn man mit deutlichem Mehraufwand extra irgendwo eine frische Installation aufsetzt, nur um an die compilierte composer.json zu gelangen.

Nachtrag: (kann mein Post oben irgendwie nicht bearbeiten)

Die meisten Infos sind ja vorhanden, diese jedoch nicht:

"oxid-esales/testing-library": "^v5.0.3"

Diese Info steht nicht in der composer.json von Git, der Rest steht drin.

Muss mich korrigieren, die Infos sind tatsächlich alle vorhanden… #shameOnMe!
"oxid-esales/testing-library" steht mit "dev-master" drin und die aktuelle Version ist momentan 5.0.3 …

Heißt: streng genommen sind alle Infos da, dass Problem selber besteht trotzdem.
Und zwar ist das folgendes Problem: wenn man auf 6.0.x ist und (wie in der Anleitung)

composer update --no-plugins --no-scripts
composer update

ausführt, dann wird nicht geupdated, weil man händisch Änderungen in der composer.json vornehmen muss. (sonst Fehler)
Ich bin mir nicht zu fein dafür und werde dass in Zukunft auch so machen, aber eventuell sollte man sich da etwas überlegen um das eben nicht immer machen zu müssen, denn die zwei Befehle sollten für ein Update ausreichen.

Damit wäre die Anleitung auch nicht vollständig, bzw man sollte erwähnen dass man nicht nur oxid-esales/oxideshop-metapackage anpassen muss, sondern auch alle anderen Abhängigkeiten.

@Marco,

unter den beiden Links, die Du angibst, stehen in der composer.json die erforderlichen Daten für ein Update gar NICHT drin, sondern nur in der Compilation 6.1.0 zip, wenn man diese runterlädt/entpackt - sonst ist das nirgend wo zu finden. Und daraus muss man aber nur folgenden Teil in der “eigenen” composer.json austauschen:

  "require": {
"oxid-esales/oxideshop-metapackage-ce": "v6.1.0"

},
“require-dev”: {
“oxid-esales/testing-library”: “^v5.0.3”,
“oxid-esales/coding-standards”: “^v3.0.5”,
“incenteev/composer-parameter-handler”: “~v2.0”,
“oxid-esales/oxideshop-ide-helper”: “^v3.1.1”,
“oxid-esales/azure-theme”: “^v1.4.1”
},

D.h. diese Codeblöcke müssten per composer Updatebefehl automatisch ersetzt werden und damit wäre ein Update kein Problem mehr.

Wenn ich versuche den Shop von Oxid v6.1.0 auf "oxid-esales/oxideshop-metapackage-ce": "^v6.1.2", mit der Anleitung zu updaten, bleibt dieser Frontend/Backend im Maintance Modus, obwohl erstmal alles ohne error durchläuft. Habe jetzt auf v6.1.0 zurückgesetzt. Nutzen PHP 7.1 .

Und in der Log Datei von Oxid steht auch nichts?

Danke.
Hab es eben nochmals probiert und es klappte, hatte aber im Vorfeld das Wave Themen manuell installiert.:slightly_smiling_face: