web-dev-qa-db-fra.com

Composer - Le paquet demandé existe sous la forme, mais ceux-ci sont rejetés par votre contrainte.

Lorsque j'exécute mon installation depuis composer, j'ai l'erreur suivante:

λ composer installer Vous exécutez composer avec xdebug activé. Cela a un impact majeur sur les performances d'exécution. Voir https://getcomposer.org/xdebug Chargement composer référentiels contenant les informations sur les paquets. Mise à jour des dépendances (y compris require-dev) Vos exigences n'ont pas pu être résolues en un ensemble de paquets installable.

Erreur :

Problème 1 - Le paquet demandé antoineb1/smoney_bundle 1.0 existe sous le nom antoineb1/smoney_bundle [dev-master] mais il est rejeté par votre contrainte.

Mon composer.json

{
    "name": "project",
    "license": "proprietary",
    "type": "project",
    "minimum-stability": "dev",
    "prefer-stable" : true,
    "autoload": {
        "psr-4": {
            "": "src/"
        }
    },
    "config": {
        "preferred-install": "dist"
    },
    "repositories": [
        {
            "url": "bitbucket url",
            "type": "vcs"
        }
    ],
    "require": {
        "php": ">=5.5.9",
        "antoineb1/smoney_bundle": "1.0"
    }
}
43
Antoine Bourlart

La contrainte de version "1.0" est interprété en interne comme "1.0.0.0-stable" version.

Mais la seule version disponible est:

antoineb1/smoney_bundle [dev-master].

Vous pouvez donc remplacer la version spécifiée par l’une des options suivantes en fonction de la version qui vous convient:

  • 1.0.* (qui est vu par composer comme >=1.0.0.0-dev <1.1.0.0-dev - ne fonctionnera probablement pas car il n'y a évidemment aucune version dans ce paquetage)
  • dev-master
  • dev-master#<hash>
  • @dev
  • etc.

Voir le Composer Schema pour référence.

31
BVengerov

Le commentaire de @Guillaume ci-dessous cette réponse mérite une présentation plus large.

Il semble que composer veut une version git qui contient v.

Donc, ça devrait être v1.1.0 et pas 1.1.0.

J'ai passé environ 90 minutes à regarder

mikeill/my_repo 3.3.10 requires composer/installers 1.0.*@dev -> satisfiable by composer/installers[1.0.x-dev, v1.0.0, ...] but these conflict with your requirements or minimum-stability.

Et beaucoup de problèmes de github ainsi qu'un SO post ou deux avant de découvrir ce fil).

8
MikeiLL

J'ai perdu une quantité importante de cheveux, de temps et de santé mentale sur cette question pendant un moment - le problème dans mon cas était que je spécifiais une version dans composer.json dans le package lui-même en tant que "dev-master".

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

Où il est écrit:

Remarque: Packagist utilise les référentiels VCS. Par conséquent, la déclaration ci-dessus est également vraie pour Packagist. Spécifier la version vous-même finira probablement par créer des problèmes à un moment donné en raison d'une erreur humaine.

(c'est moi qui souligne)

J'ai enlevé cet élément de la version et cela a fonctionné parfaitement :)

3
OllieLowson

Je suis tombé sur cette question et j'ai trouvé un autre problème, que j'avais complètement oublié, que quelqu'un trouverait utile de devoir vérifier.

Dans mon cas, j’avais un très vieux projet Git, qui avait été créé il ya un certain temps, et je devais les fusionner (bien que le projet forké n’ait pas subi beaucoup de changements). J'ai donc identifié le point de partage sur l'ancien projet et l'ai étiqueté comme version pour le compositeur afin que je puisse l'utiliser à la place du nouveau projet.

Ce que j’avais oublié cependant, c’est qu’à l’origine nous n’utilisions pas de compositeur. Donc, la structure de fichier au point de balise manquait composer.json. Je ne pouvais pas comprendre pourquoi mes nouvelles balises n'apparaissaient pas dans la liste des éléments "existant en tant que" qui avaient été "rejetés par votre contre-proposition". Finalement, j'ai réalisé que je devais créer une branche sur l'ancienne balise, sélectionner le commit qui avait créé le composer.json pour le projet et retag, puis tout a fonctionné.

J'espère que cela va ébranler la mémoire de certains, s'ils viennent à la chasse avec ce message d'erreur en tête.

2
sibaz