0

在 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”的唯一引用来自

  1. 作曲家锁
  2. 供应商/composer/package-versions-deprecated/composer.json
  3. 供应商/作曲家/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

成功了。哦!

4

1 回答 1

1

正如您在该软件包的 packagist 页面上看到的那样,v1.3.0与 Composer v2 不兼容,因为它需要composer-plugin-api: ^1.0.0. 如果要使用 Composer v2,则需要更新该软件包。

如果你想检查哪个包需要这个,你可以使用composer why

于 2021-07-20T05:37:05.980 回答