如何解释作曲家的错误日志?

2022-08-30 23:23:31

我在网上做了很多研究,但没有找到作曲家错误日志的文档。在我发现的讨论中,没有人有与错误日志一致的解释。例如:

我知道,作曲家做什么,可以自己解决问题,但我经常需要咨询 packagist.org。尽管相当(并且不必要地)冗长,但作曲家日志只给了我一些提示。它并没有真正指出具体问题。

有没有人知道一个完整的文档或如何解释日志背后的原因,也许以上面的日志为例?


答案 1

可以在 getcomposer.org/doc 中找到 Composer 的文档,尤其是“故障排除”部分。通常,依赖关系问题来自您的错误配置,并且理解Composer日志会带来经验或对反复试验的学习。记录数百个可能的错误中的每一个都可能很快过时。如果您认为某些特定错误不够清晰,可以随时在 Composer 的 GitHub 页面上提出新的建议composer.json

正如链接的GitHub问题中所建议的那样,“结论:不要安装”消息可能与最小稳定性中定义的要求有关。另一个链接问题可能与GH-7215中报告的Composer错误有关。

错误

这是一个小指南,解释了常见的Composer的错误:

  • 只能安装以下之一:org/package[x.y.z, X.Y.Z]。

    如果看到此消息,则可能是依赖项问题的主要原因。这基本上意味着,根据 Composer 的依赖关系计算,这两个版本都是必需的,但只能安装一个主要版本(你不能同时拥有 x.y.z 和 X.Y.Z,除非你拆分了不同文件夹的配置)。若要查看这些包是必需的,请使用 / 命令并相应地调整依赖项。whycomposer whydepends

    请参见:如何解决“只能安装其中之一:”冲突?& 运行 Composer install 时如何解决两个软件包需求冲突?

  • 组织/包 2 的安装请求(锁定在 vX.Y.Z)

    此消息表示存在组织/包的安装请求,但是,它已锁定在 X.Y.Z。如果请求的版本与锁定的版本不兼容(如其他主要版本),则无法同时安装两者。此消息通常与已经提到的“只能安装一个”一起出现。因此,每当您看到“锁定”时,这意味着Composer会从文件中读取已安装的软件包版本。要进行故障排除,您可以使用/ 命令来查找请求软件包的原因并调整兼容性,否则,您可以尝试删除文件并从头开始(理想情况下从空文件夹中)。composer.lockcomposer whydependscomposer.lock

    请参见:laravel/lumen-installer 的安装失败:guzzlehttp/guzzle 锁定在 6.3.0

  • org/package1 vx.y.z 与 org/package2[vX.Y.Z] 冲突

    这是一个与上面类似的问题,其中两个包冲突,您需要手动解决依赖关系。阅读消息的整个上下文可能会给你更多的线索。检查依赖关系树也可能有帮助 ()。composer show -t

  • 与您的要求或最低稳定性相冲突

    此消息的意思是阅读,因此您应该检查所需的版本和/或您的设置。minimum-stability

这可能是由于软件包被标记为不稳定,并且您的要求是“仅稳定”引起的。请参阅:但这些与您的要求或最低稳定性相冲突

或者因为与其他已安装的软件包冲突。请参见:如何识别阻止 Composer 安装最新版本的软件包的原因?

有关任何其他错误,请查看官方 Composer 的疑难解答页面

故障 排除

以下是有关如何解决一般 Composer 依赖项问题的更多建议:

  • 将 // 参数添加到命令中,以获得更详细的输出。-v-vv-vvv
  • 运行以检查常见错误以帮助调试问题。composer diagnose
  • 如果您看到“锁定在 x.y.z”消息,则它与 锁定在 .composer.lock
  • 在空文件夹上测试 。composer.json
  • 将您保持在最低限度。composer.json
  • 运行以查看当前的依赖项树。composer show -t
  • 运行以检查有关包的详细信息。composer show -a org/package x.y.z
  • 请随时在Stack Overflow上提出新问题。

要完全调试 Composer 的依赖项问题,您可以:


解释常见错误的有用线程:


答案 2

错误:

somevendor/somepackage[v1.0.0, ..., v1.9.1] 需要 composer-plugin-api ~[X.X]

这意味着这需要安装 Composer 的特定版本范围。somevendor/somepacakge

运行并将其与错误消息中的版本约束进行比较(如上面的示例所示,但可能是 类似 、 或 等)。composer -v~X.X^1.0^2.2

如果您的版本与约束不匹配,请查看您是否可以:

  • 升级或降级您的作曲家版本以匹配错误消息中的作曲家约束
  • 升级,以便它可以与您的 Composer 版本一起使用。somevendor/somepackage

推荐