質問

私はすでに geoip2 パッケージをインストールしました。私が少し前にそれをインストールするとき、それはGuzzle 3を必要としました。*それで、それはその依存関係の一つとして3.9.1をインストールしました。

preditonio パッケージをインストールしますので、composer.jsonに追加しました。

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

問題は Predictionio ガザース3.8.0または3.8.1を必要とします。すでにインストールされている3.9.1バージョンを受け入れます。

私は信じていますガザグサート 3.8.0は両方を満たすだろう geoip2 predictionio 、その質問はどのようにダウングレードすることができますか Guzzle は、composer.json、composer.jon.lockだけです。

は、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].
.

役に立ちましたか?

解決

composer.jsonにガタズを追加する必要はありません。あなたが新しいパッケージを追加するときにあなたがしなければならないのはあなたがガードを更新することです。(これはPredictionioの要件に合わせてダウングラードする)

を実行するだけです
composer update predictionio/predictionio guzzle/guzzle
.

わかるように、スペースでそれらを分離することによってcomposer updateに複数のパッケージを提供することができます。これはのドキュメント

に記載されています。

他のヒント

質問に関連するヒント:

composer update named/packageを実行することで、このパッケージを追加するだけで、またはバージョンが増加しているだけでなく、他には何もありません。 composer require named/package:~1.0でも同じ(ただしのものの追加)が発生します(これはJSONフォーマットでめくることなくスタンドを追加するのがいい方法です)。

最新のものを更新するときの最も単純な解決策は、composer updateのみを実行することです。パッケージ名がないと、すべてのパッケージが更新される可能性があります。

ソフトウェアパッケージの選択に注意していない場合は、すべてのアップデートが少し危険になる可能性があります。個人的には、どういうわけか意味のバージョン管理を使用するように思われるソフトウェアを使用することをお勧めします。これにより、ComposerでTildeバージョンの要件を非常にうまく使用できます。これにより、互換性のあるアップデートとインストールされるべき両方のパッチと互換性のある更新が可能になるため、誰もが~X.Yをバージョンの説明として使用しようとすると思います。

ライブラリーを使用すると、十分な緩く定義されたバージョンの依存関係が可能になるはずです。例では、predictionio/predictionioパッケージにはguzzle/guzzle:~3.8.0が必要です。私はガップメンテナが互換性を築くことを疑問に思います。制限なしで互換性のある更新を可能にするためのライブラリーの依存関係を非常によく見たいと思っていきます。

はすべてのコストで分岐に依存しないでください。ブランチを使用するのが避けられない場合は、エイリアスバージョン番号を割り当てます.~3.8以前のリリースから適切なバージョン番号を推測できない場合は、0.0.0で始まります。そのようにして、後でリリースされたバージョンに切り替えることができます。これは、バージョン番号の残りの部分に良く統合されます。

パッケージの特定のバージョンをインストールする場合は、のcomposer.jsonにこれを追加することができます。 section:

    "guzzle/guzzle" : "3.8.0",
.

、その後

  composer update guzzle/guzzle
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top