Composer require 失败,无法安装软件包。

3

我有一个使用composer的项目,主要的composer.json文件需要vendor/package-1,该文件也需要在package-1的composer.json中引用vendor/package-2。目前我已经安装了vendor/package-1的版本1.18.11和vendor/package-2的版本2.3.2。 我想升级到新的vendor/package-1版本1.19.*(需要从vendor/package-2获取版本2.4.*),并执行以下操作:

composer require vendor/package-1:1.19.*

失败,我得到的输出是:
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
    - vendor/package-1 v1.19.2 requires vendor/package2 2.4.* -> satisfiable by vendor/package2[v2.4.3, v2.4.0, v2.4.1, v2.4.2].
    - vendor/package-1 v1.19.1 requires vendor/package2 2.4.* -> satisfiable by vendor/package2[v2.4.3, v2.4.0, v2.4.1, v2.4.2].
    - vendor/package-1 v1.19.2 requires vendor/package2 2.4.* -> satisfiable by vendor/package2[v2.4.3, v2.4.0, v2.4.1, v2.4.2].
    - Can only install one of: vendor/package2[v2.3.2, v2.4.3].
    - Can only install one of: vendor/package2[v2.4.0, v2.3.2].
    - Can only install one of: vendor/package2[v2.4.1, v2.3.2].
    - Can only install one of: vendor/package2[v2.4.2, v2.3.2].
    - Can only install one of: vendor/package2[v2.4.3, v2.3.2].
    - Installation request for vendor/package2 == 2.3.2.0 -> satisfiable by vendor/package2[v2.3.2].
    - Installation request for vendor/package-1 1.19.* -> satisfiable by vendor/package-1[v1.19.1, v1.19.2].

Installation failed, reverting ./composer.json to its original content.

composer require命令需要为所有依赖项指定吗?如果我尝试执行以下操作:

composer require vendor/package-1:1.19.* vendor/package-2:2.4.*

它能够工作,但不应该需要指定每个依赖项,对吗?

2个回答

3
这应该是可能的,使用以下方法:
composer require vendor/package-1:1.19.* --update-with-dependencies

哇,那是一段时间以前的事了,但看起来是一个正确的回答,但我不能再尝试了...抱歉。 - Khriz
1
没问题,如果其他人遇到同样的问题,我会回复的。 - Edi Modrić

3

看起来 vendor/package2 要求固定版本为 2.3.2 或 2.3.*,不能更新到 2.4。

一般而言,您应该尝试放宽版本要求以允许兼容的更新。使用波浪线运算符,将 package2 要求为 ~2.3(最低版本为 2.3,只要不是不兼容的 3 版本,就可以进行更新)。对于 package1 也是如此:如果需要包含在 1.19 系列中的功能,则应要求 ~1.19。


事实上,package1在1.18.*版本中需要2.3.*版本的package2,而在1.19.*版本中需要2.4.*版本的package2,但我不明白为什么如果更新了package1,它不能更新到相匹配的package2版本。 - Khriz
你的主要包的当前 composer.json 对这两个包有什么说法? - Sven
邮件composer.json中只有package1(如下所示:“vendor/package1”:“1.19.*”),package2包含在package1的composer.json中。 - Khriz
那么,我认为问题在于你只影响了单个package1,而没有经过CLI命令授权的情况下无法更新到所需版本的package2。我会手动更改composer.json以要求正确的新版本package1,然后运行“composer update” - 我期望这会起作用。 - Sven
是的,那个方法可行,但我试图使用require命令手动设置我想要更新的版本,而不是获取最新可用的版本。看起来这是不可能的,我是对的吗? - Khriz
谢谢,你救了我的一天! - Damjan Pavlica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接