好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

前言(废话)

本来打算在公司偷偷摸摸给星球的用户写一篇编程喵整合 MongoDB 的文章,结果在通过 brew 安装 MongoDB 的时候竟然报错了。原因很简单,公司这台 Mac 上的 homebrew 环境没有配置好。刚好 Java 程序员进阶之路上缺少这样一篇内容。

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

所以我就想,不如趁机水一篇吧,啊,不不不,趁机给小伙伴们普及一下 Homebrew 吧!瞧我这该死的大公无私的心(手动狗头)。

不会吧?不会还有人用 macOS 没有安装/配置 Homebrew 吧?

Homebrew 能干什么

Homebrew 的 Slogan :The missing package manager for macOS (or Linux)

Homebrew 这款命令行软件管理神器在 GitHub 上已经有 32.5k+ 的 star 了,功能也真心强大,几乎 macOS 上的软件包它都包了。Homebrew 本身没有问题,问题在于。。。。。不说了,你懂的。

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

Homebrew 除了是 macOS 的包管理器也可以装在 Linux 上成为 Linux 的包管理器,仅需要执行相应的命令,就能下载安装需要的软件包,省去了下载、解压、拖拽等繁琐的步骤。

用 Homebrew 官方的话来总结就是:安装 Apple(或 Linux 系统)没有预装但你需要的软件。比如说安装 MongoDB,只需要执行以下命令就可以安装,前提条件是环境一定要配置好。

brew install mongodb

简单一条命令,就可以实现包管理,还不用担心依赖/文件路径等问题。

Homebrew 主要由四个部分组成: brew、homebrew-core 、homebrew-cask、homebrew-bottles。

  • brew:Homebrew 的源代码仓库
  • homebrew-core:Homebrew 的核心源
  • homebrew-cask:提供 macOS 应用和大型二进制文件的安装
  • homebrew-bottles:预编译二进制软件包

再来了解一下 Homebrew 的接个核心概念,后续会经常用到。

  • formula(e),安装包的描述文件,带 e 为复数
  • cellar,包安装好后所在的目录
  • bottle,预先编译好的包,不需要再下载源码编译,速度会快很多,官方库中的包大多数是通过 bottle 方式安装的
  • tap,下载源
  • cask(s),安装 macOS native 应用的扩展,可以理解为有图形化界面的应用,带 s 为复数
  • bundle,描述 Homebrew 依赖的扩展

安装配置 Homebrew

世上无难事,只要找到 Homebrew 的正确安装方式。

按理说,Homebrew 的安装方式非常简单,只需要执行官方的一句命令就可以完成安装了。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

但国内开发者命苦就苦在,经常会因为网络的原因安装失败。原因我只能说这是 https://raw.githubusercontent.com 网站的锅,谁让它访问不稳定呢?

怎么办呢?

必须换一种高效且科学的安装方式,那就是使用镜像安装。 Gitee 上有开源作者提供了一键安装包,只需要执行以下命令就可以了。

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

安装脚本里提供了中科大、清华大学、北京外国语大学、腾讯、阿里巴巴等下载源。

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

但过来人告诉你,别选其他镜像源,就选中科大,速度杠杠的,40-50M/s,这速度比其他镜像源快多了,对比起来,其他就是蜗牛🐌。

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

这个安装脚本非常的智能,几乎可以一件帮我们搞定所有问题。

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

再次感谢 Gitee 上这位大牛,已经 3k star 了,我把地址贴出来:

https://gitee.com/cunkai/HomebrewCN

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

brew 本体安装成功后,会提示我们配置国内镜像源。

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

nice,安装完成了。执行下面这几个命令体验下。

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!
  • brew ls 查看本地命令;
  • brew search mongodb 查找软件;
  • brew -v 查看版本;
  • brew update 更新版本;
  • brew install --cask firefox 安装图形化界面软件
  • brew config 查看配置。

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

brew 和 brew cask 的区别

这里顺带说一下 brew 和 brew cask 的区别,这也是一开始我使用 brew 时困惑的一个点。

以前的版本中,是可以直接 brew cask list 这样执行命令的,现在改成了 brew list --cask

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

brew 是从下载源码开始,然后编译(不一定,有些有现成的 bottle)解压,通过 ./configure && make install 进行安装,同时会包含相关的依赖库。环境变量也是自动配置的。

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

brew cask 是下载解压已经编译好了的软件包(.dmg/.pkg),放在统一的目录中,省去了手动去下载、解压、拖拽等蛋疼步骤。

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

通过 brew search google 我们也可以看得出两者之间的区别。

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!
  • 「Formulae」一般是那些命令行工具、开发库、字体、插件等不含 GUI 界面的软件。
  • 「Cask」就会包含一些 GUI 图形化界面的软件,如 Google Chrome、FireFox 、Atom 等

使用 Homebrew

Homebrew安装配置完成后,我们来实操体验两把。

这里是 homebrew 常用命令的一个清单,可供参考。

命令 描述 brew update 更新 Homebrew brew search package 搜索软件包 brew install package 安装软件包 brew uninstall package 卸载软件包 brew upgrade 升级所有软件包 brew upgrade package 升级指定软件包 brew list 列出已安装的软件包列表 brew services command package 管理 brew 安装软件包 brew services list 列出 brew 管理运行的服务 brew info package 查看软件包信息 brew deps package 列出软件包的依赖关系 brew help 查看帮助 brew cleanup 清除过时软件包 brew link package 创建软件包符号链接 brew unlink package 取消软件包符号链接 brew doctor 检查系统是否存在问题 brew tap [user/repo] 将开源仓库添加到源

第一把,使用 Homebrew 安装 JDK

作为一名 Java 后端程序员,JDK 是必须要安装的,对吧?

1)执行 brew search jdk 查找有哪些可供安装的 JDK

2)执行 brew install openjdk@17 安装 JDK。

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

3)但我们在 macOS 上安装了多个版本的 JDK 后,怎么管理它们呢?可以安装一下 jEnv,一个帮助我们管理 JAVA_HOME 的命令行工具,在 GitHub 上已经收获 4.3k 的 star。

GitHub 地址:https://github.com/jenv/jenv

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

官方文档也非常的简洁大方:

https://www.jenv.be/

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

安装:

brew install jenv

配置:

echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc

添加:

jenv add /usr/local/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home/

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

JDK 的安装路径可以通过下图的位置查找。

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

管理:

jenv versions
jenv global 17.0.3

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

是不是贼方便?再也不用整这 echo 'export PATH="/usr/local/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc 玩意了!爽,实在是爽!

第二把,使用 Homebrew 安装 MongoDB

先看 MongoDB 的官方文档(当前 release 版本是 5.0,我这里就先用上一个稳定版 4.4):

https://www.mongodb.com/docs/v4.4/tutorial/install-mongodb-on-os-x/

1)拉取 MongoDB 的源

brew tap mongodb/brew

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

2)更新 brew

brew update

3)安装 MongoDB

brew install mongodb-community@4.4

OK,安装成功。

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

小结

通过 Homebrew 下载的软件基本上来自于官网,所以大可以放心。而且而且它尽可能地利用了系统自带的各种库,使得软件包的编译时间大大缩短,基本上不会造成冗余。

这里顺带给大家提一则小故事,教别人学算法的大佬可以拿走了:homebrew 的作者去面 Google,被考算法题: 反转二叉树,结果没通过被拒了,😆

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

好了好了,今天这篇文章就先水到这吧,我们下期见~

没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟

本文已收录到 GitHub 上星标 2.8k+ 的开源专栏《Java 程序员进阶之路》,据说每一个优秀的 Java 程序员都喜欢她,风趣幽默、通俗易懂。内容包括 Java 基础、Java 并发编程、Java 虚拟机、Java 企业级开发(Git、Nginx、Maven、Intellij IDEA、Spring、Spring Boot、Redis、MySql 等等)、Java 面试等核心知识点。学 Java,就认准 Java 程序员进阶之路😄。

https://github.com/itwanger/toBeBetterJavaer

star 了这个仓库就等于你拥有了成为了一名优秀 Java 工程师的潜力。

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

Original: https://www.cnblogs.com/qing-gee/p/16415983.html
Author: 沉默王二
Title: 好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/594046/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • jdk自带监控程序jvisualvm的使用

    监控小程序的配置 生产环境tomcat的配置 编辑应用所在的tomcat服务器下的bin目录下的catalina.sh文件,修改如下: 配置如下内容: export JAVA_OP…

    Java 2023年5月30日
    092
  • 解決 Synlolgy NAS 安裝 WordPress后无法更新插件問題

    WordPress 本地安装后更新插件需要FTP账号密码解决方案 SSH登录NAS/volume3/web/wordpress目录下,在你的wp-config.php中插入 def…

    Java 2023年6月6日
    080
  • Linux上安装tomcat

    参考https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-8-on-cento…

    Java 2023年6月14日
    091
  • Android 11 使用 BroadcastReceiver 监听短消息

    使用装有MIUI系统的小米手机,静态注册的广播接收器监听短消息。 在 AndroidManifest.xml中声明权限 <uses-permission android:na…

    Java 2023年6月7日
    080
  • 分析 java.util.HashMap 源码

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月9日
    060
  • Java基础面试题(1)

    个人总结,仅自己学习用。愿与大家一起分享!如有错误请指正。 一、String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的? …

    Java 2023年5月29日
    0165
  • 继承

    在旧事物的前提下,让新事物保持旧事物的特性,并泛生出新事物自己独有的特性。在java中,继承是对某一批类的抽象,提高了代码的复用性。 继承就是在A类(基类)上,泛生出B类(派生类)…

    Java 2023年6月5日
    083
  • windows系统python3.6(Anaconda3)安装对应版本 torch、torchvision

    一、官网下载 .whl 文件 https://download.pytorch.org/whl/torch_stable.html 二、使用pip命令安装 打开你的anaconda…

    Java 2023年6月15日
    082
  • 百行以内实现复杂数学表达式计算

    一改以前 本次先上代码 package good;//Evaluate complex expressionsimport java.io.IOException;import j…

    Java 2023年6月5日
    096
  • java中时间区间判断和给定时间加减多长时间LocalDateTime

    java;gutter:true; package java8test;</p> <p>import java.time.Instant; import j…

    Java 2023年5月29日
    086
  • 好书推荐之Mysql三剑客 :《高性能Mysql》、《Mysql技术内幕》、《数据库索引设计与优化》

    对于一个程序员,你可能觉得数据库的事都是 DBA 的事,然而我想告诉你你错了,这些事才真正是程序员的事。因为程序是需要和数据打交道的,所以程序员或架构师不仅需要设计数据模型,还要保…

    Java 2023年6月15日
    075
  • redis-SpringBoot(21)

    Redis是大规模互联网应用常用的内存高速缓存数据库,它的读写速度非常快,据官方 Bench-mark的数据,它读的速度能到11万次/秒,写的速度是8.1万次/秒。 认识Sprin…

    Java 2023年6月13日
    066
  • 【翻译】Spring Boot 条件注解

    在这篇教程中,我们将通过一些示例带你了解 Spring Boot 条件注解 Spring Boot 是自以为是的,当 Spring Boot 在classpath中找到相关依赖项时…

    Java 2023年5月29日
    088
  • 运用D3js开发关系图谱

    背景 公司要开发个关系图谱,一开始选型有两个一个echarts和d3js,但由于echarts拓展性并没有那么好,所以选择了d3js,但d3js说实话,对于我这种前端菜鸟来说,学习…

    Java 2023年6月7日
    073
  • Java8新特性系列-Date Time API

    在 Java 8 中,引入了一个新的日期时间 API,以弥补旧日期时间 API 的以下缺点。 不是线程安全的 – java.util.Date 不是线程安全的,因此开发人员在使用日…

    Java 2023年6月7日
    069
  • JDK自带线程池学习

    JDK自带线程池 线程池的状态 线程有如下状态 RUNNING状态:Accept new tasks and process queued tasks SHUTDOWN状态:Don…

    Java 2023年6月16日
    085
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球