Composer 拒绝安装包,即使依赖项版本号在范围内也是如此


composer refuses to install a package even though dependency version number is within range

我的软件包依赖于照明/支持~4.1

我正在尝试在Laravel项目中安装此软件包,该项目的composer.json文件需要"laravel/framework": "4.1.*"

但是当我运行composer require并尝试安装此软件包时,每次最终都会遇到此错误:

您的要求无法解析为一组可安装的软件包。  问题1    - 结论:删除拉拉维尔/框架 v4.1.29    - Adityamenon/邮政编码-io-Laravel 1.0.0 需要 illuminate/支持 4.2.* -> 可以通过 illuminate/support[v4.2.1、v4.2.2、v4.2.3、v4.2.4、v4.2.5、v4.2.6、v4.2.7、v4.2.8、v4.2.9] 来满足。    - Adityamenon/邮政编码-io-Laravel 1.0.1 需要 illuminate/支持 4.2.* -> 可以通过 illuminate/support[v4.2.1、v4.2.2、v4.2.3、v4.2.4、v4.2.5、v4.2.6、v4.2.7、v4.2.8、v4.2.9] 来满足。    - 不要安装 Illuminate/支持 v4.2.1|不要安装 laravel/framework v4.1.29    - 不安装 Illuminate/支持 v4.2.2|不要安装 Laravel/Framework v4.1.29    - 不安装 Illuminate/支持 v4.2.3|不要安装 Laravel/Framework v4.1.29    - 不安装照明/支持 v4.2.4|不安装 laravel/framework v4.1.29    - 不要安装Illuminate/支持v4.2.5|不要安装Laravel/Framework v4.1.29    - 不安装 Illuminate/支持 v4.2.6|不要安装 Laravel/Framework v4.1.29    - 不安装 Illuminate/支持 v4.2.7|不要安装 Laravel/Framework v4.1.29    - 不要安装 Illuminate/支持 v4.2.8|不要安装 Laravel/Framework v4.1.29    - 不安装 Illuminate/支持 v4.2.9|不要安装 Laravel/Framework v4.1.29    - laravel/framework 的安装请求 == 4.1.29.0 -> laravel/framework[v4.1.29] 可以满足。    - adityamenon/postcodes-io-laravel ~1.0 -> 的安装请求,可通过 adityamenon/postcodes-io-laravel[1.0.0, 1.0.1] 满足。安装失败,将 ./composer.json 恢复为其原始内容。

我做错了什么?

您安装 adityamenon/postcodes-io-laravel ~1.0 ,正如我们在错误消息中的最后一项中读到的那样:

adityamenon/postcodes-io-laravel ~1.0 -> 的安装请求可以通过 adityamenon/postcodes-io-laravel[1.0.0, 1.0.1] 来满足。

这意味着 1.0.0

或 1.0.1(也显示在此项目中)。查看 packagist,1.0.0 和 1.0.1 都需要 4.2.* illuminate/support(显示在错误消息的第二项和第三项中)。安装 laravel/framework 4.1.*。由于4.1.*不在4.2.*(包所需的版本)范围内,因此它将失败。

您可能想要安装开发版本,您可以通过用 @dev 标记它来完成:

{
    ...
    "require": {
        "adityamenon/postcodes-io-laravel": "dev-master"
    }
}

顺便说一句,真正依赖dev-master不是一个好主意.您应该始终尝试将主分支别名为特定的开发版本。

看来您是该软件包的作者。

我的软件包依赖于照明/支持 ~4.1。

对于所有已发布的版本 1.0.0

和 1.0.1,这是错误的 - 这些版本依赖于 illuminate/支持 4.2.*。

只有主分支依赖于 ~4.1 - 如果你想发布它,只需将当前的主分支标记为版本 1.0.2 或 1.1.0(取决于是只修复错误还是更改了它的界面 - 甚至可能是不兼容的版本 2.0.0)。

然后,您可以更新其他软件以将您的软件包与Laravel 4.1一起使用。