当(似乎)没有障碍物时,为什么作曲家会说“结论:不要安装”?

Sas*_*sha 5 composer-php

以下内容composer.json

{
    "type": "project",
    "minimum-stability": "dev",
    "require": {
        "jasny/bootstrap": ">=3.1.3",
        "2amigos/yii2-file-input-widget": "*"
    }
}
Run Code Online (Sandbox Code Playgroud)

导致以下输出composer update

Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.                               

  Problem 1
    - 2amigos/yii2-file-input-widget 0.1.2 requires jasny/bootstrap v3.1.0 -> satisfiable by jasny/bootstrap[v3.1.0] but these conflict with your requirements or minimum-stability.
    - 2amigos/yii2-file-input-widget 0.1.1 requires jasny/bootstrap v3.1.0 -> satisfiable by jasny/bootstrap[v3.1.0] but these conflict with your requirements or minimum-stability.
    - 2amigos/yii2-file-input-widget 0.1.0 requires jasny/bootstrap v3.1.0 -> satisfiable by jasny/bootstrap[v3.1.0] but these conflict with your requirements or minimum-stability.
    - 2amigos/yii2-file-input-widget 1.0.0 requires jasny/bootstrap ~3.1.0 -> satisfiable by jasny/bootstrap[v3.1.3].
    - 2amigos/yii2-file-input-widget 1.0.1 requires jasny/bootstrap ~3.1.0 -> satisfiable by jasny/bootstrap[v3.1.3].
    - 2amigos/yii2-file-input-widget 1.0.2 requires jasny/bootstrap ~3.1.0 -> satisfiable by jasny/bootstrap[v3.1.3].
    - 2amigos/yii2-file-input-widget dev-master requires jasny/bootstrap ~3.1.0 -> satisfiable by jasny/bootstrap[v3.1.3].
    - 2amigos/yii2-file-input-widget 1.0.x-dev requires jasny/bootstrap ~3.1.0 -> satisfiable by jasny/bootstrap[v3.1.3].
    - Conclusion: don't install jasny/bootstrap v3.1.3
    - Installation request for 2amigos/yii2-file-input-widget * -> satisfiable by 2amigos/yii2-file-input-widget[0.1.0, 0.1.1, 0.1.2, 1.0.0, 1.0.1, 1.0.2, dev-master, 1.0.x-dev].
Run Code Online (Sandbox Code Playgroud)

为什么?


好吧,我明白了,为什么版本0.1.0–0.1.22amigos/yii2-file-input-widget无法安装即可-因为他们需要jasny/bootstrap的确切版本3.1.0,它与冲突,>=3.1.3需要在composer.json(因此作曲澄清:but these conflict with your requirements or minimum-stability)。

但是,从常识上来说,作曲家可以安装1.0.0或更高版本2amigos/yii2-file-input-widget(需要jasny/bootstrapversion ~3.1.0,而3.1.3可以满足要求)。我既没有看到将2amigos/yii2-file-input-widget1.0.0+与jasny/bootstrap3.1.3 一起安装的障碍,也没有作曲家对此进行任何明确的说明。它仍然说:Conclusion: don't install jasny/bootstrap v3.1.3 -为什么?

解决方法1

似乎可以使用"prefer-stable": true

解决方法2

实际上,我前段时间找到了另一个解决方法:我替换"2amigos/yii2-file-input-widget": "*""2amigos/yii2-file-input-widget": "1.0.2",do composer update,然后composer update又将其替换回去,然后再做一次—并且它可以正常工作。


问题是为什么它以如此奇怪的方式工作:为什么它有更多的限制,而失败却有更少的限制(没有澄清)。例如,如果它与1.0.2(或与偏好稳定)一起工作,那么为什么不与*(或没有与偏好稳定一起)工作呢?

ken*_*orb 5

更改顺序,它应该可以工作,例如

{
    "minimum-stability": "dev",
    "require": {
        "2amigos/yii2-file-input-widget": "*",
        "jasny/bootstrap": ">=3.1.3"
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么?我不知道。很可能是作曲家的错误。

我已经使用composer install命令(Composer v1.6.3)在空文件夹上测试了两种不同顺序的配置,原始顺序失败,但上述顺序有效。我已经在GH-7215报告了这个问题。