Почему composer update обновляет symfony до версии 2.5, но это «symfony / symfony»: «~ 2.4»?

#php #symfony #composer-php

#php #symfony #composer-php

Вопрос:

Возможно, я совершенно не прав в том, как работает Composer, но учитывая следующее composer.json (часть Symfony, с некоторыми дополнительными требованиями, не показанными здесь):

 "require": {
    "php": ">=5.3.3",
    "symfony/symfony": "~2.4",
    "doctrine/orm": "dev-master",
    "doctrine/dbal": "dev-master",
    "doctrine/doctrine-bundle": "dev-master",
    "twig/extensions": "~1.0",
    "symfony/assetic-bundle": "~2.3",
    "symfony/swiftmailer-bundle": "~2.3",
    "symfony/monolog-bundle": "~2.4",
    "sensio/distribution-bundle": "~2.3",
    "sensio/framework-extra-bundle": "~3.0",
    "sensio/generator-bundle": "~2.3",
    "incenteev/composer-parameter-handler": "~2.0",
    // my requirements here
}
 

Когда я запускаю composer update , я получаю symfony / symfony 2.5 вместо ~ 2.4 (то есть AFAIK 2.4.1, 2.4.2 и т.д.).

Комментарии:

1. Здесь тот же вопрос. Я добавляю, чтобы обновить свой код до 2.5 в моем prod env. Было довольно странно.

2. Также должен быть вопрос: почему нет? Всегда спрашивайте с обеих сторон.

Ответ №1:

~2.4 эквивалентно >=2.4,<3.0 . Если вы хотите остаться с 2.4.x branch, вам придется использовать 2.4.* .

Вы можете прочитать больше о номерах версий на страницах документации Composer: https://getcomposer.org/doc/01-basic-usage.md#package-versions

Комментарии:

1. Моя ошибка… Я был убежден, что ~ 2.4 эквивалентно 2.4. *.

2. Просто для справки: эквивалент 2.4.* в ~ синтаксис ~ 2.4.0