Das Composer “path”-Repository kann nicht zum Laufen gebracht werden

Lesezeit: 4 Minuten

Ich habe eine Verzeichnisstruktur wie folgt:

composer.json < Main
  packages/
    balunker/
      testpackage/
        composer.json < Package
        src/
          TestPackage.php

Die wichtigsten composer.json sieht aus wie das:

{
    "name": "vagrant/composer-test",
    "repositories": [
        {
             "type": "path",
            "url": "packages/*/*"
        }
    ],
    "require": {
        "balunker/testpackage": "*"
    }
}

Während das Paket composer.json sieht so aus:

{
  "name": "balunker/testpackage",
  "autoload": {
    "psr-4": {
      "Balunker\\": "src/"
    }
  }
}

An composer update Ich bekomme einfach eine Meldung, dass das Paket nicht aufgelöst werden konnte. Es werden keine Symlinks erstellt und kein Paket installiert. Ich habe buchstäblich die Hälfte meines Tages damit verbracht, dies herauszufinden, ohne Erfolg.

Ich habe auch eine hochgeladen composer update -vvv ausführliche Ausgabe davon: http://pastebin.com/mMRHsACK.

Meine Composer-Version ist die neueste (Stand: 20. April 2016 um 14:39 Uhr UTC) und all dies läuft in Vagrant (Debian).

JEDE Empfehlung von hier aus wird sehr geschätzt. Ich weiß echt nicht mehr was ich noch machen soll.

Ich habe das Problem auch auf Github gepostet und es stellt sich heraus, dass die Dokumentation etwas irreführend ist. Es sagt:

{
    "repositories": [
        {
            "type": "path",
            "url": "../../packages/my-package"
        }
    ],
    "require": {
        "my/package": "*"
    }
}

Wenn Sie jedoch nur ein lokales Repo ohne Releases haben, müssen Sie Folgendes verwenden:

{
    "repositories": [
        {
            "type": "path",
            "url": "../../packages/my-package"
        }
    ],
    "require": {
        "my/package": "dev-master"
    }
}

Die Version dev-master ist hier der Schlüssel (vorausgesetzt, Sie arbeiten am Master-Zweig). Das war leicht ärgerlich, aber dank einiger hilfreicher Mitwirkender von Komponisten konnte ich das endlich in den Griff bekommen.

Ich hoffe, dies kann jemandem in der Zukunft helfen.

Viel Glück!

  • Für mich bestand der Trick darin, hinzuzufügen "minimum-stability": "dev" zu meiner composer.json-Datei

    – Brad Kent

    25. Juli 2016 um 14:09 Uhr

  • @BradKent Ich würde dringend davon abraten, die zu verwenden "minimum-stability": "dev" was es bedeutet: Sie wollen von allen Abhängigkeiten die neueste instabile Version. Das dev- Präfix bzw -dev Suffix wird dies nur für das betreffende Paket ändern.

    – Nemo64

    11. Oktober 2016 um 13:22 Uhr

  • Solange du es auch hast "prefer-stable": true, du bist in Ordnung. Es werden nur Entwicklungspakete verwendet, wenn dies erforderlich ist, um eine Abhängigkeit zu erfüllen.

    – Hackel

    15. August 2017 um 22:51 Uhr

  • Als Alternative dazu den ganzen Composer einstellen minimum-stability: dev Sie können einzelne Pakete auf diese Weise über kennzeichnen dev-master oder *@dev für die Fassung. Für alle, die dies unter Windows ausführen, müssen Sie möglicherweise auch hinzufügen {"options": { "symlink": false }} in die Repository-Definition, sodass Sie vom Junctioning zum Spiegeln des lokalen Pakets wechseln.

    – Leith

    6. Oktober 2017 um 8:52 Uhr


  • Ich habe alle auf dem Stack geposteten Lösungen ausprobiert und immer noch nichts

    – Arek Kostrzeba

    27. Juni 2018 um 21:49 Uhr

Was mir bei der Lösung geholfen hat, war composer clear-cache und dann laufen composer update.

Erläuterung: Ich hatte es anfangs versucht composer install my/package was bei Abhängigkeitsversionen fehlgeschlagen ist. Also musste ich einige lokale Änderungen vornehmen, damit es mit Laravel 6.0 funktioniert. Es wurde jedoch weiterhin nach der falschen Version von Laravel-Paketen gesucht, was mich zu der Annahme veranlasste, dass mein lokales Repository, das ich in eingestellt hatte, nicht angezeigt wurde repositories Schlüssel mit "type": "path". Ich habe zuerst sichergestellt, dass der Pfad existiert und ich mich auf dem richtigen Zweig befinde (master weshalb ich benutze dev-master in meinem composer.json). Nachdem ich den Composer-Cache gelöscht und das Update ausgeführt hatte, wurde es unter Verwendung meines lokalen Pfads ohne Abhängigkeitsprobleme aktualisiert.

"repositories": [
    {
        "type": "path",
        "url": "../libs/package-name"
    }
],
"require-dev": {
    "pkg-maintainer/package-name": "dev-master"
}

Was für mich funktionierte, war dem oben Gesagten sehr ähnlich, aber ich musste speziell auf den Zweig abzielen, für den ich entwickelte.

Unter der Annahme von Code im Verzeichnis /newapp auf der gleichen Ebene wie /app und einem Zweig namens feature/the-new-package:

"repositories": [
  {
    "type": "path",
    "url": "newapp"
  }
],
"require": {
  "package/newapp": "dev-feature/the-new-package"
},

\* funktionierte nicht, dev-master auch nicht. Es musste dev-feature/the-new-package sein.

Benutzer-Avatar
TylersSN

Fügen Sie für zukünftige Googler Ihre Version zum hinzu composer.json und fordern dann das Paket mit der --prefer-source Möglichkeit.

Zum Beispiel: composer require your-vendor/package:1.0.* --prefer-source

Für mich war das Problem, dass ich vergessen habe, den Repository-Ordner mit Docker zu mounten, sodass der lokale Webserver ihn nicht erreichen konnte. Achten Sie auch darauf

Benutzer-Avatar
Alvaro González

Composer scheint verwirrt zu sein, wenn das Paket bereits aus dem ursprünglichen Repository installiert ist: Es ruft Ihr lokales Repo ab und aktualisiert es komponist.lock von seinem composer.json versucht aber nicht einmal, Änderungen in das Herstellerverzeichnis zu holen.

Das Entfernen scheint es zuerst zu beheben:

composer remove foo/bar
composer require foo/bar @dev

Benutzer-Avatar
André Berdugo

In meinem Fall war mein Problem die Repository-Prioritäten, “Wenn Composer Abhängigkeiten auflöst, sucht es ein bestimmtes Paket im obersten Repository”, überprüfen Sie es https://getcomposer.org/doc/articles/repository-priorities.md
TLDR; Stellen Sie in composer.json sicher, dass Ihr lokaler Pfad zuerst unter Repositorys angezeigt wird

"repositories": [
    {
         "type": "path",
         "url": "packages/local-path-goes-first"
    },
    {
         "type": "vcs",
         "url": "https://github.com/berrugo/other-repos"
    }
],

1292780cookie-checkDas Composer “path”-Repository kann nicht zum Laufen gebracht werden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy