提问者:小点点

如何解决一个“只能安装一个:”的冲突?


我已经通过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]。

    我知道问题出在哪里,但我不知道如何解决它。


  • 共3个答案

    匿名用户

    当两个不同的软件包指向同一个依赖项,但不同的主要互斥版本,其中只能安装一个时,将显示“只能安装一个[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
    

    当后者导致了这个错误。