我期望
composer update videlalvaro/php-amqplib
Run Code Online (Sandbox Code Playgroud)
只会更新一个依赖项,而不是更新所有依赖项.
我错过了什么?
PS:这种依赖性被定义为"videlalvaro/php-amqplib": "2.2.0"
在composer.json
PPS:使用的作曲家版本是 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].
Run Code Online (Sandbox Code Playgroud)
Dan*_*ack 39
该命令composer update videlalvaro/php-amqplib
只会更新该依赖项.但是,它不会禁用Composer执行的其他依赖项检查.
错误消息抱怨的是您的系统上没有lib-icu.显然,这可以通过安装PHP Intl扩展来解决.
如果你在一个需要PHP 5.5的项目上做了一个作曲家更新,你会看到类似的问题,降级到PHP 5.4,然后在单独的require上运行composer update,不需要PHP 5.5.即使你不会更新需要PHP 5.5的需求,该包的要求也无法解决,因此Composer会失败.
在您的情况下,即使您只是尝试更新videlalvaro/php-amqplib
到最新版本,symfony/icu
也不会满足要求,因此编写器更新失败.
编辑
为了尝试提供帮助,我猜你自上次更新后重新安装了PHP,并且已删除或忘记安装PHP Intl扩展.Composer无法令人满意地满足您的composer.json设置的要求,因此默认无效,而不是故意进行不满足要求的更新.
基本上,您需要安装现有已安装软件运行所需的PHP扩展,然后Composer将能够更新您要更新的单个软件包,并满足其他软件包的要求.
hej*_*dav 19
您可以在一个命令中列出要更新的多个依赖项:
composer update one/dependency second/dependency other/dependency
Run Code Online (Sandbox Code Playgroud)
如果您只想更新一个依赖项(composer update some/dependency
),则可能会遇到一个问题,即由于某些其他依赖项安装在错误的版本中,请求无法满足.并且那个不一定必须列在你的composer.json
,它可能只是一些其他依赖的依赖.
例如,我只想更新google/apiclient
,但只是调用composer update google/apiclient
抱怨,google/auth
(apiclient的依赖)需要guzzlehttp/psr7
在版本中1.2.3
.我1.3.0
安装了.这个guzzlehttp/psr7
没有列在我的composer.json
.我必须做的是打电话:
composer update guzzlehttp/psr7 google/apiclient
Run Code Online (Sandbox Code Playgroud)
就是这样!只需更新你想要的软件包,如果作曲家告诉你,你需要更新(或降级:-))其他软件包,请在命令中列出.