以下composer.json
:
{
"type": "project",
"minimum-stability": "dev",
"require": {
"jasny/bootstrap": ">=3.1.3",
"2amigos/yii2-file-input-widget": "*"
}
}
导致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].
为什么?
好的,我明白了,为什么0.1.0–0.1.2
的{{1}}版本无法安装 - 因为它们需要2amigos/yii2-file-input-widget
的确切版本jasny/bootstrap
,这与{{1}冲突3.1.0
中的要求(因此作曲家澄清:>=3.1.3
)。
但是,从常识来看,作曲家可以安装版本1.0.0或更高版本的composer.json
(需要版本but these conflict with your requirements or minimum-stability
的{{1}},这是3.1.3可以满足的) 。我没有看到将2amigos/yii2-file-input-widget
1.0.0+与jasny/bootstrap
3.1.3一起安装的任何障碍,作曲家也没有写任何关于它的明确澄清。它仍然说:~3.1.0
- 为什么?
它似乎适用于2amigos/yii2-file-input-widget
。
我实际上在前一段时间找到了另一种解决方法:我将jasny/bootstrap
替换为Conclusion: don't install jasny/bootstrap v3.1.3
,执行"prefer-stable": true
然后将其替换回"2amigos/yii2-file-input-widget": "*"
再次 - 它可行
问题是为什么它以如此奇怪的方式运作:为什么它有更多的限制,但失败的限制较少(没有澄清)。例如。如果它适用于"2amigos/yii2-file-input-widget": "1.0.2"
(或使用prefer-stable),那么为什么它不适用composer update
(或没有prefer-stable)?
答案 0 :(得分:2)
更改顺序,它应该有效,例如
{
"minimum-stability": "dev",
"require": {
"2amigos/yii2-file-input-widget": "*",
"jasny/bootstrap": ">=3.1.3"
}
}
为什么呢?我不知道。很可能是作曲家的错误。
我使用composer install
命令(Composer v1.6.3)在空文件夹上测试了两个不同顺序的配置,原始订单失败,但上面的订单有效。我已在GH-7215报告此问题。
答案 1 :(得分:1)
问题可能在于您手动编辑composer.json
然后运行
$ composer update
相反,请将更改还原为composer.json
,然后运行:
$ composer require jasny/bootstrap:>=3.1.3
$ composer require "2amigos/yii2-file-input-widget:*"
或一气呵成:
$ composer require jasny/bootstrap:>=3.1.3 "2amigos/yii2-file-input-widget:*"
注意我建议避免将*
通配符作为版本限制,因为它可能会引入该依赖项的任何版本,并可能通过引入不兼容的版本来破坏您的应用程序用它。
供参考,见: