V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Kingfish404
V2EX  ›  Linux

2021 了, Homebrew on Linux 能用了么,体验如何

  •  
  •   Kingfish404 ·
    Kingfish404 · 2021-11-23 17:43:52 +08:00 · 6155 次点击
    这是一个创建于 1090 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前主要在 macOS 下工作学习,brew 用着很爽,管理各种软件装起来也方便

    之后要迁移到 linux ,看了下最近 brew 的 linux core 也移动到主分支了一起维护了

    感觉似乎可以用了?

    28 条回复    2021-11-24 17:53:08 +08:00
    Maboroshii
        1
    Maboroshii  
       2021-11-23 17:45:16 +08:00   ❤️ 7
    homebrew 能比 aur 还好用吗...
    wangkun025
        2
    wangkun025  
       2021-11-23 17:46:19 +08:00
    在 Linux 上用过很短一段时间 brew ,后来回到了 dnf 。
    Linux 有 dnf 或者 apt ,想不出用 brew 的理由。
    xuhaoyangx
        3
    xuhaoyangx  
       2021-11-23 18:01:22 +08:00
    @wangkun025 brew 的好处。是可以 cask ,也可以 history 。 二进制包,还可实时编译+参数。没事还可以自己 edit 下 Formula ,实现自定义安装。大部分运维软件可以。用 dump 列表+appstore 列表,谢谢脚本,比较简单就可以在新的电脑实现自动化配置。

    apt 我觉得挺难的。使用不同的 history ,自定义软件就很难整。
    xuhaoyangx
        4
    xuhaoyangx  
       2021-11-23 18:01:48 +08:00
    大部分运维软件可以 还有 services 可以建议控制
    Buges
        5
    Buges  
       2021-11-23 18:15:40 +08:00 via Android
    可以用。只用来装 portable CLI 程序,以防止拉一大堆依赖下来。
    Cu635
        6
    Cu635  
       2021-11-23 18:16:58 +08:00
    @xuhaoyangx
    你的这个需求比较适合用 gentoo……
    archlinux 的 aur 也符合你的需求,只不过作为主力的 pacman 在“再自定义安装”这方面好像有点弱,不过我不太肯定。
    kidonng
        7
    kidonng  
       2021-11-23 18:27:33 +08:00   ❤️ 1
    Homebrew on Linux 的特点,文档里已经列的很清楚了:
    1. 统一 macOS 和 Linux (含 WSL) 依赖管理,对已经熟悉用 brew 的 macOS 用户管理 Linux 依赖友好。不过 portable package management 这方面还有其他选择,例如 Nix 或者 pkgsrc 。
    2. 装包不需要 root 权限,以及包可以放在家目录。不过这个也有其他解决方案,Gentoo Prefix 、Nix 之类都行。
    3. 获得最新版的软件。可以说是 Homebrew 最大的优点 /缺点,因为 Homebrew 只需要在乎最近三个版本的 macOS 和通用 Linux 二进制,包更新速度通常比 Arch 都要快。但缺点是没有针对发行版的优化和补丁。
    kidonng
        8
    kidonng  
       2021-11-23 18:32:26 +08:00
    @xuhaoyangx history 是指什么? Binary? "appstore 列表" 来自 mas-cli ,不是 Homebrew 自有功能。

    “自定义安装”和“运维软件可以 还有 services 可以建议控制”就不吐槽了,Homebrew 越俎代庖干得多烂都有数。
    Tink
        9
    Tink  
       2021-11-23 18:44:10 +08:00 via Android
    这有官方的吗?
    wangkun025
        10
    wangkun025  
       2021-11-23 18:52:28 +08:00
    @xuhaoyangx 醒醒吧,Linux 上不没有 cask
    Volekingsg
        11
    Volekingsg  
       2021-11-23 18:53:50 +08:00
    注意不需要 root 的话要非默认路径,很多 packages 需要重新编译
    hei1000
        12
    hei1000  
       2021-11-23 19:15:33 +08:00
    我之前服务器上面没有权限 root 安装的时候用的是 anaconda 安装一些常用软件,再之前 brew 也短暂试过倒没什么特别的印象
    ysc3839
        13
    ysc3839  
       2021-11-23 19:22:26 +08:00
    history 是指 yum history 这样的功能吗?印象中就只有 rpm 系的包管理有类似功能?别的似乎都没有。
    SenLief
        14
    SenLief  
       2021-11-23 19:40:12 +08:00
    history 有什么用吗?
    很多要重新打包,太麻烦了。
    cuminflea
        15
    cuminflea  
       2021-11-23 20:37:59 +08:00
    xuhaoyangx
        16
    xuhaoyangx  
       2021-11-23 22:24:12 +08:00
    @kidonng history 指定旧版本
    @wangkun025 我说的是在 mac 上的 brew ,有点文不对题了 哈哈哈。

    Linux 最大的槽点就是在这了,没有一个类似 macos brew 的东西,能完整覆盖所有应用的安装配置。

    Linux 也在用,大多数是预发布、生产环境在用 Docker 。

    开发环境的话,还是 Mac 来的舒服。

    我的很多时候只希望有一个渠道,可以方便快捷统一的配置。

    Linux 我一直都在用,实际上没有好用能覆盖需求的,很多时候得自己写专门的脚本去做一些 build 的工作,一些 UI 层级的软件,不能完全覆盖到。

    cask 的好处是,大部分带 UI 的应用 因为协议无法上架 AppStore 的,可以通过这个快捷安装,没有的软件,可以自己提交 pr ,合并更新前可以用自己的 github 做 tap 。可惜 linux 应该是没有的了

    history 指定旧版本,好的 Formula ,在指定旧版本,发现相关依赖已经升级到最新版后,会自动进行下载源码跑一遍编译。Linux ,想啥呢,自己写 build 脚本去。

    现在做 App 的发布环境和自动化测试,如果用的 Mac mini 去做的,装系统+执行配置脚本,大概 2 小时能跑完一台 mini 。原来做的话,发布环境还得单独搞个虚拟化去做 IOS 的发布 ,麻烦的很。整个脚本维护起来费时费劲
    sagaxu
        17
    sagaxu  
       2021-11-23 22:39:34 +08:00
    用 apt 啊,lts 版 ubuntu ,配置好国内 mirror ,不用半个小时全部装好,除了 firefox 这类软件,各个软件一般不会更新大版本了,只有 bug 修复和安全更新,最新版和最老版之间一般兼容
    sagaxu
        18
    sagaxu  
       2021-11-23 22:41:42 +08:00
    我有时直接 tar 备份好文件,复制到新机器,解压一下,再修复一下 grub 就完事了,目标机器都不用联网
    X_Del
        19
    X_Del  
       2021-11-23 22:55:00 +08:00
    能用。
    个人体会比较适合用在 Debian 这类发行版,官方源缺少某些软件或版本过于落后,用 Linuxbrew 可以安装到最新的版本(这个需求用 nix 也可以)。
    但是在 Arch 上就完全不如 Pacman + AUR 的组合。

    缺点是只支持 x86 架构,linuxbrew 没有 arm 的二进制包。
    12101111
        20
    12101111  
       2021-11-23 22:58:48 +08:00
    没有 cask 的 Homebrew 还不如 Gentoo prefix ,最起码 Gentoo prefix 是专门针对 Linux 的,而且因为大多数 Gentoo prefix 用户都是为了在没有 root 权限的情况下摆脱 CentOS6 那可怕的 glibc 和 libstdc++版本,专门支持从古董内核 bootstrap 。
    Kobayashi
        21
    Kobayashi  
       2021-11-24 02:03:59 +08:00 via Android
    1. Linuxbrew 没有 Caskroom 支持
    2. 好像支持了为安装包生成 systemd 文件
    3. Linuxbrew 不使用系统依赖,完全从头构造依赖。
    4. Homebrew 2019 年砍掉了 core 仓库(常见包) options 支持,后来 brew 工具里对于 options 支持也砍得差不多了。你的 ffmpeg 想开 nonfree 需要自己做个 Tap 修改 formula 。
    5. 出于安全考虑,homebrew-core 中依赖封闭,core 中包只能依赖其他 core 中包。比如你自己安装了其他 JDK ,但你依然需要安装 core 中 homebrew 编译的 openjdk 。
    4. Homebrew 的开源协议洁癖使得很多 core 仓库移除了 MongoDB ,Elasticsearch 等包。尽管这些包依然开源,且支持被分发。
    imxieke
        22
    imxieke  
       2021-11-24 06:58:37 +08:00 via iPhone
    每次安装或是搜索都会反应很久 没有 Arch apt 丝滑
    不知道是我自己的是这样还是原本就是这样
    linbingcheng
        23
    linbingcheng  
       2021-11-24 09:16:52 +08:00
    Linux 不是有 yum apt 吗
    Zepp
        24
    Zepp  
       2021-11-24 09:59:56 +08:00
    Arch 和 macOS 都用过,没感觉 brew 哪里比 pacman+aur 好用。举个简单的例子,我发现我需要一个二进制文件 /头文件 /库文件,用 pacman -F 可以轻松找到,但 brew 就是不行。
    libook
        25
    libook  
       2021-11-24 10:49:59 +08:00
    我遇到过一种场景,就是系统是只读的,只有 home 目录是可写的,这时候如果熟悉 Mac 下的 brew 的话可以直接在 home 里装 brew ,而且可以配置成使用现成的二进制包,没有二进制可用的时候才会编译;不过安装手册比较奇怪,按照手册安装会有问题,得自己折腾,感觉 linux 下用这个的少。
    Kingfish404
        26
    Kingfish404  
    OP
       2021-11-24 11:06:28 +08:00
    @linbingcheng Debian ,CentOS 等默认源缺少软件,有的往往也好老,而且 brew 通过 link 切换版本也蛮方便习惯了
    comoyi
        27
    comoyi  
       2021-11-24 13:20:47 +08:00
    brew 是因为 macOS 没有好用的包管理才出现的吧,都 Linux 了当然用原配
    lB2cGz9OQ1agw7XK
        28
    lB2cGz9OQ1agw7XK  
       2021-11-24 17:53:08 +08:00
    linux 还需要这玩意吗???
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5786 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 01:48 · PVG 09:48 · LAX 17:48 · JFK 20:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.