我已经通过Composer安装了一个软件包,它也安装了Guzzlehttp,因为这个软件包。之后,我试图通过Composer安装另一个包,这需要Guzzlehttp和Composer,试图再次安装它。
但是我得到了那个错误:
问题1
>
只能安装一个:guzzlehttp/guzzle[6.2.0,6.0.2]。
只能安装一个:guzzlehttp/guzzle[6.0.2,6.2.0]。
只能安装一个:guzzlehttp/guzzle[6.0.2,6.2.0]。
我知道问题出在哪里,但我不知道如何解决它。
当两个不同的软件包指向同一个依赖项,但不同的主要互斥版本,其中只能安装一个时,将显示“只能安装一个[x,y]”消息。
例如,由于您的composer.lock
文件中存在的信息可能与您试图安装的内容相冲突,因此一个版本可能被锁定。在这种情况下,当混淆错误伴随着“锁定在x. y. z”消息时,您可以使用以下命令来理解已安装包的现有依赖关系:
composer show -t
注意:-t
显示为嵌套树视图,删除它以查看平面列表。
要查看问题包在项目中的引用位置,请运行:
composer why org/package -t
注意:-t
显示为嵌套树视图,删除它以查看平面列表。
要查看您尝试安装的软件包的详细信息,您可以运行:
composer show -a org/package # Package to inspect.
注意:要检查特定版本,请添加x.y.z
,例如:composer show-a guzzle http/guzzle 6.2。0
要进一步排除故障,根据您的情况,您可以尝试:
>
composer update --with-dependencies
从编写器升级或删除冲突的依赖项。json(保持简单)。
我也有类似的问题,我不得不跑
作曲家更新
在安装新软件包之前。这将取决于其他安装的软件包是否也更新了它们的依赖项。
我通过在版本号之前添加一个“^”来解决这个问题。例如
作曲家需要Drupal/slack:^1.2.0
而不是
composer require drupal/slack:1.2.0
当后者导致了这个错误。