我怎么才更新一个作曲家依赖?

问题描述 投票:30回答:2

我期望

composer update videlalvaro/php-amqplib

只会更新一个依赖项,而不是更新所有依赖项。

我错过了什么?

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].
php composer-php
2个回答
37
投票

命令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将能够更新您要更新的单个软件包,并满足其他软件包的要求。


18
投票

tl;博士:

您可以在一个命令中列出要更新的多个依赖项:

composer update one/dependency second/dependency other/dependency

故事:

如果您只想更新一个依赖项(composer update some/dependency),则可能会遇到一个问题,即由于在错误的版本中安装了某些其他依赖项,请求无法满足。并且那个不一定必须列在你的composer.json中,它可能只是某些其他依赖的依赖。

例如。我想只更新并且只更新google/apiclient,但是调用composer update google/apiclient抱怨,google/auth(apiclient的依赖)需要guzzlehttp/psr7版本1.2.3。我安装了1.3.0guzzlehttp/psr7没有在我的composer.json中列出。我必须做的是打电话:

composer update guzzlehttp/psr7 google/apiclient

就是这样!只需更新你想要的软件包,如果作曲家告诉你,你需要更新(或降级:-))其他软件包,请在命令中列出。

© www.soinside.com 2019 - 2024. All rights reserved.