作曲家未满足要求
Composer unsatisfied requirement
在作曲家设置中,我需要 vendor/package-A
和 vendor/package-B
。
包 B 建立在包 A 的基础上,并在其 composer.json 中将 A 定义为要求。
直接安装基础包A就可以了。其他要求已从 Packagist 解决,并且包本身已从私有存储库中正确提取。
但是,当只安装包 B(根据需要它也应该引入包 A)时,我收到以下错误:
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for vendor/package-B dev-master@dev -> satisfiable by vendor/package-B[dev-master].
- vendor/package-B dev-master requires vendor/package-A dev-master@dev -> no matching package found.
这两个包都没有任何标记的版本,并且在 dev-master 版本上运行。
我是否忽略了什么?
编辑
对于那些对解决方案感兴趣的人,这是我从下面所选答案中学到的内容的总结。
基本上,存在三种方法来安装深度 dev-master 依赖项。按最推荐顺序排列:
标记所有版本并使用标记的版本约束而不是到处使用 dev-master。 (我真的做到了!)
在您的应用程序的 composer.json
中,使用 @dev
标志为您在开发中需要的相应子依赖项添加一个额外的 require 键:
{
"require": {
"vendor/package-B": "dev-master",
"vendor/package-A": "@dev"
}
}
通过这种方式,您基本上可以将特定的子依赖项列入白名单以用作开发。
在您的应用程序的 composer.json
中,添加 minimum-stability
和 prefer-stable
键,如下所示。
{
"minimum-stability": "dev",
"prefer-stable" : true
}
在最后一种方法中,您将稳定性约束降低为 dev,但您还设置了如果有可用的稳定版本,您会更喜欢那个。大多数时候这会产生想要的行为,但有时它可能会很古怪。
这是一个稳定性解析问题。
针对这种情况的最佳解决方案是开始标记您的版本。
您可以定义 "minmum-stability":"dev"
.
它将设置下限并允许所有包 "dev" 个包。
您已明确定义 dev-master@dev
。
我不确定这是否真的需要。
这解释了你的情况:https://igor.io/2013/02/07/composer-stability-flags.html
在作曲家设置中,我需要 vendor/package-A
和 vendor/package-B
。
包 B 建立在包 A 的基础上,并在其 composer.json 中将 A 定义为要求。
直接安装基础包A就可以了。其他要求已从 Packagist 解决,并且包本身已从私有存储库中正确提取。
但是,当只安装包 B(根据需要它也应该引入包 A)时,我收到以下错误:
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for vendor/package-B dev-master@dev -> satisfiable by vendor/package-B[dev-master].
- vendor/package-B dev-master requires vendor/package-A dev-master@dev -> no matching package found.
这两个包都没有任何标记的版本,并且在 dev-master 版本上运行。
我是否忽略了什么?
编辑
对于那些对解决方案感兴趣的人,这是我从下面所选答案中学到的内容的总结。
基本上,存在三种方法来安装深度 dev-master 依赖项。按最推荐顺序排列:
标记所有版本并使用标记的版本约束而不是到处使用 dev-master。 (我真的做到了!)
在您的应用程序的
composer.json
中,使用@dev
标志为您在开发中需要的相应子依赖项添加一个额外的 require 键:{ "require": { "vendor/package-B": "dev-master", "vendor/package-A": "@dev" } }
通过这种方式,您基本上可以将特定的子依赖项列入白名单以用作开发。
在您的应用程序的
composer.json
中,添加minimum-stability
和prefer-stable
键,如下所示。{ "minimum-stability": "dev", "prefer-stable" : true }
在最后一种方法中,您将稳定性约束降低为 dev,但您还设置了如果有可用的稳定版本,您会更喜欢那个。大多数时候这会产生想要的行为,但有时它可能会很古怪。
这是一个稳定性解析问题。
针对这种情况的最佳解决方案是开始标记您的版本。
您可以定义 "minmum-stability":"dev"
.
它将设置下限并允许所有包 "dev" 个包。
您已明确定义 dev-master@dev
。
我不确定这是否真的需要。
这解释了你的情况:https://igor.io/2013/02/07/composer-stability-flags.html