更新到 composer 2.0 后 TravisCI 版本矩阵出现问题
Problem with TravisCI version matrix after updating to composer 2.0
更新到 Composer 2.0 后,我在执行 Travis 时遇到了问题。
我有一个 TYPO3 扩展,我想用多个 TYPO3 版本进行测试。直到昨天,我都可以使用 composer require nimut/typo3-complete:$TYPO3_VERSION
(来自 Matrix 版本)来做到这一点。
更新后我关注了error/information。
Cannot update only a partial set of packages without a lock file present.
Installation failed, reverting ./composer.json to its original content.
因为我的存储库中没有 composer.lock,所以我先用 composer install
测试了我的管道,然后进行了更新。这一切都很好,直到我进入下一个版本,因为依赖项不同,composer install
中的 composer.lock 无法更新额外的依赖项。
我已经用 composer require --dev nimut/typo3-complete:^10.4 --with-all-dependencies
作曲家的回复试过了:
Problem 1
- typo3/testing-framework is locked to version 4.15.2 and an update of this package was not requested.
- typo3/testing-framework 4.15.2 requires typo3/cms-backend ^9.3 -> found typo3/cms-backend[v9.3.0, ..., 9.5.x-dev] but it conflicts with another require.
Problem 2
- symfony/http-client v5.1.7 requires symfony/http-client-contracts ^2.2 -> found symfony/http-client-contracts[dev-main, dev-master, v2.2.0, v2.3.1, 2.3.x-dev (alias of dev-master)] but it conflicts with another require.
- nunomaduro/phpinsights v1.14.0 requires sensiolabs/security-checker ^6.0 -> satisfiable by sensiolabs/security-checker[v6.0.3].
- sensiolabs/security-checker v6.0.3 requires symfony/http-client ^4.3|^5.0 -> satisfiable by symfony/http-client[v5.1.7].
- nunomaduro/phpinsights is locked to version v1.14.0 and an update of this package was not requested.
Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
-W
选项是我已经尝试过的选项。 -w
和 -W
我都试过了,目前还没有成功。
我还不确定如何解决这个问题,你的意见会很有帮助。
Link 至 .travis.yml
https://github.com/AOEpeople/crawler/blob/master/.travis.yml#L50
Link 到 Travis Build 进行测试。
https://travis-ci.org/github/AOEpeople/crawler/jobs/738603105#L1138
composer require
的问题已在 Composer 的 GitHub 存储库的 PR 9336 中报告并修复。它将出现在即将发布的 Composer 2.0.2 中。所以您可以升级到 2.0.2,它应该可以解决您的问题。
解释您的解决方法失败的原因:
composer require nimut/typo3-complete:$TYPO3_VERSION
编辑 composer.json 文件以添加 "nimut/typo3-complete": "^$TYPO3_VERSION"
。然后它 运行s composer update nimut/typo3-complete
,或者(在 Composer 1.x 或 2.0.2+ 上)一个普通的 composer update
如果还没有锁定文件存在。
如果你先运行一个没有锁文件的composer install
,这会执行一个composer update
,因为没有锁文件。随后的composer require
然后仍然编辑json文件,现在运行s composer update nimut/typo3-complete
因为有一个锁定文件。即使启用了所有依赖项选项,这也可能会产生不同的结果,甚至与 运行 宁一个普通的 composer update
发生冲突,因为您将更新限制为仅对新包及其依赖项进行更新。
更新到 Composer 2.0 后,我在执行 Travis 时遇到了问题。
我有一个 TYPO3 扩展,我想用多个 TYPO3 版本进行测试。直到昨天,我都可以使用 composer require nimut/typo3-complete:$TYPO3_VERSION
(来自 Matrix 版本)来做到这一点。
更新后我关注了error/information。
Cannot update only a partial set of packages without a lock file present.
Installation failed, reverting ./composer.json to its original content.
因为我的存储库中没有 composer.lock,所以我先用 composer install
测试了我的管道,然后进行了更新。这一切都很好,直到我进入下一个版本,因为依赖项不同,composer install
中的 composer.lock 无法更新额外的依赖项。
我已经用 composer require --dev nimut/typo3-complete:^10.4 --with-all-dependencies
作曲家的回复试过了:
Problem 1
- typo3/testing-framework is locked to version 4.15.2 and an update of this package was not requested.
- typo3/testing-framework 4.15.2 requires typo3/cms-backend ^9.3 -> found typo3/cms-backend[v9.3.0, ..., 9.5.x-dev] but it conflicts with another require.
Problem 2
- symfony/http-client v5.1.7 requires symfony/http-client-contracts ^2.2 -> found symfony/http-client-contracts[dev-main, dev-master, v2.2.0, v2.3.1, 2.3.x-dev (alias of dev-master)] but it conflicts with another require.
- nunomaduro/phpinsights v1.14.0 requires sensiolabs/security-checker ^6.0 -> satisfiable by sensiolabs/security-checker[v6.0.3].
- sensiolabs/security-checker v6.0.3 requires symfony/http-client ^4.3|^5.0 -> satisfiable by symfony/http-client[v5.1.7].
- nunomaduro/phpinsights is locked to version v1.14.0 and an update of this package was not requested.
Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
-W
选项是我已经尝试过的选项。 -w
和 -W
我都试过了,目前还没有成功。
我还不确定如何解决这个问题,你的意见会很有帮助。
Link 至 .travis.yml
https://github.com/AOEpeople/crawler/blob/master/.travis.yml#L50
Link 到 Travis Build 进行测试。 https://travis-ci.org/github/AOEpeople/crawler/jobs/738603105#L1138
composer require
的问题已在 Composer 的 GitHub 存储库的 PR 9336 中报告并修复。它将出现在即将发布的 Composer 2.0.2 中。所以您可以升级到 2.0.2,它应该可以解决您的问题。
解释您的解决方法失败的原因:
composer require nimut/typo3-complete:$TYPO3_VERSION
编辑 composer.json 文件以添加 "nimut/typo3-complete": "^$TYPO3_VERSION"
。然后它 运行s composer update nimut/typo3-complete
,或者(在 Composer 1.x 或 2.0.2+ 上)一个普通的 composer update
如果还没有锁定文件存在。
如果你先运行一个没有锁文件的composer install
,这会执行一个composer update
,因为没有锁文件。随后的composer require
然后仍然编辑json文件,现在运行s composer update nimut/typo3-complete
因为有一个锁定文件。即使启用了所有依赖项选项,这也可能会产生不同的结果,甚至与 运行 宁一个普通的 composer update
发生冲突,因为您将更新限制为仅对新包及其依赖项进行更新。