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

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

  •  
  •   murmur · 2023-06-26 15:01:15 +08:00 · 3475 次点击
    这是一个创建于 500 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    sdkman 几下就搞定

    25 条回复    2023-06-29 23:20:00 +08:00
    feelinglucky
        1
    feelinglucky  
       2023-06-26 15:58:27 +08:00   ❤️ 3
    个人愚见:

    1 、网络原因不是它的问题,是我们自己的‘特色’;
    2 、brew 自己的依赖是自己处理的,所以它会下载自己的 jdk 然后 gradle ,这个也很好理解。其实我个人处理 gradle 项目,还是偏向推荐使用 gradle wrapper ,能独立环境并锁定版本,能省心不少;
    3 、同 2
    4 、顺便说一句,sdkman 顾名思义适用面和 brew 是不一样的,所以这个没必要褒一贬一,说到底就是个工具。
    cxtrinityy
        2
    cxtrinityy  
       2023-06-26 16:04:57 +08:00
    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
       2023-06-26 16:09:00 +08:00
    @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  
       2023-06-26 16:15:38 +08:00 via iPhone
    brew 网络弄不好的大概率不配..
    k9982874
        5
    k9982874  
       2023-06-26 16:21:24 +08:00 via Android
    mac 就是凭 brew 才能和 linux 在软件开发上一战
    t783072156
        6
    t783072156  
       2023-06-26 17:03:27 +08:00   ❤️ 1
    网络原因。。。
    cxtrinityy
        7
    cxtrinityy  
       2023-06-26 17:47:15 +08:00
    @murmur 这个只能说各有所需, 包管理本着怎么妥帖怎么来的想法我觉得可以理解的,只不过刚好和你的需求相反, 装了哪个版本的 gradle, 可能用户也就需要支持对应版本的 java, brew 直接给你装对应支持的最高版本 java 也没啥问题
    OliverDD
        8
    OliverDD  
       2023-06-26 17:48:39 +08:00 via iPhone
    可以看看 macports ,更传统的包管理工具
    easylee
        9
    easylee  
       2023-06-26 18:05:04 +08:00
    除了安装几个内核编辑的工具用到了 brew (不用的话安装太麻烦),其他时候没用上过。

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

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

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

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

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

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

    多学习,少抱怨。
    chuck1in
        16
    chuck1in  
       2023-06-27 08:23:07 +08:00 via iPhone
    sdk man 有那么多的依赖吗?
    seanzxx
        17
    seanzxx  
       2023-06-27 08:34:55 +08:00
    brew 的优点很明显,软件覆盖广,软件更新很快,社区也很活跃,可以很轻松的安装一个软件的最近可用的版本。

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

    ---

    目前 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  
       2023-06-27 12:45:08 +08:00
    brew 4.0 已经不用 git 存取 meta data 了。https://sspai.com/post/78587
    luodan
        25
    luodan  
       2023-06-29 23:20:00 +08:00
    brew 真的很好用,而且功能越来越完善,越稳定。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3004 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 13:26 · PVG 21:26 · LAX 05:26 · JFK 08:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.