【问题标题】:requiring a specific commit of a package - composer seems to be ignoring composer.json requirements需要一个特定的包提交 - composer 似乎忽略了 composer.json 的要求
【发布时间】:2021-04-25 07:51:51
【问题描述】:

我有以下 composer.json / 要求:

    "require": {
        "php": ">=7.0",
        "ext-mbstring": "*",
        "ext-openssl": "*",
        "october/rain": "1.0.443",
        "october/system": "1.0.443",
        "october/backend": "1.0.443",
        "october/cms": "1.0.443",
        "laravel/framework": "5.5.*",
        "wikimedia/composer-merge-plugin": "dev-master#06deb2de8fe46826bbd3880003d2aed1716658b3"
    },

完整的 composer.json 可以在https://pastebin.com/SXTeWHgC找到

我在跑步:

  • Composer 1.10.19(因为 wikimedia/composer-merge-plugin 不适用于 Composer 2.0)
  • PHP 7.1.33(这是 prod 服务器所拥有的)

无论如何,当我执行composer update 时,我得到以下信息

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
    - Installation request for wikimedia/composer-merge-plugin dev-master#06deb2de8fe46826bbd3880003d2aed1716658b3 -> satisfiable by wikimedia/composer-merge-plugin[dev-master].
    - wikimedia/composer-merge-plugin dev-master requires php >=7.2.0 -> your PHP version (7.1.33) does not satisfy that requirement.

这对我来说没有任何意义。 wikimedia/composer-merge-plugin dev-master#06deb2de8fe46826bbd3880003d2aed1716658b3 不需要 >= 7.2.0 - 它需要 >= 5.3.2。那么为什么会出现这个错误,我该怎么办呢?

【问题讨论】:

标签: php composer-php octobercms php-7.1


【解决方案1】:

来自作曲家文档:

注意:此功能有严格的技术限制,因为 composer.json 元数据仍会从您在哈希之前指定的分支名称中读取。因此,您应该只在开发期间将其用作临时解决方案来修复暂时性问题,直到您可以切换到标记版本。 Composer 团队不积极支持此功能,也不会接受与其相关的错误报告。

来源:https://getcomposer.org/doc/04-schema.md#package-links

这与您所看到的行为完全一致,该库的 composer.json 从分支的 dev-master HEAD 提交而不是显式提交引用中是红色的。 p>

【讨论】:

  • 我同意这是一个坏主意,但正是 OctoberCMS 正在这样做。就像看看他们最新的标记版本:github.com/octobercms/october/blob/v1.1.1/composer.json#L46 里面有"wikimedia/composer-merge-plugin": "dev-feature/composer-v2 as 1.5.0"。他们不应该制作具有像 imho 这样的开发部门的标记版本。
  • 不太符合你的逻辑。他们指向那个分支的 HEAD,无论它是 dev 还是另一个分支,它与试图引用特定提交的问题有什么关系?
  • 而FWIIW,你所指的OctoberCMS的composer.json也在声明"php": ">=7.2"
  • 我说“喜欢看看他们最新的标记版本”。标记 any 分支的 HEAD 是一个糟糕的主意,因为 HEAD 没有及时修复。 HEAD 可以改变。如果他们删除分支怎么办?如果他们对该分支或他们标记的任何其他分支进行破坏性更改怎么办?是我用的那个版本吗?不。我知道我的 composer.json 来自哪个版本的 OctoberCMS。关键是,甚至在他们最新的标记版本中,他们正在做的事情他们在做恕我直言时的业务为零。
  • dev-feature/composer-v2 as 1.5.0 没有指向特定的 git commit,您问题的版本要求是
【解决方案2】:

您可以使用另一个分支,您必须将其作为您自己的 fork 提供(将 HEAD 恢复为您想要使用的一个提交)。或者你可能意识到你正在骑着一匹死马然后下车......这意味着更新 PHP、composer 并只使用composer20 分支。您声称 wikimedia/composer-merge-plugin 不适用于 composer 2.x 是错误的。

【讨论】:

    猜你喜欢
    • 2013-06-01
    • 2019-01-13
    • 2015-06-06
    • 2022-08-17
    • 1970-01-01
    • 2014-10-05
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多