"Root composer.json requires ocramius/package-versions..." 但我的 composer.json 中没有这样的要求
"Root composer.json requires ocramius/package-versions..." but there is no such requirement in my composer.json
在 Symfony 4 项目中,在作曲家自我更新到 2.1(从 1.x)后我遇到了问题。点击
时的错误信息之一
composer update nothing
是:
Root composer.json requires ocramius/package-versions == 1.3.0.0 -> satisfiable by ocramius/package-versions[1.3.0].
在我看来,真正奇怪的是我的 composer.json 不包含对“ocramius/package-versions”的任何引用,不知何故我无法追踪它的来源。甚至陌生人:当我尝试
composer show ocramius/package-versions --tree
我明白了
[InvalidArgumentException]
Package ocramius/package-versions not found
我的项目中对“ocramius/package-versions”的唯一引用来自
- composer.lock
- vendor/composer/package-versions-deprecated/composer.json
- vendor/composer/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
成功了。哦!
正如您在 packagist page of that package 上看到的那样,v1.3.0 与 Composer v2 不兼容,因为它需要 composer-plugin-api: ^1.0.0
。如果你想使用 Composer v2,你需要更新那个包。
如果你想检查哪个包需要这个,你可以使用composer why
在 Symfony 4 项目中,在作曲家自我更新到 2.1(从 1.x)后我遇到了问题。点击
时的错误信息之一composer update nothing
是:
Root composer.json requires ocramius/package-versions == 1.3.0.0 -> satisfiable by ocramius/package-versions[1.3.0].
在我看来,真正奇怪的是我的 composer.json 不包含对“ocramius/package-versions”的任何引用,不知何故我无法追踪它的来源。甚至陌生人:当我尝试
composer show ocramius/package-versions --tree
我明白了
[InvalidArgumentException]
Package ocramius/package-versions not found
我的项目中对“ocramius/package-versions”的唯一引用来自
- composer.lock
- vendor/composer/package-versions-deprecated/composer.json
- vendor/composer/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
成功了。哦!
正如您在 packagist page of that package 上看到的那样,v1.3.0 与 Composer v2 不兼容,因为它需要 composer-plugin-api: ^1.0.0
。如果你想使用 Composer v2,你需要更新那个包。
如果你想检查哪个包需要这个,你可以使用composer why