Composer 不会更新过时的依赖项

Posted

技术标签:

【中文标题】Composer 不会更新过时的依赖项【英文标题】:Composer doesn't update outdated dependencies 【发布时间】:2017-11-10 05:40:14 【问题描述】:

好吧,在运行命令composer outdated 之后,我可以看到有更新版本的 phpdocumentor/type-resolver 可用。安装的版本是 0.2.1,最新的是 0.3.0。需要说它是由我使用的组件间接安装的,而不是我自己安装的。

问题是当我运行composer updatecomposer update phpdocumentor/type-resolver 时,它显示“无需安装或更新”。为什么以及如何解决?

【问题讨论】:

【参考方案1】:

可能某些依赖项已经修复了您要安装的软件包版本。尝试使用命令的输出来检查您列出的软件包的使用者和版本:

composer why-not phpdocumentor/type-resolver 0.3.0

注意:在current version of the documentation of composer 中,该命令被命名为prohibits,所以如果这不起作用,请尝试:

composer prohibits phpdocumentor/type-resolver 0.3.0

希望有帮助

【讨论】:

感谢您的提示。我有 composer 1.4.2 所以第一个命令没问题。输出为:phpdocumentor/reflection-docblock 3.1.1 requires phpdocumentor/type-resolver (^0.2.0)。这是你说的问题吗? (对不起,我不久前开始使用composer)。 运行composer*update phpdocumentor/type-resolver ^0.3.0 什么也没有。 Composer 说“未安装列出的更新包 0.3.0。忽略。”仍然需要一种方法将其更新到最新版本。有人吗?..【参考方案2】:

您的 composer.json 文件中可能存在阻止升级的版本限制。这是为了防止添加破坏性更改。在您的示例中,版本是预发布版本 (0.*),因此版本控制约束甚至会作用于矿工版本。

如果您确信没有重大更改或您已准备好处理它们,请编辑您的 composer.json 文件。更改如下:

"phpdocumentor/type-resolver": "0.2.1",

"phpdocumentor/type-resolver": "^0.3",

再次尝试composer upgrade 并进行测试以确保一切正常。

【讨论】:

以上是关于Composer 不会更新过时的依赖项的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Composer 中的依赖项更新如此缓慢?

Composer:如何在不更新旧依赖项的情况下安装另一个依赖项?

Composer 不会安装私有包依赖项

更新 phpMyAdmin 时出现问题:Composer 依赖项

Composer 在更新依赖项时挂起

Angular 6 更新 package.json 中过时的依赖项