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

homebrew 如何优雅地留在 10.13.6,不求新 feature,能否让软件包都冻结在一个能正常使用的时刻,类似于 Linux 包管理可以指定系统版本

  •  
  •   liemehoc · 159 天前 · 2138 次点击
    这是一个创建于 159 天前的主题,其中的信息可能已经有所发展或是发生改变。
    15 条回复    2021-07-03 18:10:21 +08:00
    CEBBCAT
        1
    CEBBCAT  
       159 天前 via Android
    什么意思?不升级不就行了吗?
    IgniteWhite
        2
    IgniteWhite  
       159 天前   ❤️ 4
    两个方法:
    1 把包 pin 在某个版本
    2 自己维护 tap

    第一种办法省事但是不优雅,因为你 pin 只能保存在你安装时候的当前版本,即使安装的时候使用 @ 某个版本这种方法,也不能保证有些 formulae/casks 的过往版本 archive 了,安装不了。

    第二种办法优雅,需要你到 Homebrew 的 GitHub repo 里面找到并修改需要的 formula/cask 对应的 rb 文件的历史版本,然后传到自己的 GitHub repo 里面。使用的时候加一下自己的 tap,然后记住给自己的包起一个带后缀的名字防止名字和官方 tap 冲突。官网都有教程很简单的,repo 结构可以参考我的 tap:
    https://github.com/g6ai/homebrew-ale
    IgniteWhite
        3
    IgniteWhite  
       159 天前
    需要补充一点,Homebrew 安装 binary 的时候,会安装对应于你系统版本的 bottle 。这个 bottle 对应的包版本的也是由上面我说的 rb 文件控制的,作者会保证使用当前系统兼容的最新包版本,如果不兼容就不会给这个系统版本上更新的包版本,结果是一般老版本的系统用 brew 软件也不会出问题。

    所以基于这种情况,楼主不妨说一下自己是哪个包使用出了问题,因为就算你维护自己的 tap 也是有的放矢。
    wowbaby
        4
    wowbaby  
       158 天前
    除非你不升级,并且不装新的软件,有的软件新版本强制升级依赖,不解锁不给装。
    brew 虽然方便,但对我来讲无数次的不愉快,一大堆的依赖,稍微隔久点没更新,更新就出问题,浪费大量的时间去弄,弄一下半天没了。我宁愿包大一点,每个程序的依赖都在本程序依赖目录下,保证程序不出问题。
    比如,很多程序都依赖 openssl,brew 可以锁住 pin openssl,但是你安装软件的时候强制要你 unpin,自动升级 openssl 后, 之前软件依赖 openssl 有可能出问题,或者是版本不匹配,还有就是 brew 会强制下架一些旧版本,但是你开发环境又需要旧版本,还得 tap 其他资源。

    brew 可以禁用自动更新,这种情况你不能安装新的软件包,总的来讲给我的感觉体验不好,下次换电脑,打算都手动编译,省心。
    liemehoc
        5
    liemehoc  
    OP
       158 天前
    @IgniteWhite 谢谢
    装 ffmpeg 的时候依赖 rust,10.13.6 不提供 bottle 了,编译又编译不过
    macos 对老版本的支持真的不太行啊,没法安心留在老版本,想念 linux
    liemehoc
        6
    liemehoc  
    OP
       158 天前
    @wowbaby 有更好的包管理推荐吗,我也是一直被 brew 折磨
    wowbaby
        7
    wowbaby  
       158 天前
    @liemehoc 目前没有发现更好的,用 brew 的一般都是装各种开发环境,你如果更新系统,brew 也可能会出问题,很多得重装,挺烦的。旧版 brew switch <formula> <version> 还可以切换版本,能应急,新版也砍了。
    目前只有自己手动编译软件了,虽然首次比较麻烦,但是后续不会出问题。
    我最开始没有用 brew 从没出过问题。
    nieyujiang
        8
    nieyujiang  
       158 天前 via iPhone
    Homebrew 可以强制指定从源码构建
    MrKrabs
        9
    MrKrabs  
       158 天前
    禁止 brew 自动更新,禁用 bottle
    Liampor
        10
    Liampor  
       158 天前
    开发环境不知道,但是那个 cask 可以使用 homebrew-cask-upgrade,然后 brew cu 更新 brew cu pin 这种固定版本
    findex
        11
    findex  
       158 天前
    (说句题外话,目测楼主黑苹果+N 卡驱动?)
    liemehoc
        12
    liemehoc  
    OP
       157 天前
    @findex 2012 mid mac pro
    正在犹豫要不要转 linux
    findex
        13
    findex  
       157 天前
    @liemehoc 哦。其实可以转 Linux 。很好用。现在苹果已经放弃支持 10.13 系统了。或者可以通过奇怪方式( opencore 仿冒)装上最新系统也许会卡。我有台黑果+1060 显卡无奈只能停留 10.13 ,只用核心显卡倒是能支持 macos 11/12 。通过目前苹果的路子可以看出,未来苹果是贴心走 ARM 了,用 Linux 很好不会被绑架。(再说句题外话:我一般是 Mac+虚拟机 Linux 做开发的,MacOS 用于看报表什么的)
    typetraits
        14
    typetraits  
       155 天前
    @liemehoc #5 homebrew 里的 ffmpeg 依赖太多了,建议从 https://evermeet.cx/ffmpeg/ 下载编译好的 binary
    YsHaNg
        15
    YsHaNg  
       155 天前 via iPhone
    @liemehoc 你这种情况试试 macports homebrew 更像是 linux 滚动版
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   916 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:48 · PVG 04:48 · LAX 12:48 · JFK 15:48
    ♥ Do have faith in what you're doing.