V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xuegy
V2EX  ›  程序员

Homebrew 的 maintainer 真的是有点魔怔了

  •  
  •   xuegy · 14 天前 · 6805 次点击
    手滑 brew 更新了一把,结果 cmake 就挂了,一看直接大版本给干到了 4.0 。
    某位正常思维的老哥试图让他们把 3.x 加回来,被 maintainer 一顿批评教育: https://github.com/orgs/Homebrew/discussions/6058
    上一次类似的事情,就因为某个人提了一个稀奇古怪的 issue ,他们把 libomp 不声不响的变成 keg-only ,一堆科学计算软件都挂了。可能因为科学计算圈子太小,大家自己默默的重新适配了。
    这帮人得是魔怔到什么程度才敢得罪全体码农折腾 cmake 这种基础工具?
    49 条回复    2025-07-22 12:03:38 +08:00
    springz
        1
    springz  
       14 天前   ❤️ 4
    homebrew 这种就类似滚动发行版,始终是保持最新的。你可以换一个确定性的,比如 Nix 对 macOS 支持也不错。
    xuegy
        2
    xuegy  
    OP
       14 天前 via iPad
    @springz 软件可以滚动,工具链可不兴滚动,起码应该保留上一个大版本。
    yyfearth
        3
    yyfearth  
       14 天前
    其实也不奇怪 你看 NodeJS 和 Python 那一大堆 keg 每个人的需求不太一样
    不过 Homebrew 还是不会像 pip/uv/nvm/fnm 那样做多版本虚拟环境管理
    始终是保持最新也是正常的
    yyfearth
        4
    yyfearth  
       14 天前
    @xuegy homebrew 的构架一个包只能运行一个版本 其他就是 keg only
    除非你能说服他们用一个不同的名字 比如 cmake3 不过大概率不行
    而且就算不同名字了 其他依赖的工具链一样都不能用了

    但是这也是没办法的事情 大版本更新了 你一直停在老版本也不是个办法
    Homebrew 不是那种 deterministic 的包管理 可以处理多个版本的互相依赖问题
    springz
        5
    springz  
       14 天前
    发行版包管理本来就分滚动还是固定版本的,Linux 发行版也有两派,Debian/Ubuntu or ArchLinux ,HomeBrew 滚动策略是一点问题没有。
    springz
        6
    springz  
       14 天前
    如果有需求的话,HomeBrew 其实可以锁定版本,或者在 git 仓库找老版本的 rb 脚本手动装一下。
    jjx
        7
    jjx  
       14 天前
    别说 homebrew, macos 很多软件都这个德行

    明明不支持当前版本了(这没有问题), 但它还是自动升级, 结果一升就挂了, 需要重新安装
    iorilu
        8
    iorilu  
       14 天前
    还是那句话, 只要能有, 别乱升级, 包括操作系统
    houshuu
        9
    houshuu  
       14 天前
    我是觉得挺好的,私下里就喜欢用新版本的,甚至有时候觉得 homebrew 跟随版本太慢,总得过两天。
    公司或者固定版本的项目都是用的手动安装的固定版本,绑定在 homebrew 这种能自动更新的管理器上本身也是不可靠的。
    ryants
        10
    ryants  
       14 天前 via iPhone   ❤️ 3
    破坏性更新那也应该吐槽 cmake 而不是 homebrew 啊,人家要怎么做。万一有人有项目用到 4.0 的新特性,是不是又要发个帖子说卡在旧版本动不了。我就记得 archlinux 的一个版本的 clang 卡了好久,贼难受。软件版本管理一直是这样众口难调,有定制需求自己编译安装。
    BlackSas
        11
    BlackSas  
       14 天前
    我装 dotnet 也是一样,安装 dotnet 是最新的 9.0 。但 LTS 版本是 8.0 。
    还好可以手动选择,卸载后安装 dotnet@8 就可以。
    不知道 cmake 可不可以这样。
    xuegy
        12
    xuegy  
    OP
       14 天前
    @BlackSas 问题就在于很多人劝留一个 cmake@3 ,维护者就是不听还跟你辩经。
    Alias4ck
        13
    Alias4ck  
       14 天前
    确实 别乱升级 上次 macos 升级直接电脑干蹦了 还好东西还在重装系统又给弄回来咯 再也不更新系统了 锁版本了
    xuegy
        14
    xuegy  
    OP
       14 天前
    @ryants 所以才说他们魔怔啊,明知道 4.0 不向后兼容,强行升级会导致无数软件挂掉,就是要坚持自己那套哲学。既然 gcc 和 python 可以多个大版本共存,为什么 cmake 就不行?
    ericguo
        15
    ericguo  
       14 天前
    检查了一下我本地的 brew ,cmake 4.0.3 ,暂时没有看到影响,先这样吧。

    总的来说,升级版本是不可避免的,cmake 升级到 4 ,的确应该是下游去适配的。
    julyclyde
        16
    julyclyde  
       14 天前   ❤️ 2
    你赖着不升级,还要求全世界不进步来等你?

    诛心一点反问你:是不是还在用 centos7
    DefoliationM
        17
    DefoliationM  
       14 天前 via Android
    魔怔了?你不喜欢滚动发行你就不要用 brew 装这个包,你手动也能装呀,经典既要又要还要。
    webcape233
        18
    webcape233  
       14 天前
    @springz 一般是不带数字的始终跟随最新发布的版本,而会旧版本会带上数字
    例如 python 是 3.13 ,额外有 python-3.12 python-3.11 这种

    cmake 看了下只有个 cmake 了,不过需要的人应该提个 cmake3 的上去就是了
    webcape233
        19
    webcape233  
       14 天前
    @xuegy 可以提 pr 增加 cmake@3 吧,我看 python 一堆旧的版本 [email protected] 这种
    lvlongxiang199
        20
    lvlongxiang199  
       14 天前
    我觉得 homebrew 干的没错....
    需要特定版本的 cmake, 自个额外装一个呗.....
    nbndco
        21
    nbndco  
       14 天前   ❤️ 12
    @xuegy 可以啊,不是说了么,cmake 官方承诺维护 3 到什么时候就可以加 cmake@3 到什么时候,因为 cmake 官方没有任何承诺,所以不再维护的就不能加进去了,有什么问题?

    homebrew 没有组织你写自己的 tap 或者用别人的,并且直接给出了 brew extract 的解决方案。

    全天下不按你的想法出牌就是魔怔了么
    cigarzh
        22
    cigarzh  
       14 天前 via iPhone   ❤️ 2
    全世界都得围着你转呗
    HojiOShi
        23
    HojiOShi  
       14 天前
    又不是付费商业软件,开源免费软件开发者爱咋整咋整,不爽自己 Fork 一份维护。
    w568w
        24
    w568w  
       14 天前
    @springz #5 Arch 在重要的包大版本升级时,也会把旧包移动到 AUR: https://aur.archlinux.org/packages/cmake3-bin (这一点 Debian 和 Ubuntu 也一样),和滚不滚动发行其实关系不大。

    我也认为 Homebrew 应该留个 cmake@3 或者 cmake3 啥的,或者提供方法让人去找旧版本的 ruby 脚本装
    totoro52
        25
    totoro52  
       13 天前
    cmake4.0 和 3.x 区别好大
    MrKrabs
        26
    MrKrabs  
       13 天前
    你可以 just copy 一个 formulae
    wuruxu
        27
    wuruxu  
       13 天前   ❤️ 1
    maintainer 的潜台词,就是爱用就用,不用滚
    roundgis
        28
    roundgis  
       13 天前 via Android
    @xuegy 看那个讨论 也看不出有很多人需要保留 cmake@3
    star9029
        29
    star9029  
       13 天前
    典中典之在开发中滥用系统包管理,特别还是滚动发行版。
    其实大部分包管理都是这样的,每天都会无意中 break 下游。就算包管理定期全部包都构建一次,依然顶不住这个复杂度,所以还是得专门学构建知识来维护使用的工具链和包。
    hugozach
        30
    hugozach  
       13 天前
    用容器啊 vscode 支持新建.devcontainer 来设置
    简直就是神仙解决方案
    icyalala
        31
    icyalala  
       13 天前   ❤️ 1
    cmake 带来的破坏性变更,为什么不去骂 cmake ?
    你去搜搜 cmake4 ,多少项目都被提 issues 说构建出问题的?
    是 brew 折腾你还是 cmake 折腾你?

    有人给我的库提 issue ,我为了兼容最新的 cmake4 和早期的 cmake3 ,和专门搞了好几个平台下载各个版本的 cmake 来测试,好一顿折腾。。。
    minami
        32
    minami  
       13 天前
    包管理都是这样子的,不出问题的时候都是好好好,牛逼,秒杀某个没有包管理的系统,出问题时候就变成自己是第一责任人了,这就是中心化的弊端
    kingfire
        33
    kingfire  
       13 天前
    用 nix 吧,可以多版本共存,不担心这问题
    archean
        34
    archean  
       13 天前
    可以试试用 mise 来管理工具链
    duzhuo
        35
    duzhuo  
       13 天前
    好家伙,你不能又 roll 又不 pin 啊 真危险
    SingeeKing
        36
    SingeeKing  
       13 天前
    建议试试 asdf ,很方便管理多版本工具链的情况

    当然,也可以一步到位上 nix
    bao3
        37
    bao3  
       13 天前
    这个锅真的要怪 cmake 。而 homebrew 机制本来就是这样,它直接更新到 4.0 没什么不对,不保留 cmake 旧版本的理由也说得通。

homebrew 每次使用时,都会提示你如何关闭自动更新以及如何关掉 cleanup 。 其实背后是有原因的。
    
另外 homebrew 应该不是营利组织在做这件事,如果没收你钱,你也没有理由要求他们服从你,直白点就,一切要看人家的脸色,爱用就用,不爱用就滚,这一点问题也没有。
    rick13
        38
    rick13  
       13 天前 via iPhone
    你又想更新又想不升级,上 nix
    zengxs
        39
    zengxs  
       12 天前
    这种问题,自己提个 pr 就能解决
    homebrew 的 formula 都是志愿者写的,人家用不到 cmake 3 自然就不会去制作这个 formula
    maintainer 只是管理合并 pr 的而已,他没有义务帮你制作这个 formula
    james122333
        40
    james122333  
       12 天前 via Android
    通常这时候都是自己改包会比较好 或 git 回推版本就好
    而 homebrew 貌似没有类似 archlinux 下 provides 配置?
    其实也不一定要用 homebrew
    james122333
        41
    james122333  
       12 天前 via Android
    如果你不希望管理多版本又稳定 我推荐给你一个东西 netbsd pkgsrc
    支持很多系统 以下是 mac 安装配置
    https://pkgsrc.smartos.org/install-on-macos/
    james122333
        42
    james122333  
       12 天前 via Android
    可以安装以上工具 加入怪人阵营
    guo4224
        43
    guo4224  
       12 天前 via iPhone
    @?
    NessajCN
        44
    NessajCN  
       12 天前   ❤️ 1
    我进去看了这个 discussion ,人家 maintainer 说得挺好的,
    既给了解决方案又解释了理念和原因,语气用词也很平和,
    怎么就被扣了个魔怔的帽子?
    deplives
        45
    deplives  
       12 天前
    不知道是谁魔怔了,这个锅不让 cmake 来背,让 homebrew 背
    destinism
        46
    destinism  
       11 天前
    可以自己提交旧版啊,surge 现在都还有 V4
    jjnox
        47
    jjnox  
       11 天前
    用这个吧 https://vfox.dev/plugins/available.html

    vfox ,或者 asdf 来管理编程语言,别用 brew ,brew 一般管理其他非编程依赖
    jjnox
        48
    jjnox  
       11 天前
    用这个吧 https://vfox.dev/plugins/available.html

    vfox ,或者 asdf 来管理编程语言,别用 brew ,brew 一般管理其他非编程依赖
    yinxs2003
        49
    yinxs2003  
       11 天前
    brew 感觉有些地方挺难用的。不升级系统就没法用了,可太奇葩了
    CKylinMC
        50
    CKylinMC  
       11 天前
    cmake 通过大版本更新来推送破坏性改动这点我不知道有哪错了,反而是包管理器管理不好软件包版本才是最大的失职。homebrew 维护者似乎没能理解到版本冻结对于开发环境的重要性,搁那坚持来坚持去把自己当 Linus 了。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2613 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:59 · PVG 12:59 · LAX 21:59 · JFK 00:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.