在 Symfony 4 项目中,我在 composer selfupdate 到 2.1(从 1.x)后遇到问题。击中时的错误消息之一
composer update nothing
是:
根 composer.json 需要 ocramius/package-versions == 1.3.0.0 -> 可由 ocramius/package-versions[1.3.0] 满足。
在我看来,真正奇怪的是我的 composer.json 不包含对“ocramius/package-versions”的任何引用,并且不知何故我无法追踪它的来源。更奇怪的是:当我尝试
composer show ocramius/package-versions --tree
我明白了
[InvalidArgumentException]
找不到包 ocramius/包版本
我的项目中对“ocramius/package-versions”的唯一引用来自
- 作曲家锁
- 供应商/composer/package-versions-deprecated/composer.json
- 供应商/作曲家/installed.json
似乎它卡在了 composer.lock 中,但由于副作用,我不想对整个项目运行真正的作曲家更新。有什么想法我能做什么?
编辑:在被戳到的方向之后,composer why我设法找出了为什么 ocramius/package-versions 包含在内,但仍然是 1.3.0:
$ composer why ocramius/package-versions
composer/package-versions-deprecated 1.11.99.2 replaces ocramius/package-versions (1.11.99)
ocramius/package-versions 2.3.0 replaces composer/package-versions-deprecated (*)
$ composer why composer/package-versions-deprecated
composer/package-versions-deprecated 1.11.99.2 replaces ocramius/package-versions (1.11.99)
doctrine/migrations 3.2.0 requires composer/package-versions-deprecated (^1.8)
doctrine/orm 2.7.5 requires composer/package-versions-deprecated (^1.8)
symfony/proxy-manager-bridge v4.4.25 requires composer/package-versions-deprecated (^1.8)
好的,所以我终于找到了包含这些软件包的原因。但是为什么是错误的版本?然后天平从我眼前掉了下来:为什么不直接更新它而不是试图找出为什么选择这个版本......???一个简单的
composer update ocramius/package-versions
成功了。哦!