Question

J'ai déjà le geoip2 package installé.Quand je l'ai installé il y a quelques temps, il est nécessaire de bouffer 3.* donc, il est installé bouffer 3.9.1 comme l'une de ses dépendances.

Maintenant je veux installer le predicitonio paquet, donc je l'ai ajouté à mon compositeur.json

"require": {
    ...
    ...
    "geoip2/geoip2": "0.6.*",
    "predictionio/predictionio": "~0.7.1"
}

La question est predictionio nécessite bouffer 3.8.0 ou 3.8.1, il n'accepte pas le déjà installé la version 3.9.1.

Je crois bouffer 3.8.0 satisferait à la fois geoip2 et predictionio, donc la question est comment puis-je réduire bouffer, en gardant à l'esprit bouffer n'apparaît pas dans mon compositeur.json, seulement le compositeur.verrouillage.

Ci-dessous est la sortie quand je le lance composer update predictionio/predictionio

  Problem 1
    - Installation request for predictionio/predictionio ~0.7.1 -> satisfiable by predictionio/predictionio[v0.7.1].
    - Conclusion: remove guzzle/guzzle v3.9.1
    - predictionio/predictionio v0.7.1 requires guzzle/guzzle ~3.8.0 -> satisfiable by guzzle/guzzle[v3.8.0, v3.8.1].
    - Can only install one of: guzzle/guzzle[v3.9.1, v3.8.0].
    - Can only install one of: guzzle/guzzle[v3.9.1, v3.8.1].
    - Installation request for guzzle/guzzle == 3.9.1.0 -> satisfiable by guzzle/guzzle[v3.9.1].
Était-ce utile?

La solution

Vous n'avez pas besoin d'ajouter de Bouffer à votre composer.json.Tout ce que vous avez à faire est de la mise à jour de Bouffer lorsque vous ajoutez le nouveau package.(ce qui fera descendre le Gave de le match PredictionIO exigences de l')

Exécutez simplement

composer update predictionio/predictionio guzzle/guzzle

Comme vous pouvez le voir, vous pouvez fournir plusieurs paquets composer update en les séparant par un espace.Ceci est décrit dans la documentation.

Autres conseils

Quelques conseils liés à la question:

En exécutant composer update named/package, vous permettent seulement de ce package d'être ajoutée, ou c'est la version augmentée, mais rien d'autre.Le même (mais seulement ajouter des trucs) qui va se passer avec composer require named/package:~1.0 (c'est une belle façon d'ajouter des trucs sans avoir à se salir avec le json de mise en forme).

La solution la plus simple lors de la mise à jour des choses est d'exécuter uniquement composer update.Sans un nom de package, TOUS les paquets peuvent être mis à jour.

La mise à jour de tout ce qui pourrait être un peu risqué si vous n'êtes pas prudent avec la sélection de vos logiciels.Personnellement, je recommande d'utiliser des logiciels qui semble en quelque sorte à l'utilisation de la sémantique des versions, qui très gentiment permet d'utiliser le tilde version exigence du Compositeur.Je dirais que tout le monde devrait essayer d'utiliser ~X.Y comme la description de la version, parce que cela permet à la fois les patchs en tant que bien que compatible avec les mises à jour à installer.

Les bibliothèques que vous utilisez devrait permettre assez vaguement défini versions de LEURS dépendances.Dans votre exemple, le predictionio/predictionio package requiert guzzle/guzzle:~3.8.0 - ils ont probablement raison de le faire, mais à son tour la force de tout le monde qui essaie d'utiliser leurs logiciels à utiliser pour Bouffer 3.8.0 ou 3.8.1.Je doute que les Bouffer les responsables vont casser la compatibilité descendante, parce qu'ils savent qu'ils créer un, très important, de base un morceau de logiciel qui est attendu au travail, et je pense qu'ils vont recevoir les rapports de bug assez de temps faut-il qu'ils cassent des trucs quand même.Je voudrais bien voir les dépendances de la bibliothèque afin de permettre la compatibilité des mises à jour, sans restriction, c'est à diredans ce cas ~3.8 serait beaucoup mieux.

Éviter selon les branches à tout prix.S'il est inévitable d'utiliser une branche, de lui attribuer un alias numéro de version: require: { "named/package": "dev-master as 1.2.2" } Si pas de bon numéro de version peut être deviné à partir de versions antérieures, commencer avec 0.0.0.De cette façon, vous pouvez passer à une version ultérieure, ce qui permettra de mieux s'intégrer dans le reste de l'numéros de version.

Si vous souhaitez installer une version particulière d'un paquet, vous pouvez simplement ajouter ceci à votre compositeur.json dans l' besoin section:

    "guzzle/guzzle" : "3.8.0",

Et puis

  composer update guzzle/guzzle
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top