【发布时间】:2021-03-25 21:07:31
【问题描述】:
composer 经常告诉我它无法安装某种包,因为它(s 依赖项)与我已经安装的东西冲突。通常我无法确定冲突的正面或反面,但当它今天再次发生时,我调查了一下,发现根本没有真正的冲突。
我想安装一个包,composer说我想要的包依赖于doctrine/inflector的1.4或更高版本,但我已经安装了doctrine/inflector并锁定在1.3.1。
我调查过了,我从来没有明确要求过doctrine/inflector。所以它不是我的应用程序的直接依赖项,而是作为我的两个依赖项的依赖项安装的。这两个依赖项分别表示他们需要doctrine/inflector 版本^1.2 和^1.0。 (我在我的composer.lock 文件中找到了该信息。)
所以现在我不明白为什么作曲家会大惊小怪。是的,composer过去选择在1.3.1安装doctrine/inflector以满足要求,但是如果composer只是将它过去安装的1.3.1版本更新为1.4.1,则应该没有冲突。但它并没有这样做,而是抱怨冲突。
我现在通过运行这些命令手动解决了冲突:
$ composer require doctrine/inflector:1.4.1
$ composer require illuminate/support
$ composer remove doctrine/inflector
我使用了doctrine remove,因为我不想在我的composer.json 中包含doctrine/inflector。
当然,这行得通,但有没有办法配置作曲家,使其尝试自行解决这些冲突?因为我确信在更复杂的场景中我无法弄清楚该怎么做,但如果作曲家尝试一下,它可能会。
我在这个网站上进行了一些搜索,发现 composer update 可能对我有帮助,但我仍然很想知道是否有更好的选择。你看我正在寻找一种方法,我不需要知道哪些包需要更新(我也不需要更新我的所有包)。
【问题讨论】:
标签: composer-php