2016-10-27 1 views
0

Ich habe mehrere Pakete. Einer hängt von einem virtuellen Paket ab, das zwei der anderen zur Verfügung stellen. Der Einfachheit halber konzentriere ich mich nur auf PaketA (Paket, das das Virtuelle benötigt) und PaketB (eines der Pakete, die das Virtuelle bereitstellen).mynamespace/packageA 1.0.x-dev erfordert mynamespace/package-virtual 1.0 -> kein passendes Paket gefunden

PackageA

{ 
    "require": { 
     "mynamespace/package-virtual": "1.0" 
    }, 
    "suggest": { 
     "mynamespace/packageB": "PackageB provides package-virtual", 
     "mynamespace/packageC": "PackageC also provides package-virtual and can be installed with or without PackageB being present" 
    }, 
    "minimum-stability": "dev" 
} 

Paket B

{ 
    "provide": { 
     "mynamespace/package-virtual": "1.0" 
    }, 
    "minimum-stability": "dev" 
} 

Das alles hat gut funktioniert, während ich dev-Master als Voraussetzung für beide packges in meiner Anwendung verwenden, die beide dieser Pakete :

MyAPP mit dev-Master

{ 
    "require": { 
     "mynamespace/packageA": "dev-master", 
     "mynamespace/packageB": "dev-master" 
    }, 
    "minimum-stability": "dev", 
    "prefer-stable": true 
} 

Allerdings, wenn ich 1.0.0-rc1 auf jedem Paket markiert und versucht, meine dev Anforderung zu ändern Komponisten 1.0.x-dev begann beschweren, dass es nicht mynamespace/package-virtual

myApp finden konnten mit 1.0.x-dev

{ 
    "require": { 
     "mynamespace/packageA": "1.0.x-dev", 
     "mynamespace/packageB": "1.0.x-dev" 
    }, 
    "minimum-stability": "dev", 
    "prefer-stable": true 
} 

Lauf Komponist Update

# composer update 
Loading composer repositories with package information 
Updating dependencies (including require-dev) 
Your requirements could not be resolved to an installable set of packages. 

    Problem 1 
    - Installation request for mynamespace/packageA 1.0.x-dev -> satisfiable by mynamespace/packageA[1.0.x-dev]. 
    - mynamespace/packageA 1.0.x-dev requires mynamespace/package-virtual 1.0 -> no matching package found. 

Potential causes: 
- A typo in the package name 
- The package is not available in a stable-enough version according to your minimum-stability setting 
    see <https://getcomposer.org/doc/04-schema.md#minimum-stability> for more details. 

Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further common problems. 

Dinge, die ich habe bereits versucht

  • Ändern die Linie erfordert für MyNamespace/Paket-virtuelle^1.0 in MyNamespace/Paket A
  • Ändern der erfordert Linie für MyNamespace/Paket-virtual bis 1,0 . * in MyNamespace/Paket A
  • Ändern der liefert Linie für MyNamespace/Paket-virtual zu 1. * in MyNamespace/Paket B

Warum verwende ich ein virtuelles und nicht nur benötigtes PaketB

Weil PaketB nur eine mögliche Implementierung des virtuellen Pakets ist. stattdessen könnte auch packageC oder ein anderes Paket verwendet werden.

Warum bin ich nicht ersetzt anstelle der Verwendung bietet

Da Paket B und packageC beide könnte das virtuelle Paket und koexistieren implementieren. MyAPP kann PaketB in einigen Szenarien und PaketC in anderen Szenarien auswählen. Vergleichen Sie all dies mit Protokollierungspaketen. psr/log stellt die Schnittstellen für die Protokollierung bereit, Sie müssen jedoch eine oder mehrere Protokollierungsimplementierungen installieren, um sie für die Protokollierung zu verwenden. Viele verschiedene Logger implementieren die erforderlichen Schnittstellen und könnten alle gleichzeitig installiert werden, so dass die Anwendung dem Benutzer eine Auswahl von zu verwendenden Protokollierungsdiensten bereitstellen kann.

Warum stelle ich Pseudo-Code statt des eigentlichen Komponisten.JSON-Dateien

Da der Code, an dem ich arbeite, derzeit nicht öffentlich verfügbar ist. An einem bestimmten Punkt kann es sein, aber es ist jetzt nicht

Wenn der Code nicht öffentlich installierbar ist, wie installierst du über Composer?

Ich betreibe Toran Proxy lokal

Frage

Was mache ich falsch? Warum funktioniert das alles unter Dev-Master, aber fange an zu scheitern, sobald ich einen RC markiert habe und zu einem Versionszweig gewechselt bin.

Antwort

0

Also ich bin mir nicht sicher, ob dies die eigentliche Antwort ist, aber wenn ich composer install statt composer update nach dem Löschen des Mynamspace-Verzeichnis von Anbieter ausführen, funktioniert alles gut.

Ich fand auch, dass die Verwendung von Satis anstelle von Toran mit composer update auch gut zu funktionieren schien.

Verwandte Themen