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

2023-06-26 15:01:15 +08:00
 murmur

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

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

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

sdkman 几下就搞定

3604 次点击
所在节点    macOS
25 条回复
feelinglucky
2023-06-26 15:58:27 +08:00
个人愚见:

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

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

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

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

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

关于切换源,其实是可以的,可以用 git 修改源到原来的某个 head ,然后就能装了。但是确实不方便,不如老版本还能指定版本
weeei
2023-06-26 18:26:24 +08:00
macports 除了包少一些,其实更好用。
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
2023-06-27 08:23:07 +08:00
sdk man 有那么多的依赖吗?
seanzxx
2023-06-27 08:34:55 +08:00
brew 的优点很明显,软件覆盖广,软件更新很快,社区也很活跃,可以很轻松的安装一个软件的最近可用的版本。

开发通常需要用一个固定的版本,而不是最新的版本,而且电脑里面不同的项目可能要用不同的版本,就需要用专门的工具来管理,比如我用 asdf 来管理 python ,node 和 java 。
asdf 可以安装多个 jdk ,然后旧的项目用 jdk 8 ,新的项目用 jdk 17 ,设置好以后,进入项目目录,jdk 就会自动切换。
yuankui
2023-06-27 10:59:27 +08:00
@cxtrinityy 前几天跟同事学到一招,找到 brew 对应的 formula 的 rb 脚本,然后看他的历史记录,找到你需要的版本,直接 brew install 这个 commit raw file
cxtrinityy
2023-06-27 11:24:06 +08:00
@yuankui 这个还真不知道,刚才搜了下好像是有这用法,下次试试
murmur
2023-06-27 11:52:54 +08:00
@yuankui 这个我也搜到了,但是看着那文件还要改 hash 我就头大,最后我用 sdkman 装上的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/951788

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX