如何解决"Can only install one of:"冲突?



我通过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 guzzlehttp/guzzle 6.2.0


要进一步解决问题,根据您的情况,您可以尝试:

  • 通过以下途径更新具有依赖关系的现有包:

    composer update --with-dependencies
    
  • composer.json升级或删除冲突的依赖项(保持简单)。

  • 当混淆消息显示"locked at x.y.z"时,请使用composer why org/package查看包的引用位置(或通过查找x.y.z手动检查composer.lock的内容)。如果没有帮助,请考虑删除composer.lock,然后重试
  • 当要求使用不同文件夹中的composer.json时,请选择n
  • 在空文件夹上重新尝试简单的composer.json配置
  • 运行composer diagnose以检查是否存在任何常见错误
  • 使用-v/-vv/-vvv可以增加命令的详细程度
  • 另请参阅:如何解释Composer';s的错误日志

我遇到了类似的问题,我只需要运行

composer update

安装新软件包之前。这将取决于其他安装的软件包是否也更新了它们的依赖关系。

我通过在版本号之前添加一个"^"来解决这个问题。例如

composer require drupal/slack:^1.2.0

而不是

composer require drupal/slack:1.2.0

当后者导致这个错误时。

相关内容

  • 没有找到相关文章

最新更新