我有几个包。一个依赖于其他2个提供的虚拟包。为简单起见,我只关注packageA(需要虚拟的软件包)和packageB(提供虚拟软件包的软件包之一)。
程序包A
{
"require": {
"mynamespace/package-virtual": "1.0"
},
"suggest": {
"mynamespace/packageB": "PackageB provides package-virtual",
"mynamespace/packageC": "PackageC also provides package-virtual and can be installed with or without PackageB being present"
},
"minimum-stability": "dev"
}
PackageB
{
"provide": {
"mynamespace/package-virtual": "1.0"
},
"minimum-stability": "dev"
}
当我使用dev-master作为我的应用程序中使用这两个包的两个包的要求时,这一切都运行良好:
使用dev-master的MyAPP
{
"require": {
"mynamespace/packageA": "dev-master",
"mynamespace/packageB": "dev-master"
},
"minimum-stability": "dev",
"prefer-stable": true
}
然而,当我在每个软件包上标记1.0.0-rc1并尝试将我的开发需求更改为1.0.x-dev时,编辑开始抱怨找不到mynamespace/package-virtual
MyAPP使用1.0.x-dev
{
"require": {
"mynamespace/packageA": "1.0.x-dev",
"mynamespace/packageB": "1.0.x-dev"
},
"minimum-stability": "dev",
"prefer-stable": true
}
正在运行作曲家更新
# 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
- Installation request for mynamespace/packageA 1.0.x-dev -> satisfiable by mynamespace/packageA[1.0.x-dev].
- mynamespace/packageA 1.0.x-dev requires mynamespace/package-virtual 1.0 -> no matching package found.
Potential causes:
- A typo in the package name
- The package is not available in a stable-enough version according to your minimum-stability setting
see <https://getcomposer.org/doc/04-schema.md#minimum-stability> for more details.
Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.
我已经尝试过的事情
为什么我使用虚拟而不仅仅需要packageB
因为packageB只是虚拟包的可能实现。可能会使用packageC或其他一些软件包。
为什么我不使用替换而非提供
因为packageB和packageC都可以实现虚拟包并且共存。 MyAPP可能会选择在某些情况下使用packageB而在其他情况下使用packageC。将所有这些与日志包进行比较。 psr / log提供用于日志记录的接口,但您必须安装一个或多个日志记录实现才能实际使用它进行日志记录。许多不同的记录器实现必要的接口,并且可以同时安装,允许应用程序为用户提供一系列要使用的日志记录服务。
为什么我提供伪代码而不是实际的composer.json文件
因为我正在处理的代码目前尚未公开。在某些时候它可能是,但它现在不是
如果代码无法公开安装,您如何通过composer进行安装?
我在本地运行Toran Proxy
问题
我做错了什么?为什么这一切在dev-master下工作正常,但是一旦我标记RC并移动到版本分支就开始失败。
答案 0 :(得分:0)
所以我不确定这是否是实际的答案,但是如果我从供应商清除mynamspace目录后运行composer install
而不是composer update
,那么一切正常。
我也确实发现使用Satis代替Toran似乎也适用于composer update
。