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

brew 这么厉害是吹的吧 感觉还不如 sdkman 好使

  •  
  •   murmur · 306 天前 · 3156 次点击
    这是一个创建于 306 天前的主题,其中的信息可能已经有所发展或是发生改变。

    就先不说从 git raw content 服务器下载安装脚本因为网络原因劝退多少小白

    我让他给我下个 gradle ,不能指定版本号不说,还给我下了将近 20 个二进制依赖

    明明有 zulu 的 openjdk ,而且 gradle 要求只是 java>8 ,他给我下了个 java18 回来

    sdkman 几下就搞定

    25 条回复    2023-06-29 23:20:00 +08:00
    feelinglucky
        1
    feelinglucky  
       306 天前   ❤️ 3
    个人愚见:

    1 、网络原因不是它的问题,是我们自己的‘特色’;
    2 、brew 自己的依赖是自己处理的,所以它会下载自己的 jdk 然后 gradle ,这个也很好理解。其实我个人处理 gradle 项目,还是偏向推荐使用 gradle wrapper ,能独立环境并锁定版本,能省心不少;
    3 、同 2
    4 、顺便说一句,sdkman 顾名思义适用面和 brew 是不一样的,所以这个没必要褒一贬一,说到底就是个工具。
    cxtrinityy
        2
    cxtrinityy  
       306 天前
    brew 可以指定大版本的最新版本, 不能指定小版本, 如 gradle@7, gradle@6, 或最新版 gradle, 具体到 7.4.1 就无能为力了
    下个 java18 回来估计是按照 gradle 官方的 java 、gradle 兼容表来的, 你可能装了 gradle7.5? 见 https://docs.gradle.org/current/userguide/compatibility.html
    murmur
        3
    murmur  
    OP
       306 天前
    @cxtrinityy

    Gradle runs on all major operating systems and requires only a Java Development Kit version 8 or higher to run.

    他的意思是从 java8-18 都测试过,版本高了不保证兼容,那也没必要给我下那么高版本的回来啊
    20015jjw
        4
    20015jjw  
       306 天前 via iPhone
    brew 网络弄不好的大概率不配..
    k9982874
        5
    k9982874  
       306 天前 via Android
    mac 就是凭 brew 才能和 linux 在软件开发上一战
    t783072156
        6
    t783072156  
       306 天前   ❤️ 1
    网络原因。。。
    cxtrinityy
        7
    cxtrinityy  
       306 天前
    @murmur 这个只能说各有所需, 包管理本着怎么妥帖怎么来的想法我觉得可以理解的,只不过刚好和你的需求相反, 装了哪个版本的 gradle, 可能用户也就需要支持对应版本的 java, brew 直接给你装对应支持的最高版本 java 也没啥问题
    OliverDD
        8
    OliverDD  
       306 天前 via iPhone
    可以看看 macports ,更传统的包管理工具
    easylee
        9
    easylee  
       306 天前
    除了安装几个内核编辑的工具用到了 brew (不用的话安装太麻烦),其他时候没用上过。

    老哥不要纠结这个。
    Jirajine
        10
    Jirajine  
       306 天前
    笑死,网络原因是你的原因,人家从一个公网可达的服务器下载,小白开箱就能用,你要是处于不能访问公网的环境中你当然要自己处理。
    jdk 又不是系统自带的,brew 包的打包者怎么知道你有没有安装 jdk ,你安装的 jdk 是否兼容。
    至于版本问题,gradle 既然兼容新版本的,那谁会在依赖列表里指定旧的版本。
    murmur
        11
    murmur  
    OP
       306 天前
    @Jirajine maven apt yum 这些包管理基本只要设置了源,几乎所有的流量都走镜像,基本不会遇到什么问题

    brew 是设置了清华的源,将近一个 g 的 repo 也同步到本地了,还是会疯狂走 git 容器的服务器

    就是论本地折腾 brew 也没有传统的包管理工具好使
    Jirajine
        12
    Jirajine  
       306 天前
    @murmur 我没用镜像,但你这种情况要么镜像站没有镜像所有内容,要么是你没配置好预编译包的镜像?
    https://mirrors.tuna.tsinghua.edu.cn/help/homebrew-bottles/

    brew 确实算不上先进或者好用,但架不住它成熟完善,能在 macos 和 glibc 的 Linux 发行版上跑,最重要的是软件包丰富。
    volvo007
        13
    volvo007  
       306 天前
    brew 作者自己都说了,他自己也知道 brew 的问题,一开始只是一个练手项目

    关于切换源,其实是可以的,可以用 git 修改源到原来的某个 head ,然后就能装了。但是确实不方便,不如老版本还能指定版本
    weeei
        14
    weeei  
       306 天前
    macports 除了包少一些,其实更好用。
    jorneyr
        15
    jorneyr  
       306 天前
    我让他给我下个 gradle ,不能指定版本号不说,还给我下了将近 20 个二进制依赖:

    brew search gradle
    ==> Formulae
    gradle gradle-completion gradle-profiler gradle@6 gradle@7 grace gradio grails glade

    多学习,少抱怨。
    chuck1in
        16
    chuck1in  
       305 天前 via iPhone
    sdk man 有那么多的依赖吗?
    seanzxx
        17
    seanzxx  
       305 天前
    brew 的优点很明显,软件覆盖广,软件更新很快,社区也很活跃,可以很轻松的安装一个软件的最近可用的版本。

    开发通常需要用一个固定的版本,而不是最新的版本,而且电脑里面不同的项目可能要用不同的版本,就需要用专门的工具来管理,比如我用 asdf 来管理 python ,node 和 java 。
    asdf 可以安装多个 jdk ,然后旧的项目用 jdk 8 ,新的项目用 jdk 17 ,设置好以后,进入项目目录,jdk 就会自动切换。
    yuankui
        18
    yuankui  
       305 天前   ❤️ 1
    @cxtrinityy 前几天跟同事学到一招,找到 brew 对应的 formula 的 rb 脚本,然后看他的历史记录,找到你需要的版本,直接 brew install 这个 commit raw file
    cxtrinityy
        19
    cxtrinityy  
       305 天前 via Android
    @yuankui 这个还真不知道,刚才搜了下好像是有这用法,下次试试
    murmur
        20
    murmur  
    OP
       305 天前
    @yuankui 这个我也搜到了,但是看着那文件还要改 hash 我就头大,最后我用 sdkman 装上的
    murmur
        21
    murmur  
    OP
       305 天前
    @chuck1in 等我把环境搭好了就是 pod gradle maven 那一套东西了,系统级的二进制依赖我更倾向于网上去下载 installer ,gradle 是第一次安装需要一个任意版本,我懒得去建个目录,事实证明还是随便官网下一个解压了更快
    chuck1in
        22
    chuck1in  
       305 天前
    @murmur gradle 安装以后就是会安装一大堆依赖,好像很多人都说过这个问题,似乎比 maven 体积大多了。但是现在 java 很多都换成 gradle 了,也只好换了。
    jiangshengse
        23
    jiangshengse  
       305 天前
    之前安装某软件记录的方法,仅供参考

    ---

    目前 macOS 下的 brew 中的 Qemu 版本过高( 7.2.0 或更高),实验需要安装 7.0.0 版本( 2022-12-26 可用此版本)

    如要在 macOS 下安装旧版本 Qemu ,可以参考 https://stackoverflow.com/a/64125796/20861890

    1. 设置环境变量

    ```
    TAP=my-org/homebrew-old
    MODULE=qemu
    VERS=7.0.0
    ```

    2. 检查环境变量 TAP

    ```
    echo $TAP
    ```

    输出:`my-org/homebrew-old`

    3. 检查环境变量 MODULE

    ```
    echo $MODULE
    ```

    输出:`qemu`

    4. 检测环境变量 VERS

    ```
    echo $VERS
    ```

    输出:`7.0.0`

    5. 开始安装指定版本 qemu

    ```
    brew tap-new $TAP
    brew extract --version $VERS $MODULE $TAP
    brew install $TAP/$MODULE@$VERS
    ```

    6. 检查安装后的版本

    ```
    qemu-system-riscv64 --version
    ```

    输出:
    ```
    QEMU emulator version 7.0.0
    Copyright (c) 2003-2022 Fabrice Bellard and the QEMU Project developers
    ```
    q1angch0u
        24
    q1angch0u  
       305 天前
    brew 4.0 已经不用 git 存取 meta data 了。https://sspai.com/post/78587
    luodan
        25
    luodan  
       303 天前
    brew 真的很好用,而且功能越来越完善,越稳定。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   948 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 22:48 · PVG 06:48 · LAX 15:48 · JFK 18:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.