在PHP Composer中,配置依赖项以安装仍与当前平台或框架兼容的软件包的最新版本。

亚历克斯

想象一下,有一些框架X以及为此框架开发的模块A和B。另外,A取决于B(允许使用B的任何版本)。最初,A v.10和B v1.0是为X v1.0开发的。

B和A会定期发布新版本。这将导致当我更新A时,B也将被更新。假设已经过去了几年,现在我们的存储库中有A的v3.0和B的v6.0(并且A和B仍适用于X v1.0)。

现在,我们有一些本地安装保持了原始状态(X,A和B均为v1.0)。因此,如果我此时更新A,最终将把A更新为v3.0,将B更新为v6.0。但是,假设我在X v2.0发行之前没有运行此更新。

现在,框架X v2.0已发布,并且与X v1.0不兼容。B的供应商随后发布了X v2.0的B v7.0。但是,A的供应商尚未针对X v2.0对其进行更新。将A更新到v3.0的尝试将导致尝试将B更新到v7.0的操作不起作用,并且升级过程将终止。

我想要的是将A更新到3.0将导致将B更新到v6.0,因为它是X v1.0的最后一个兼容版本。

如果在A中存在依赖项“ B 1.x”,那么当X v2.0的B v2.0出现时,这将保护我免受问题的困扰。但是,当它获得仍可以与X v1.0兼容的新的主要发行版时,我将无法获得B的更新。这意味着如果模块供应商仍在X v1.0框架上运行,则无法制作v2.0,对B的所有更新都必须为v1.x。

因此,我最好有独立于X框架版本设置模块版本(包括主要版本)的自由。我需要一种机制来解决依赖关系,即仅在与当前环境兼容的情况下才安装依赖关系的最新版本。如果不兼容,则会选择最新的兼容版本,而不是停止整个过程。

可以“告诉” Composer“在当前条件下可以更新到最新版本”,而不是简单地“更新到最新版本”吗?

亚历克斯·卡普斯汀(Alex Kapustin)

首先需要了解版本控制语义。简而言之:

版本: X.Y.Z

在哪里:

  • X:主要版本(重大更改)
  • Y:次要版本(添加功能,必须与同一主要版本中的先前版本兼容)
  • Z:错误修复(必须与同一主要版本中的先前版本兼容)

https://getcomposer.org/doc/articles/versions.md

因此,如果您写:

例如: ^1.2.3

它将库更新为最新版本,包括新功能(例如:1.*.*)(但将保留相同的主要版本,例如,如果可用,它将更新为1.4.5

~1.2.3更为严格,这将只更新bug修复版本(例如:1.2.*

但是,不幸的是,并非所有库都遵循版本语义,因此无论如何您都必须检查更新结果。

但在两种情况下,最低要求的版本是: 1.2.3

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Bower中设置软件包的最新版本?

来自分类Dev

如何通过Composer PHP使用最新版本的Zend Framework 2.3.5?

来自分类Dev

如何在命令行中使用composer安装软件包的最新版本?

来自分类Dev

使用Composer将RedBean PHP ORM更新到最新版本时出现问题

来自分类Dev

apt中的php版本-它是否对应于php.net上的版本,如果不是,则如何升级到最新版本

来自分类Dev

安装无法通过apt获得的Apache,Php,Mysql最新版本

来自分类Dev

如何使用apt-get安装软件包的最新版本?

来自分类Dev

如何安装最新版本的软件包?

来自分类Dev

无法安装最新版本的python软件包

来自分类Dev

Ansible lint报告“软件包安装不应使用最新版本”

来自分类Dev

如何在flutter创建模板中获取软件包的最新版本

来自分类Dev

为什么我必须从pom中删除依赖项,然后再将其重新添加并安装以获得最新版本的maven软件包?

来自分类Dev

使用Python的诗歌将最新版本的软件包从工作目录安装到本地环境中

来自分类Dev

安装无法通过apt获得的Apache,Php,Mysql最新版本

来自分类Dev

如何使用apt-get安装软件包的最新版本?

来自分类Dev

如何在Ubuntu中安装最新版本的软件包?

来自分类Dev

dpkg不会安装具有较新版本依赖项的软件包

来自分类Dev

如何获得通过apt-get安装的软件包的最新版本?

来自分类Dev

PHP pecl已包含:如何编译和安装最新版本

来自分类Dev

Composer不会将软件包更新为最新版本

来自分类Dev

安装最新版本的软件包

来自分类Dev

最新版本的php中的mysql_real_escape_string()函数的选项是什么?

来自分类Dev

pacaur未安装软件包的最新版本

来自分类Dev

如何使用稳定版本的Debian安装最新版本的软件包(例如Apache2)?

来自分类Dev

我应该配置我的服务器以使用最新版本的 PHP 吗?

来自分类Dev

CURL 在最新版本的 PHP 7.2 中不起作用!

来自分类Dev

无法安装最新版本的软件包

来自分类Dev

product-archive.php 在最新版本的 woocommerce 中没有被覆盖

来自分类Dev

无法安装最新版本的 gganimate 包,好像依赖项“transformr”不可用

Related 相关文章

  1. 1

    如何在Bower中设置软件包的最新版本?

  2. 2

    如何通过Composer PHP使用最新版本的Zend Framework 2.3.5?

  3. 3

    如何在命令行中使用composer安装软件包的最新版本?

  4. 4

    使用Composer将RedBean PHP ORM更新到最新版本时出现问题

  5. 5

    apt中的php版本-它是否对应于php.net上的版本,如果不是,则如何升级到最新版本

  6. 6

    安装无法通过apt获得的Apache,Php,Mysql最新版本

  7. 7

    如何使用apt-get安装软件包的最新版本?

  8. 8

    如何安装最新版本的软件包?

  9. 9

    无法安装最新版本的python软件包

  10. 10

    Ansible lint报告“软件包安装不应使用最新版本”

  11. 11

    如何在flutter创建模板中获取软件包的最新版本

  12. 12

    为什么我必须从pom中删除依赖项,然后再将其重新添加并安装以获得最新版本的maven软件包?

  13. 13

    使用Python的诗歌将最新版本的软件包从工作目录安装到本地环境中

  14. 14

    安装无法通过apt获得的Apache,Php,Mysql最新版本

  15. 15

    如何使用apt-get安装软件包的最新版本?

  16. 16

    如何在Ubuntu中安装最新版本的软件包?

  17. 17

    dpkg不会安装具有较新版本依赖项的软件包

  18. 18

    如何获得通过apt-get安装的软件包的最新版本?

  19. 19

    PHP pecl已包含:如何编译和安装最新版本

  20. 20

    Composer不会将软件包更新为最新版本

  21. 21

    安装最新版本的软件包

  22. 22

    最新版本的php中的mysql_real_escape_string()函数的选项是什么?

  23. 23

    pacaur未安装软件包的最新版本

  24. 24

    如何使用稳定版本的Debian安装最新版本的软件包(例如Apache2)?

  25. 25

    我应该配置我的服务器以使用最新版本的 PHP 吗?

  26. 26

    CURL 在最新版本的 PHP 7.2 中不起作用!

  27. 27

    无法安装最新版本的软件包

  28. 28

    product-archive.php 在最新版本的 woocommerce 中没有被覆盖

  29. 29

    无法安装最新版本的 gganimate 包,好像依赖项“transformr”不可用

热门标签

归档