Подтвердить что ты не робот

Как я могу только обновить зависимость одного композитора?

Я ожидал, что

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].
4b9b3361

Ответ 1

Команда composer update videlalvaro/php-amqplib просто обновляет эту зависимость. Однако это не отключает проверку других зависимостей, выполняемых Composer.

О чем сообщается сообщение об ошибке, является то, что lib-icu недоступен в вашей системе. По-видимому, это было бы решено путем установки расширения PHP Intl.

Вы бы увидели похожие проблемы, если бы вы выполнили обновление композитора в проекте, для которого требуется, чтобы PHP 5.5 в одном из них требовался, с понижением до PHP 5.4, а затем выполнял обновление компоновщика по отдельному требованию, что не требовало PHP 5.5. Несмотря на то, что вы не будете обновлять требования, требующие PHP 5.5, требования к этому пакету не будут разрешимы, и поэтому Composer завершится с ошибкой.

В вашем случае, даже если вы просто пытаетесь обновить videlalvaro/php-amqplib до последней версии, требования для symfony/icu не выполняются, поэтому обновление композитора не выполняется.

Edit

Чтобы попытаться быть полезным, я предполагаю, что вы повторно установили PHP с момента последнего обновления, и либо удалили, либо забыли установить расширение PHP Intl. Композитор не может удовлетворительно удовлетворять требованиям, которые устанавливает ваш composer.json, и поэтому не выполняет ничего, а не сознательно выполняет обновление, где требования не выполняются.

В принципе, вам нужно установить расширения PHP, необходимые для запуска вашего установленного программного обеспечения, а затем Composer сможет обновить один пакет, который вы хотите обновить, а также выполнить требования к другим пакетам.

Ответ 2

ТЛ; др:

Вы можете перечислить более чем одну зависимость для обновления в одной команде:

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.0. guzzlehttp/psr7 не указан в моем composer.json. Я должен был позвонить:

composer update guzzlehttp/psr7 google/apiclient

и что это! Просто обновите требуемый пакет, и если композитор скажет вам, что вам нужно обновить (или понизить:-)) другой пакет, перечислите его в команде.