composer why-not 没有帮助 - 为什么我不能安装这个包
composer why-not is not helpful - why can I not install this package
我不能在 contao 项目中要求以下包。
$ php composer.phar require -v con4gis/con4gis_forum
Using version ^1.7 for con4gis/con4gis_forum
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Dependency resolution completed in 0.026 seconds
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Conclusion: don't install con4gis/con4gis_forum v1.7.1
- Installation request for con4gis/con4gis_forum ^1.7 -> satisfiable by con4gis/con4gis_forum[v1.7.0, v1.7.1].
- con4gis/con4gis_forum v1.7.0 requires con4gis/con4gis_core ~1.7 -> satisfiable by con4gis/con4gis_core[v1.7.0, v1.7.1].
- con4gis/con4gis_core v1.7.0 requires menatwork/contao-multicolumnwizard 3.3.8 -> satisfiable by menatwork/contao-multicolumnwizard[3.3.8].
- con4gis/con4gis_core v1.7.1 requires menatwork/contao-multicolumnwizard 3.3.8 -> satisfiable by menatwork/contao-multicolumnwizard[3.3.8].
- Conclusion: don't install menatwork/contao-multicolumnwizard 3.3.8
$ php composer.phar why-not menatwork/contao-multicolumnwizard
contao-legacy/semantic_html5 1.1.7.9014 requires contao-legacy/multicolumnwizard (>=3.0.0,<4.0.0-dev)
metamodels/attribute_alias 2.0.0-alpha2 requires menatwork/contao-multicolumnwizard (~3.3)
metamodels/core 2.0.0-alpha9 requires menatwork/contao-multicolumnwizard (~3.3)
psi/news4ward 2.2.3 requires menatwork/contao-multicolumnwizard (~3)
terminal42/contao-changelanguage 3.1.0 requires menatwork/contao-multicolumnwizard (^3.3)
我检查了为什么不打印的所有要求,3.3.8 已经是绿色的,即满足 https://semver.mwl.be/#?package=menatwork%2Fcontao-multicolumnwizard&version=%5E3.3&minimum-stability=stable
这是怎么回事?
删除 composer.lock
也没有帮助。
Composer 版本是最新的稳定版。
Composer.json
{
"name": "local/website",
"description": "A local website project",
"type": "project",
"license": "proprietary",
"require": {
"cgo-it/news4ward-rateit": "dev-master",
"contao-legacy/ce_page_teaser": "~1.5",
"contao-legacy/efg": ">=2.2.1.9005,<2.3-dev",
"contao-legacy/om_searchkeys": "~1.0",
"contao-legacy/rocksolid-columns": ">=1.0.6.9006,<1.1-dev",
"contao-legacy/semantic_html5": ">=1.1.7.9014,<1.2-dev",
"contao-legacy/survey_ce": "3.0.2.9003",
"imi/imi_mm_changelanguage": "*",
"jakeasmith/http_build_url": "^1",
"madeyourday/contao-rocksolid-columns": ">=1.0.7.0,<1.1-dev",
"metamodels/bundle_all": "dev-master",
"phpoffice/phpexcel": "dev-master",
"psi/news4ward": ">=2.2.3.0,<2.3-dev",
"psi/news4ward_archive-menu": "2.0.8",
"psi/news4ward_author-menu": "2.0.2",
"psi/news4ward_comments": "2.1.0",
"psi/news4ward_metatitle": "dev-master#d2c09fb47441c05011ddcc5b08e54aae138a8ab7",
"psi/news4ward_mostread": "2.1.0",
"psi/news4ward_multicategories": "1.0.5",
"psi/news4ward_related": "2.1.0",
"psi/news4ward_tags": "2.1.1",
"contao-community-alliance/dc-general": "^2.0.0-beta32",
"querypath/QueryPath": "^3.0",
"terminal42/contao-changelanguage": "^3.1",
"contao-community-alliance/composer-client": "~0.14",
"delahaye/dlh_googlemaps": "^2.2",
"contao-legacy/inputvar": "1.1.1.9048"
},
"prefer-stable": true,
"minimum-stability": "dev",
"config": {
"preferred-install": "dist",
"cache-dir": "cache",
"component-dir": "../assets/components"
},
"repositories": [
{
"type": "artifact",
"url": "packages"
},
{
"type": "composer",
"url": "https://legacy-packages-via.contao-community-alliance.org/"
}
],
"extra": {
"contao": {
"migrated": "done"
}
}
}
将您的 composer.json
复制到本地文件,从中删除 artifact
存储库,然后 运行 composer install
会产生 legacy/survey_ce 3.0.2.9003
无法删除的消息被发现。但是,据报道 3.0.2.9005
可用,所以我继续。
运行 composer install
再次导致一组可解析的依赖项。 运行 您的 composer require
命令再次导致您收到相同的错误消息。我假设我现在在同一个地方。
运行 composer show
列出所有已安装的包显示有问题的包已经安装在版本 3.3.10 中。
menatwork/contao-multicolumnwizard 3.3.10 MultiColumWizard for Contao OpenSource CMS
这就解释了为什么无法安装依赖项,因为 Composer 通常不会对已安装的软件包进行降级。然而,它给出的提示并没有真正解释发生了什么。
正如我在评论中提到的,您应该立即尝试彻底检查您的依赖项:
- 您依赖于固定版本。检查您是否可以放宽版本号以允许兼容更新。如果库作者声明他们支持语义版本控制,这是最简单的,如果他们声明他们明确不支持它也很容易,如果他们还声明如何获得补丁。
- 您依赖于
dev-master
版本。取决于分支会在某些时候破坏你的项目!检查您使用的库是否发布了标记版本。检查您当前引用的版本最近。将您的依赖项从 dev-master
更改为该版本(包括兼容更新,如第一点所述)并查看您的项目是否仍然有效。
- 您还依赖废弃的版本。您应该将依赖项升级到引用的包 - 但是这绝不保证是一个毫不费力的转换,可能需要进行一些更改。但这将有助于减少所涉及的包数量,因为似乎许多
contao-legacy
库都重新发布为 menatwork
,并且确实得到了更新。而且这些库应该是可以切换的。
我不能在 contao 项目中要求以下包。
$ php composer.phar require -v con4gis/con4gis_forum
Using version ^1.7 for con4gis/con4gis_forum
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Dependency resolution completed in 0.026 seconds
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Conclusion: don't install con4gis/con4gis_forum v1.7.1
- Installation request for con4gis/con4gis_forum ^1.7 -> satisfiable by con4gis/con4gis_forum[v1.7.0, v1.7.1].
- con4gis/con4gis_forum v1.7.0 requires con4gis/con4gis_core ~1.7 -> satisfiable by con4gis/con4gis_core[v1.7.0, v1.7.1].
- con4gis/con4gis_core v1.7.0 requires menatwork/contao-multicolumnwizard 3.3.8 -> satisfiable by menatwork/contao-multicolumnwizard[3.3.8].
- con4gis/con4gis_core v1.7.1 requires menatwork/contao-multicolumnwizard 3.3.8 -> satisfiable by menatwork/contao-multicolumnwizard[3.3.8].
- Conclusion: don't install menatwork/contao-multicolumnwizard 3.3.8
$ php composer.phar why-not menatwork/contao-multicolumnwizard
contao-legacy/semantic_html5 1.1.7.9014 requires contao-legacy/multicolumnwizard (>=3.0.0,<4.0.0-dev)
metamodels/attribute_alias 2.0.0-alpha2 requires menatwork/contao-multicolumnwizard (~3.3)
metamodels/core 2.0.0-alpha9 requires menatwork/contao-multicolumnwizard (~3.3)
psi/news4ward 2.2.3 requires menatwork/contao-multicolumnwizard (~3)
terminal42/contao-changelanguage 3.1.0 requires menatwork/contao-multicolumnwizard (^3.3)
我检查了为什么不打印的所有要求,3.3.8 已经是绿色的,即满足 https://semver.mwl.be/#?package=menatwork%2Fcontao-multicolumnwizard&version=%5E3.3&minimum-stability=stable
这是怎么回事?
删除 composer.lock
也没有帮助。
Composer 版本是最新的稳定版。
Composer.json
{
"name": "local/website",
"description": "A local website project",
"type": "project",
"license": "proprietary",
"require": {
"cgo-it/news4ward-rateit": "dev-master",
"contao-legacy/ce_page_teaser": "~1.5",
"contao-legacy/efg": ">=2.2.1.9005,<2.3-dev",
"contao-legacy/om_searchkeys": "~1.0",
"contao-legacy/rocksolid-columns": ">=1.0.6.9006,<1.1-dev",
"contao-legacy/semantic_html5": ">=1.1.7.9014,<1.2-dev",
"contao-legacy/survey_ce": "3.0.2.9003",
"imi/imi_mm_changelanguage": "*",
"jakeasmith/http_build_url": "^1",
"madeyourday/contao-rocksolid-columns": ">=1.0.7.0,<1.1-dev",
"metamodels/bundle_all": "dev-master",
"phpoffice/phpexcel": "dev-master",
"psi/news4ward": ">=2.2.3.0,<2.3-dev",
"psi/news4ward_archive-menu": "2.0.8",
"psi/news4ward_author-menu": "2.0.2",
"psi/news4ward_comments": "2.1.0",
"psi/news4ward_metatitle": "dev-master#d2c09fb47441c05011ddcc5b08e54aae138a8ab7",
"psi/news4ward_mostread": "2.1.0",
"psi/news4ward_multicategories": "1.0.5",
"psi/news4ward_related": "2.1.0",
"psi/news4ward_tags": "2.1.1",
"contao-community-alliance/dc-general": "^2.0.0-beta32",
"querypath/QueryPath": "^3.0",
"terminal42/contao-changelanguage": "^3.1",
"contao-community-alliance/composer-client": "~0.14",
"delahaye/dlh_googlemaps": "^2.2",
"contao-legacy/inputvar": "1.1.1.9048"
},
"prefer-stable": true,
"minimum-stability": "dev",
"config": {
"preferred-install": "dist",
"cache-dir": "cache",
"component-dir": "../assets/components"
},
"repositories": [
{
"type": "artifact",
"url": "packages"
},
{
"type": "composer",
"url": "https://legacy-packages-via.contao-community-alliance.org/"
}
],
"extra": {
"contao": {
"migrated": "done"
}
}
}
将您的 composer.json
复制到本地文件,从中删除 artifact
存储库,然后 运行 composer install
会产生 legacy/survey_ce 3.0.2.9003
无法删除的消息被发现。但是,据报道 3.0.2.9005
可用,所以我继续。
运行 composer install
再次导致一组可解析的依赖项。 运行 您的 composer require
命令再次导致您收到相同的错误消息。我假设我现在在同一个地方。
运行 composer show
列出所有已安装的包显示有问题的包已经安装在版本 3.3.10 中。
menatwork/contao-multicolumnwizard 3.3.10 MultiColumWizard for Contao OpenSource CMS
这就解释了为什么无法安装依赖项,因为 Composer 通常不会对已安装的软件包进行降级。然而,它给出的提示并没有真正解释发生了什么。
正如我在评论中提到的,您应该立即尝试彻底检查您的依赖项:
- 您依赖于固定版本。检查您是否可以放宽版本号以允许兼容更新。如果库作者声明他们支持语义版本控制,这是最简单的,如果他们声明他们明确不支持它也很容易,如果他们还声明如何获得补丁。
- 您依赖于
dev-master
版本。取决于分支会在某些时候破坏你的项目!检查您使用的库是否发布了标记版本。检查您当前引用的版本最近。将您的依赖项从dev-master
更改为该版本(包括兼容更新,如第一点所述)并查看您的项目是否仍然有效。 - 您还依赖废弃的版本。您应该将依赖项升级到引用的包 - 但是这绝不保证是一个毫不费力的转换,可能需要进行一些更改。但这将有助于减少所涉及的包数量,因为似乎许多
contao-legacy
库都重新发布为menatwork
,并且确实得到了更新。而且这些库应该是可以切换的。