Composer 两个包在依赖版本上发生冲突

Ser*_*oke 3 composer-php guzzle

我已经安装了geoip2软件包。当我前段时间安装它时,它需要 guzzle 3.*,因此它安装了 guzzle 3.9.1 作为其依赖项之一。

现在我想安装predicitonio包,所以我将其添加到我的composer.json

"require": {
    ...
    ...
    "geoip2/geoip2": "0.6.*",
    "predictionio/predictionio": "~0.7.1"
}
Run Code Online (Sandbox Code Playgroud)

问题是Predictionio需要 guzzle 3.8.0 或 3.8.1,它不接受已安装的 3.9.1 版本。

我相信guzzle 3.8.0 会满足geoip2Predictionio,所以问题是我如何降级guzzle,记住guzzle不会出现在我的composer.json中,只出现在composer.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].
Run Code Online (Sandbox Code Playgroud)

Nic*_*tel 5

您不需要将 Guzzle 添加到您的composer.json. 您所要做的就是在添加新软件包时更新 Guzzle。(这将降级 Guzzle 以符合 PredictionIO 的要求)

只需运行

composer update predictionio/predictionio guzzle/guzzle
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,您可以composer update通过用空格分隔来提供多个包。文档中对此进行了描述。