Заставьте symfony установить зависимости той же версии - PullRequest
1 голос
/ 04 июня 2019

Итак, я недавно обновил свой проект symfony до версии 4.3, и, поскольку он вызывал проблемы, я снизил его до 4.2.9.Но, несмотря на мои усилия и различные опции composer, он продолжает устанавливать свои зависимости на 4.3 (twig, security, yaml ...), хотя его файл composer.json ясно показывает, что он должен использовать ту же версию.Я удалил vendor, очистил кеш, удалил composer.lock и symfony.lock, используя опцию --no-cache, специально установив версию symfony в composer точно на 4.2.9, но он всегда устанавливает 4.3, что немного разочаровывает.Если я извлекаю старый composer.lock и делаю установку, он работает, но обновление все равно установит 4.3, хотя я установил 4.2.9 в json для symfony.

Есть ли выход?Спасибо

Я использую

composer update --no-cache --dry-run

, чтобы увидеть, что мы устанавливаем без фактической установки

И это мой composer.json

{
    "type": "project",
    "license": "proprietary",
    "require": {
        "php": "^7.1.3",
        "ext-iconv": "*",
        "friendsofsymfony/jsrouting-bundle": "^2.3",
        "sensio/framework-extra-bundle": "^5.1",
        "symfony/console": "^4.0",
        "symfony/flex": "^1.0",
        "symfony/form": "^4.0",
        "symfony/framework-bundle": "4.2.9",
        "symfony/lts": "^4@dev",
        "symfony/monolog-bundle": "^3.3",
        "symfony/orm-pack": "^1.0",
        "symfony/security-bundle": "^4.1",
        "symfony/translation": "^4.0",
        "symfony/twig-bundle": "^4.0",
        "symfony/validator": "^4.0",
        "symfony/webpack-encore-pack": "^1.0",
        "symfony/yaml": "^4.0"
    },
    "require-dev": {
        "doctrine/doctrine-fixtures-bundle": "^3.0",
        "sensiolabs/security-checker": "^5.0",
        "symfony/debug-bundle": "^4.1",
        "symfony/dotenv": "^4.0",
        "symfony/maker-bundle": "^1.9",
        "symfony/profiler-pack": "^1.0",
        "symfony/web-server-bundle": "^4.0"
    },
    "config": {
        "preferred-install": {
            "*": "dist"
        },
        "sort-packages": true
    },
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "App\\Tests\\": "tests/"
        }
    },
    "replace": {
        "symfony/polyfill-iconv": "*",
        "symfony/polyfill-php71": "*",
        "symfony/polyfill-php70": "*",
        "symfony/polyfill-php56": "*"
    },
    "scripts": {
        "auto-scripts": {
            "cache:clear": "symfony-cmd",
            "assets:install --symlink --relative %PUBLIC_DIR%": "symfony-cmd",
            "security-checker security:check": "script"
        },
        "post-install-cmd": [
            "@auto-scripts"
        ],
        "post-update-cmd": [
            "@auto-scripts"
        ]
    },
    "conflict": {
        "symfony/symfony": "*"
    },
    "extra": {
        "symfony": {
            "allow-contrib": false,
            "require": "4.2.9"
        }
    }
}

Примечание: я не говорю о зависимостях моего собственного composer.json, а о зависимостях, установленных Symfony, таких как http-foundation или http-kernel.

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

Для зависимостей, которые вы указали в качестве версии ^ 4.0, что означает новейшую версию, начинающуюся с 4. Если последнее обновление вызвало проблемы, вы должны изменить эти ограничения на что-то более ограничительное, например, на ту версию, которую вы использовали до (4.2.9). Затем запустите обновление Comoser и правильные версии должны быть установлены.

0 голосов
/ 04 июня 2019

composer.lock Поддерживает точные версии, которые использовались ранее.существует разница между «обновлением композитора» и «установкой композитора»

вернуть composer.lock

git checkout -- composer.lock
rm -rf vendor 
composer install
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...