Я работаю над проектом, который использует composer
для управления зависимостями:
{
"require": {
"doctrine/annotations": "1.8.0",
"doctrine/dbal": "2.9.3",
"doctrine/orm": "2.7.1",
"doctrine/reflection": "1.2.0",
"giggsey/libphonenumber-for-php": "8.11.5",
"guzzlehttp/guzzle": "6.5.2",
"james-heinrich/getid3": "v1.9.19",
"php-extended/php-http-message-factory-psr17": "2.0.0",
"phpoffice/phpspreadsheet": "1.10.1",
"psr/event-dispatcher": "1.0.0",
"sabre/vobject": "4.2.2",
"sabre/xml": "2.1.3",
"spiral/roadrunner": "1.7.0",
"symfony/browser-kit": "4.4.4",
"symfony/cache": "v4.4.4",
"symfony/class-loader": "v3.4.38",
"symfony/config": "4.4.4",
"symfony/console": "4.4.4",
"symfony/css-selector": "4.4.4",
"symfony/debug": "4.4.4",
"symfony/dependency-injection": "4.4.4",
"symfony/dom-crawler": "4.4.4",
"symfony/error-handler": "4.4.4",
"symfony/event-dispatcher": "v4.4.4",
"symfony/expression-language": "4.4.4",
"symfony/filesystem": "4.4.4",
"symfony/finder": "4.4.4",
"symfony/http-foundation": "4.4.4",
"symfony/http-kernel": "4.4.4",
"symfony/mailer": "4.4.4",
"symfony/mime": "4.4.4",
"symfony/polyfill-ctype": "1.14.0",
"symfony/polyfill-intl-idn": "1.14.0",
"symfony/polyfill-mbstring": "1.14.0",
"symfony/polyfill-php72": "1.14.0",
"symfony/polyfill-php73": "1.14.0",
"symfony/process": "4.4.4",
"symfony/service-contracts": "2.0.1",
"symfony/validator": "4.4.4",
"symfony/var-dumper": "4.4.4",
"symfony/var-exporter": "4.4.4",
"symfony/yaml": "4.4.4"
}
}
Я пытаюсь добавить новую зависимость в проект, а именно symfony/contracts
. Этот пакет заменяет несколько других пакетов Symfony
, в том числе пакет symfony/event-dispatcher-contracts
, который косвенно требуется в качестве зависимости в проекте.
Однако при выполнении команды composer require symfony/contracts
появляется сообщение об ошибке что я не могу понять:
# composer require symfony/contracts:2.0.1
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- don't install symfony/event-dispatcher-contracts v1.1.7|don't install symfony/contracts v2.0.1
- don't install symfony/contracts v2.0.1|remove symfony/event-dispatcher-contracts v1.1.7
- don't install symfony/contracts v2.0.1|don't install symfony/event-dispatcher-contracts v1.1.7
- Installation request for symfony/contracts 2.0.1 -> satisfiable by symfony/contracts[v2.0.1].
- Installation request for symfony/event-dispatcher-contracts (locked at v1.1.7) -> satisfiable by symfony/event-dispatcher-contracts[v1.1.7].
Installation failed, reverting ./composer.json to its original content.
Я пытался удалить все, кроме composer.json
и выполнить переустановку, но в результате возникла та же ошибка.
Еще одна загадочная проблема заключалась в том, что * Пакет 1017 * явно не заблокирован в composer.json
для определенной версии, однако в сообщении об ошибке указывается версия v1.1.7
вместо самой последней, которая на данный момент составляет 2.0.1
. Просматривая файл composer.lock
, я вижу, что есть одна директива require
, которая включает этот пакет, определяемая как symfony/event-dispatcher
требует "symfony/event-dispatcher-contracts": "^1.1"
. Это действительно вынуждает symfony/event-dispatcher-contracts
к версии 1.1.7
, но я не могу объяснить, почему он вызывает установку пакета, вместо того, чтобы заменить его на symfony/contracts
.
Как я могу добавить symfony/contracts
в этот проект и удалите зависимость symfony/event-dispatcher-contracts
(которая входит в пакет symfony/contracts
).