V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lshero
V2EX  ›  PHP

感觉又是被 composer 搞得水深火热的一天

  •  
  •   lshero · 2021-09-28 18:54:06 +08:00 · 3260 次点击
    这是一个创建于 1155 天前的主题,其中的信息可能已经有所发展或是发生改变。
    不锁定版本号天天给你新惊喜
    https://github.com/symfony/symfony/issues/43212
    19 条回复    2021-09-30 14:57:46 +08:00
    vvhhaaattt
        1
    vvhhaaattt  
       2021-09-28 19:05:34 +08:00 via Android
    不太了解 php 生态,不过这个项目是感觉用的还挺广泛的。
    这 issue
    JaguarJack
        2
    JaguarJack  
       2021-09-28 19:06:06 +08:00
    上游包出现问题 多恐怖
    vvhhaaattt
        3
    vvhhaaattt  
       2021-09-28 19:06:18 +08:00 via Android
    看的人好紧张,不过开发者也挺迅速的
    skymei
        4
    skymei  
       2021-09-28 19:14:32 +08:00
    没有特殊情况,只要 composer install 就好了,为啥没事 update
    zocome
        5
    zocome  
       2021-09-28 19:16:15 +08:00
    表示受害者之一,上午还好好地用着 composer,傍晚开始想创建个新的 Laravel 项目就一直不成功了,我还以为是网络的原因,浪费几个小时
    lshero
        6
    lshero  
    OP
       2021-09-28 19:18:35 +08:00
    @vvhhaaattt
    @JaguarJack
    应该还是影响到了一大批无辜的 laravel 用户
    lshero
        7
    lshero  
    OP
       2021-09-28 19:28:48 +08:00
    @skymei 确实是这样的,但是上游包出问题始料未及
    JaguarJack
        8
    JaguarJack  
       2021-09-28 19:54:48 +08:00
    @lshero 下午想创建新的 Laravel 项目,发现出问题,直奔 Laracasts,果然炸了😂
    msg7086
        9
    msg7086  
       2021-09-29 05:49:46 +08:00
    Composer 没有 lock 文件的吗?一般为了安全,很多包管理都有 lock 文件来锁版本的。
    limingxinleo
        10
    limingxinleo  
       2021-09-29 09:10:38 +08:00
    开发环境 update 就挂了,然后直接锁了上个版本号,就没问题了。。。

    线上环境肯定会根据 composer.lock 来处理的,这种小问题,有啥可大惊小怪的
    lshero
        11
    lshero  
    OP
       2021-09-29 10:22:40 +08:00
    @limingxinleo 说好一键创建项目开箱即用的框架准备创建项目就各种翻车,这还不难受吗?
    limingxinleo
        12
    limingxinleo  
       2021-09-29 14:19:30 +08:00
    @lshero 这有啥难受的,这种问题看一眼不就知道哪里的问题了么?花个两分钟,版本退回去就行了。
    limingxinleo
        13
    limingxinleo  
       2021-09-29 14:21:16 +08:00
    @lshero 比如这次事故,创建项目发现 psr4 加载出现了问题,composer 直接都提醒了,所以这个问题很好解决。

    那 80%应该是 symfony 的版本有问题,毕竟之前没有这种情况,就到官方 github 去看看,果然刚刚发布了新的 release,然后找到版本号,主动切换到上个版本,重新 composer update -o

    解决问题。

    这一套走下来,不超过 5 分钟就解决了。
    lshero
        14
    lshero  
    OP
       2021-09-29 16:09:40 +08:00
    @limingxinleo 一般人只会去看 laravel/laravel 中指定包的版本号,symfony 的版本在 laravel/framework 中指定的。开箱即用的话还需要关心 laravel/framework 的依赖吗?
    limingxinleo
        15
    limingxinleo  
       2021-09-29 17:29:16 +08:00
    @lshero 好吧,你说得对。

    我一直以为我上面说的应该是一个程序员的基本能力。。。。
    timsims
        16
    timsims  
       2021-09-29 17:38:38 +08:00
    我去过的公司很多人都不知道 composer.lock 的作用,甚至都不放到代码版本里, 部署就直接运行 composer update
    lshero
        17
    lshero  
    OP
       2021-09-29 18:29:57 +08:00
    @limingxinleo 你说的确实是 debug 的基本能力,但是在一个团队里架不住总会有短板。所以有些 KPI 项目不就是最看不起的各种造各种轮子,然后用 satis 搞成私有包。假如昨有人提交了一个需求说有新的 CVE 要求你升级 laravel 到某个版本,但是贸然的 update 一下,是不是就该突然觉得生活里导出都是磕磕绊绊了。

    @timsims composer.lock 不加入仓库里环境容易不一致,加入后多人用起来有起冲突后好酸爽。
    limingxinleo
        18
    limingxinleo  
       2021-09-30 14:57:12 +08:00
    @lshero 所以,如果这些东西都整不明白,直接让领导把版本都锁了就行了,不使用 ^1.0 这种,而是直接 1.0.8 这样
    limingxinleo
        19
    limingxinleo  
       2021-09-30 14:57:46 +08:00
    @lshero 不过底层包还是比较尴尬,很难防止 symfony 的这个情况
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3261 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:07 · PVG 22:07 · LAX 06:07 · JFK 09:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.