我是这么想的
composer update videlalvaro/php-amqplib
只会更新一个依赖项,而不是更新所有依赖项。
我错过了什么?
PS:此依赖项在 composer.json
中定义为 "videlalvaro/php-amqplib": "2.2.0"
PPS:使用的 composer 版本是 3da05c68f9561fa822c522b1815435ff990493ff 2013-10-02 14:25:06
PPPS:实际输出:
$ composer.phar update videlalvaro/php-amqplib --no-dev
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
- symfony/icu v1.2.0 requires lib-icu >=4.4 -> the requested linked library icu has the wrong version installed or is missing from your system, make sure to have the extension providing it.
- symfony/icu v1.2.0 requires lib-icu >=4.4 -> the requested linked library icu has the wrong version installed or is missing from your system, make sure to have the extension providing it.
- Installation request for symfony/icu == 1.2.0.0 -> satisfiable by symfony/icu[v1.2.0].
最佳答案
命令 composer update videlalvaro/php-amqplib
只是更新该依赖项。但是它不会禁用 Composer 所做的其他依赖项检查。
错误消息提示的是 lib-icu 在您的系统上不可用。显然这可以通过安装 PHP Intl 扩展来解决。
如果您在其中一个要求中需要 PHP 5.5 的项目执行 composer update,降级到 PHP 5.4,然后在另一个不需要 PHP 5.5 的要求上运行 composer update,您会看到类似的问题。即使您不会更新需要 PHP 5.5 的需求,该包的需求也无法解析,因此 Composer 会失败。
在您的情况下,即使您只是尝试将 videlalvaro/php-amqplib
更新到最新版本,也无法满足 symfony/icu
的要求,因此 Composer 更新失败。
编辑
为了提供帮助,我猜您在上次更新后重新安装了 PHP,并且删除或忘记安装 PHP Intl 扩展。 Composer 无法令人满意地满足您的 composer.json 设置的要求,因此默认不做任何事情,而不是故意在不满足要求的情况下进行更新。
所以基本上,您需要安装运行现有已安装软件所需的 PHP 扩展,然后 Composer 将能够更新您要更新的单个包,以及满足其他包的要求.
关于php - 我将如何只更新一个 Composer 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19148727/