Der Composer kann bei der Verwendung von "install", aber nicht von "update" nicht in den installierbaren Paketsatz auflösen.

8

Hintergrund: Ich habe auf meinem Desktop ein neues Projekt mit Silex eingerichtet und meine composer.json-Datei mit den Abhängigkeiten eingerichtet, die ich brauche. Ich habe "composer.phar install" erfolgreich auf dem Desktop ohne Probleme ausgeführt.

Ich wechselte zu meinem Laptop, um an dem Projekt noch etwas zu arbeiten, klonte das Git Repo auf den Laptop und versuchte eine "composer.phar install" zu machen, erhielt aber folgende Nachricht:

%Vor%

Also habe ich stattdessen ein "composer.phar update" gemacht, und es hat funktioniert, aber ich wollte nicht, dass meine composer.lock-Datei aktualisiert wird.

Hat jemand anderes dieses Problem? Wenn nicht, kann jemand bitte erklären, was ich falsch mache?

Edit: Ich dachte, ich sollte wahrscheinlich darauf zurückkommen und die Frage aktualisieren. Ich habe dieses Problem seit geraumer Zeit nicht mehr gehabt. Ich weiß nicht, ob es ein Update für den Komponisten ist, der es repariert hat (die Leute müssen vielleicht kommentieren, um mich wissen zu lassen, ob sie immer noch dieses Problem haben) oder wenn ich jetzt mehr über Komponist gelernt habe, bin ich einfach Dinge so machen, dass ich nicht darauf stoße. So oder so habe ich diese Nachricht in fast anderthalb Jahren nicht gesehen, es sei denn, meine Paketspezifikation in composer.json wurde tatsächlich gebrochen.

    
Moismyname 08.09.2012, 15:56
quelle

1 Antwort

1

Hm, ich vermute, dass Sie eine Bibliothek verwenden, die auf einem Zweig basiert ( dev-master , dev-branch-name oder branch-name@dev ), auf den der Betreuer kürzlich einen Push gezwungen hätte (um den Zweig neu zu erstellen) zum Beispiel).

Versuchen Sie nach Möglichkeit, stabile Zweige zu verwenden (Zweige mit einer Version, die mit einem Tag verknüpft ist (v1.0.0, 1.0. *, usw.) .Wenn Sie nicht wissen, wo Sie suchen sollen, sollten Sie suchen Ihr Paket auf Packagist , und verwenden Sie eine Version, die nicht mit dev- beginnt, oder verwenden Sie einen @dev -Modifikator, um die Mindeststabilität auf zu setzen dev .

Natürlich ist es manchmal unvermeidbar. In diesem Fall können Sie jedoch den Betreuer der Bibliothek bitten, eine Version zu markieren. :)

Meine zweite Vermutung wäre, dass Sie auf Ihrem Computer verschiedene Bibliothekenversionen haben. Nehmen Sie zum Beispiel die symfony/icu -Bibliothek. Abhängig von der Version von Icu, die Sie auf Ihrem Computer haben, und abhängig von der Tatsache, dass Sie die Intl-Erweiterung auf Ihrem Computer aktiviert haben oder nicht, können Sie auf diese Probleme stoßen. Da der Composer versuchen wird, den composer.lock mit Ihrer alten Maschine abzugleichen, werden die Abhängigkeiten nicht aufgelöst, da die gesperrten Pakete eine Abhängigkeit benötigen, die Ihr System nicht hat. Eine einfache Möglichkeit, dies zu beheben, ist einfach die benötigte Erweiterung zu installieren.

    
Charles Sarrazin 21.04.2014, 02:43
quelle

Tags und Links