gpt4 book ai didi

php - 为什么 composer 降级了我的软件包?

转载 作者:行者123 更新时间:2023-12-04 02:24:47 24 4
gpt4 key购买 nike

php composer.phar update这样做(删除了 2.3.0 包并安装了整个 2.2.5 Zend Framework):

$ php composer.phar update
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Removing zendframework/zend-filter (2.3.0)
- Removing zendframework/zend-view (2.3.0)
- Removing zendframework/zend-eventmanager (2.3.0)
- Removing zendframework/zend-loader (2.3.0)
- Removing zendframework/zend-escaper (2.3.0)
- Removing zendframework/zend-log (2.3.0)
- Removing zendframework/zend-servicemanager (2.3.0)
- Removing zendframework/zend-stdlib (2.3.0)
- Installing zendframework/zendframework (2.2.5)
Loading from cache
Writing lock file
Generating autoload files

为什么这样做?我的 composer.json 看起来像这样,并没有提出任何指导上述事件过程的内容:
"repositories":[
{
"type":"composer",
"url":"https://packagist.org/"
},
{
"type":"composer",
"url":"http://packages.zendframework.com/"
}
],
"require": {
"zendframework/zend-log" : "2.*",
"zendframework/zend-escaper" : "2.*",
"zendframework/zend-filter" : "2.*",
"zendframework/zend-view" : "2.*"
}

我的期望是:删除 2.3.0,安装 2.3.1 包

最佳答案

我的回答并没有完全描述它为什么被降级,因为 Composer 中的算法非常密集(这就是为什么 updateinstall 使用 .lock 花费的时间更长)。它们会检查您的所有依赖项、所有潜在版本,以及每个依赖项的版本的依赖项是什么。在获得所有这些信息后,它试图提出一个“完美”的匹配。

有时,您的依赖项或依赖项的依赖项中最轻微的更改都可能造成剧烈的更改。此外,有时您会发现无法解析依赖项,因为一个依赖项可能需要 symfony/http-foundation ~2.5并且可能需要 symfony/http-foundation 2.1.* (这不是您的情况发生的情况,但很高兴知道)。

总而言之,这个故事的寓意是你应该尽可能具体地描述你的 composer.json (特别是在生产中)。这样,您始终可以控制您使用的版本,而不是让 Composer 决定。更糟糕的情况是,您是否运行了 composer update它无法解决您的依赖项。然后对Packagist做一些研究看看哪些版本会很高兴地一起解决。

我建议使用任一版本 ~2.3 (与 >= 2.3< 3 相同)或 2.3.* .然后 Composer 甚至不会尝试版本 2.2.5 .查询 Composer's documentation看看如何表达不同的包版本。

关于php - 为什么 composer 降级了我的软件包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23140410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com