【问题标题】:What does "locked at" <tag> mean when running "composer update <package>"?运行“composer update <package>”时,“locked at”<tag> 是什么意思?
【发布时间】:2021-01-28 20:48:57
【问题描述】:

我正在尝试执行composer update &lt;package&gt;,但出现以下错误:

请求的包(锁定在,要求为 ) 可以满足 [] 但这些冲突 符合您的要求或最低稳定性。

同时,标签&lt;tag&gt; 仅作为字符串存在于我的composer.lock 文件中,我认为该文件仅被composer update 修改,没有回读。

我尝试运行composer why-not &lt;package&gt;,但它的输出并没有真正解释问题:

需要 ()

在这种情况下,“锁定”是什么意思?我该如何解决这个问题?

【问题讨论】:

  • 您的应用程序的composer.json 中的minimum-stability 设置是什么?包的dev-* 分支上的composer.json 内部的稳定性是什么?
  • 包的 dev-* 分支在 composer.json 中没有定义稳定性
  • 如果我们有具体的包名和您尝试使用的包的版本,我们可能会更容易调试您的问题。没有它,这是非常理论上的,因为我们无法重新创建您的具体问题。如果包在 packagist 上 -> 请将其添加到问题中。

标签: php composer-php


【解决方案1】:

包被locked 意味着与版本约束dev-&lt;branch&gt; 一起使用的分支上的最后一次提交的提交哈希在最后一次运行composer update 时保存在锁定文件中确保在部署时构建确定性(可重现)。

如果您满足以下条件,则此提交哈希或标记将写入您的锁定文件 (composer.lock):

  1. 运行composer update [&lt;package&gt;]

...或...

  1. 运行 composer install 并显示 composer.json,但在 composer 的当前目录中没有锁定文件,它会自动生成锁定文件

【讨论】:

  • 是的,但是作曲家更新不是简单地覆盖 composer.lock 中的任何现有哈希值以防它发生变化吗?据我了解,从这个意义上说,被“锁定”不应阻止相应的记录被覆盖。
  • 虽然这回答了“这个术语是什么意思”的确切问题,但它并不能真正帮助看到此错误的用户。
【解决方案2】:

当您将包名称指定为 composer update(例如 composer update somevendor/somepackage)时,您是在告诉 Composer 您想要更新该包并将其他所有内容保留在当前版本 - 你想要将所有其他软件包“锁定”在它们所在的位置,然后只更新一个。

只有当您指定的新版本的软件包与那些已经安装的软件包兼容时,这才有效。如果新版本需要更新版本的其他内容,或者列出它与特定版本“冲突”,Composer 会简单地告诉您它不能这样做。

其他包被“锁定”的版本存储在composer.lock 文件中,但您不应该手动编辑该文件。

您有几种方法可以告诉 Composer 它允许更新哪些包:

  • 一次更新多个特定包以解决特定问题:composer update somevendor/somepackage somethingelse/somedependency
  • 更新所选包及其所有依赖项除了您直接在 composer.json 中列出的那些composer update somevendor/somepackage --with-dependencies
  • 更新选定的包及其所有依赖项composer update somevendor/somepackage --with-all-dependencies
  • 只需更新所有内容:composer update,完全没有参数

所有这些命令仍将遵守您在 composer.json 中手动指定的版本限制,您只是在命令行上向 Composer 提供关于允许更新到哪些软件包的附加说明满足这些限制。

就我个人而言,我主张只运行 composer update 而不使用任何参数:如果您想更严格地控​​制更新的时间,您始终可以在 composer.json 中列出更具体的约束。

【讨论】:

    猜你喜欢
    • 2017-02-27
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 2013-11-27
    • 1970-01-01
    • 2013-10-21
    • 2013-10-20
    相关资源
    最近更新 更多