Composer 安装无法再解析 ZF2 项目的依赖项
Composer install cannot resolve dependencies for ZF2 project anymore
由于 Zend 不断发布其核心包的 ZF3 版本,我在使用旧的 ZF2 应用程序时遇到了问题。
如果我 运行 composer install
有一个有效的 composer.lock 到位,我会收到大多数 ZF 依赖项的以下警告:
- Installing zendframework/zend-stdlib (2.7.7)
Downloading: 100%
Failed to download zendframework/zend-stdlib from dist: The checksum verification of the file failed (downloaded from https://packages.zendframework.com/composer/zendframework-zend-stdlib-2.7.7-19d9a4.zip)
Now trying to download from source
- Installing zendframework/zend-stdlib (2.7.7)
Cloning baa65aec7bc75260254b5f03447f0c16360f9e59
由于我有很多这样的依赖项,install/cloning 永远不会完成,导致我的 VM 运行 内存不足。
现在我尝试再次 运行 composer update
或删除 composer.lock 和 运行 composer install
。我什至尝试从 composer.json 中删除 packages.zendframework.com 存储库,因为 Zend 说,它不再需要了。
但是,由于新的ZF3版本,我遇到了无法解决的需求。
示例:
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
- jhuet/zdt-logger-module dev-master requires zendframework/zend-developer-tools ^1.1.0 -> satisfiable by zendframework/zend-developer-tools[1.2.x-dev, 1.1.x-dev].
- Can only install one of: zendframework/zend-developer-tools[dev-master, 1.2.x-dev].
- Conclusion: don't install zendframework/zend-servicemanager 2.7.7
- Conclusion: don't install zendframework/zend-servicemanager 3.1.1
- Conclusion: don't install zendframework/zend-servicemanager 3.1.0
- Installation request for zendframework/zend-developer-tools dev-master -> satisfiable by zendframework/zend-developer-tools[dev-master].
- Conclusion: don't install zendframework/zend-servicemanager 2.7.6|install zendframework/zend-servicemanager 3.1.0
- Installation request for zfcampus/zf-apigility-admin ~1.0 -> satisfiable by zfcampus/zf-apigility-admin[1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.1.0, 1.1.1, 1.1.2, 1.2.0, 1.2.1, 1.2.2, 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.5.0, 1.5.1, 1.5.2, 1.5.3, 1.5.4, 1.5.5, 1.5.6, 1.5.7].
- Installation request for jhuet/zdt-logger-module dev-master -> satisfiable by jhuet/zdt-logger-module[dev-master].
- Installation request for zf-commons/zfc-rbac ~2.0 -> satisfiable by zf-commons/zfc-rbac[2.0.0, 2.1.0, 2.1.1, 2.1.2, 2.2.0, 2.3.0, 2.3.1, 2.4.0, 2.4.1, 2.4.2, v2.5.0, v2.5.1, v2.5.2, v2.5.3, v2.5.4, v2.5.5, v2.5.6].
- jhuet/zdt-logger-module dev-master requires zendframework/zend-servicemanager 3.* -> satisfiable by zendframework/zend-servicemanager[3.0.0, 3.0.1, 3.0.2, 3.0.3, 3.1.0, 3.1.1].
- Can only install one of: zendframework/zend-servicemanager[3.0.0, 2.7.5].
- Can only install one of: zendframework/zend-servicemanager[3.0.1, 2.7.5].
- Can only install one of: zendframework/zend-servicemanager[3.0.2, 2.7.5].
- zendframework/zend-developer-tools 1.1.x-dev requires zendframework/zend-servicemanager ^2.7.5 || ^3.0.3 -> satisfiable by zendframework/zend-servicemanager[2.7.5, 2.7.6, 2.7.7, 3.0.3, 3.1.0, 3.1.1].
- Conclusion: don't install zendframework/zend-servicemanager 3.0.3
后果:我无法再让我的 ZF2 应用程序进入工作状态。我该如何解决这个问题?
这是我的 composer.json:
{
"name": "myapp",
"description": "My app",
"version": "1.5.0",
"require": {
"php": "~7.0",
"ext-intl": ">=1.1.0",
"ext-mbstring": "*",
"zendframework/zendframework": "~2.5",
"zf-commons/zfc-user": "~1.0",
"zf-commons/zfc-rbac": "~2.0",
"zendframework/zendoauth": "~2.0",
"zfcampus/zf-apigility": "~1.0",
"zfcampus/zf-development-mode": "~2.0",
"aws/aws-sdk-php-zf2": "~2.0",
"goalio/goalio-forgotpassword": "~1.0",
"maglnet/magl-markdown": "~1.4",
"ocramius/proxy-manager": "~1.0"
},
"require-dev": {
"zfcampus/zf-apigility-admin": "~1.0",
"zfcampus/zf-apigility-documentation": "~1.0",
"zendframework/zend-developer-tools": "dev-master",
"jhuet/zdt-logger-module": "dev-master",
"bjyoungblood/bjy-profiler": "dev-master"
}
}
我希望,这可以通过某种方式解决,无需大量手动工作。
当您需要像 dev-master 这样的东西时,您可能总是 运行 遇到这些问题。最佳做法是坚持使用语义版本号,如果包维护者遵循语义版本控制,您不应该 运行 要求包进行重大更改。
在您的情况下,您依赖于 "jhuet/zdt-logger-module" 的开发主版本。这个最近更新为支持 ZF3。如果你删除 "jhuet/zdt-logger-module": "dev-master",
,它似乎对我有用。
要保留该包裹,您需要:"jhuet/zdt-logger-module": "^0.3"
。这确保它不会加载需要 ZF3 的更新的 1.0.0 包。
由于 Zend 不断发布其核心包的 ZF3 版本,我在使用旧的 ZF2 应用程序时遇到了问题。
如果我 运行 composer install
有一个有效的 composer.lock 到位,我会收到大多数 ZF 依赖项的以下警告:
- Installing zendframework/zend-stdlib (2.7.7)
Downloading: 100%
Failed to download zendframework/zend-stdlib from dist: The checksum verification of the file failed (downloaded from https://packages.zendframework.com/composer/zendframework-zend-stdlib-2.7.7-19d9a4.zip)
Now trying to download from source
- Installing zendframework/zend-stdlib (2.7.7)
Cloning baa65aec7bc75260254b5f03447f0c16360f9e59
由于我有很多这样的依赖项,install/cloning 永远不会完成,导致我的 VM 运行 内存不足。
现在我尝试再次 运行 composer update
或删除 composer.lock 和 运行 composer install
。我什至尝试从 composer.json 中删除 packages.zendframework.com 存储库,因为 Zend 说,它不再需要了。
但是,由于新的ZF3版本,我遇到了无法解决的需求。
示例:
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
- jhuet/zdt-logger-module dev-master requires zendframework/zend-developer-tools ^1.1.0 -> satisfiable by zendframework/zend-developer-tools[1.2.x-dev, 1.1.x-dev].
- Can only install one of: zendframework/zend-developer-tools[dev-master, 1.2.x-dev].
- Conclusion: don't install zendframework/zend-servicemanager 2.7.7
- Conclusion: don't install zendframework/zend-servicemanager 3.1.1
- Conclusion: don't install zendframework/zend-servicemanager 3.1.0
- Installation request for zendframework/zend-developer-tools dev-master -> satisfiable by zendframework/zend-developer-tools[dev-master].
- Conclusion: don't install zendframework/zend-servicemanager 2.7.6|install zendframework/zend-servicemanager 3.1.0
- Installation request for zfcampus/zf-apigility-admin ~1.0 -> satisfiable by zfcampus/zf-apigility-admin[1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.1.0, 1.1.1, 1.1.2, 1.2.0, 1.2.1, 1.2.2, 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.5.0, 1.5.1, 1.5.2, 1.5.3, 1.5.4, 1.5.5, 1.5.6, 1.5.7].
- Installation request for jhuet/zdt-logger-module dev-master -> satisfiable by jhuet/zdt-logger-module[dev-master].
- Installation request for zf-commons/zfc-rbac ~2.0 -> satisfiable by zf-commons/zfc-rbac[2.0.0, 2.1.0, 2.1.1, 2.1.2, 2.2.0, 2.3.0, 2.3.1, 2.4.0, 2.4.1, 2.4.2, v2.5.0, v2.5.1, v2.5.2, v2.5.3, v2.5.4, v2.5.5, v2.5.6].
- jhuet/zdt-logger-module dev-master requires zendframework/zend-servicemanager 3.* -> satisfiable by zendframework/zend-servicemanager[3.0.0, 3.0.1, 3.0.2, 3.0.3, 3.1.0, 3.1.1].
- Can only install one of: zendframework/zend-servicemanager[3.0.0, 2.7.5].
- Can only install one of: zendframework/zend-servicemanager[3.0.1, 2.7.5].
- Can only install one of: zendframework/zend-servicemanager[3.0.2, 2.7.5].
- zendframework/zend-developer-tools 1.1.x-dev requires zendframework/zend-servicemanager ^2.7.5 || ^3.0.3 -> satisfiable by zendframework/zend-servicemanager[2.7.5, 2.7.6, 2.7.7, 3.0.3, 3.1.0, 3.1.1].
- Conclusion: don't install zendframework/zend-servicemanager 3.0.3
后果:我无法再让我的 ZF2 应用程序进入工作状态。我该如何解决这个问题?
这是我的 composer.json:
{
"name": "myapp",
"description": "My app",
"version": "1.5.0",
"require": {
"php": "~7.0",
"ext-intl": ">=1.1.0",
"ext-mbstring": "*",
"zendframework/zendframework": "~2.5",
"zf-commons/zfc-user": "~1.0",
"zf-commons/zfc-rbac": "~2.0",
"zendframework/zendoauth": "~2.0",
"zfcampus/zf-apigility": "~1.0",
"zfcampus/zf-development-mode": "~2.0",
"aws/aws-sdk-php-zf2": "~2.0",
"goalio/goalio-forgotpassword": "~1.0",
"maglnet/magl-markdown": "~1.4",
"ocramius/proxy-manager": "~1.0"
},
"require-dev": {
"zfcampus/zf-apigility-admin": "~1.0",
"zfcampus/zf-apigility-documentation": "~1.0",
"zendframework/zend-developer-tools": "dev-master",
"jhuet/zdt-logger-module": "dev-master",
"bjyoungblood/bjy-profiler": "dev-master"
}
}
我希望,这可以通过某种方式解决,无需大量手动工作。
当您需要像 dev-master 这样的东西时,您可能总是 运行 遇到这些问题。最佳做法是坚持使用语义版本号,如果包维护者遵循语义版本控制,您不应该 运行 要求包进行重大更改。
在您的情况下,您依赖于 "jhuet/zdt-logger-module" 的开发主版本。这个最近更新为支持 ZF3。如果你删除 "jhuet/zdt-logger-module": "dev-master",
,它似乎对我有用。
要保留该包裹,您需要:"jhuet/zdt-logger-module": "^0.3"
。这确保它不会加载需要 ZF3 的更新的 1.0.0 包。