在本地磁盘上的相邻目录中有三个composer软件包:foo
,bar
,baz
。它们都有相同的composer.json
文件(包名称除外):
{
"name": "acme/foo",
# "name": "acme/bar",
# "name": "acme/baz",
"repositories": [
{
"type": "path",
"url": "../*"
}
]
}
我们要在foo
内使用bar
。这可以按预期工作。
$ cd /home/acme/bar
$ composer require acme/foo:dev-master
然后,我们要在bar
内使用baz
。这会失败。
$ cd /home/acme/baz
$ composer require acme/bar:dev-master
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for acme/bar dev-master -> satisfiable by acme/bar[dev-master].
- acme/bar dev-master requires acme/foo dev-master -> no matching package found.
为什么作曲家找不到foo
软件包?
我尝试过的事情:
这些都不起作用。
我找到了一个变通的解决方法。事实证明,当我们首先需要foo
然后又需要bar
时,作曲者便能够解决依赖关系。
答案 0 :(得分:1)
这由minimum-stability
设置控制。默认情况下将其设置为stable
,因此,除非在根项目的require
部分中明确指定了不稳定约束,否则Composer将不会安装不稳定依赖关系。您可以通过添加到项目的composer.json
来更改此设置:
"minimum-stability": "dev",
"prefer-stable": true,
但是不建议这样做,因为它会影响项目中的所有依赖关系,因此您可能会得到比所需更多的不稳定依赖关系。明确要求每个不稳定的子依赖关系都可以为您提供更多的控制权,但是通常,您应避免使用具有不稳定的子依赖关系的程序包(尤其是那些定义为dev-master
的程序包-某些事情会中断只是时间问题)。