Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage zu Composer Workflow

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #31
    Das sollte bei verantwortlicher Definition der Requirements, also eben nicht "*" o.ä. aber auch nicht vorkommen.
    Das hat nichts mit verantwortlichen Requirements-Definitionen zu tun. Das kannst Du überhaupt nicht beeinflussen.

    Ein Beispiel:

    Dactrine ORM2.4 composer.json
    https://github.com/doctrine/doctrine.../composer.json

    Code:
    "require": {
            "php": ">=5.3.2",
            "ext-pdo": "*",
            "doctrine/collections": "~1.1",
            "doctrine/dbal": "~2.4",
            "symfony/console": "~2.0"
    }
    Du könntest Doctrine jetzt in Deinem Projekt also wie folgt einbinden:

    Code:
        "require": {
            "doctrine/orm": "2.4"
        }

    Wenn Du nun composer install auf einem System mit z.B. php5.3.2 ausführst dann würde Dir der Composer korrekterweise automatisch symfony/console 2.0 (setzt php 5.3.2 voraus) installieren
    Bei php 5.4.x wird jedoch (aktuell) symfony/console 2.7 (setzt php 5.3.9 voraus) installiert.

    Die Abhängigkeiten in der Doctrine-Json haben alle ein Tilde voreingestellt, es wird also immer das aktuellste Paket, welches auf der jeweiligen PLATTFORM noch installierbar ist (also dort wo der composer ausgeführt wird) zwischen der Versionsnummer >=2.0 und <3.0 ( bei "symfony/console": "~2.0") automatisch vom composer durch die Plattforminformation bestimmt und installiert!

    D.h. wenn Dein Vendor auf einem Build-Server mit php5.4.x gebaut wird, dann wird symfony/console 2.7 installiert und diese wird auf einem Produktiv-Server mit z.B. php5.3.3 nicht laufen (trotz "require" doctrine/orm: 2.4 mit "php": ">=5.3.2"). Solltest Du versuchen Vendor direkt auf dem Produktiv-Server mit composer install (zusammen mit composer.lock) zu installieren, dann würde der Composer das Problem zumindest erkennen und der Installationsprozess würde mit einer entsprechenden Meldung dass die Requirements nicht erfüllt werden abgebrochen werden.

    vg
    jack
    -

    Kommentar


    • #32
      Danke für das anschauliche Beispiel, da bin ich ja froh dass mir so etwas bisher nicht passiert ist. Ich habe gerade nochmal in die Dokumentation zu --ignore-platform-reqs geschaut, eigentlich ohne große Hoffnung, weil du das Problem damit ja erst recht hast, aber bin auf etwas interessantes gestoßen:

      https://getcomposer.org/doc/04-schema.md#config

      • platform: Lets you fake platform packages (PHP and extensions) so that you can emulate a production env or define your target platform in the config. e.g. {"php": "5.4", "ext-something": "4.0"}.
      Das ist doch genau das, was du suchst oder?
      @fschmengler - @fschmengler - @schmengler
      PHP Blog - Magento Entwicklung - CSS Ribbon Generator

      Kommentar


      • #33
        Danke für das anschauliche Beispiel, da bin ich ja froh dass mir so etwas bisher nicht passiert ist.
        Gern geschehen, ich hatte da leider nicht so viel Glück, aber nichts für Ungut Ich glaube ehrlich gesagt, daß sehr vielen, wenn nicht den meisten Entwicklern die Composer nutzen, diese Problematik nicht bewusst ist. Wäre ich nicht durch Zufall darüber gestolpert, wäre mir das höchstwahrscheinlich auch nie aufgefallen Ich danke Dir, dass Du Dir die Mühe gemacht hast Dich mit dem Problem auseinanderzusetzen und nach einer Lösung zu suchen.

        Das ist doch genau das, was du suchst oder?
        YES, exakt, endlich!!!! Das Platform-Feature ist gerade mal 6 Tage alt - wenn ich es richtig sehe. Vielen Dank für den Hinweis, ich habe damit ehrlich gesagt nicht mehr gerechnet!
        VG
        jack
        -

        Kommentar

        Lädt...
        X