好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!
前言(废话)
本来打算在公司偷偷摸摸给星球的用户写一篇编程喵整合 MongoDB 的文章,结果在通过 brew 安装 MongoDB 的时候竟然报错了。原因很简单,公司这台 Mac 上的 homebrew 环境没有配置好。刚好 Java 程序员进阶之路上缺少这样一篇内容。
所以我就想,不如趁机水一篇吧,啊,不不不,趁机给小伙伴们普及一下 Homebrew 吧!瞧我这该死的大公无私的心(手动狗头)。
不会吧?不会还有人用 macOS 没有安装/配置 Homebrew 吧?
Homebrew 能干什么
Homebrew 的 Slogan :The missing package manager for macOS (or Linux)
Homebrew 这款命令行软件管理神器在 GitHub 上已经有 32.5k+ 的 star 了,功能也真心强大,几乎 macOS 上的软件包它都包了。Homebrew 本身没有问题,问题在于。。。。。不说了,你懂的。
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)"
安装脚本里提供了中科大、清华大学、北京外国语大学、腾讯、阿里巴巴等下载源。
但过来人告诉你,别选其他镜像源,就选中科大,速度杠杠的,40-50M/s,这速度比其他镜像源快多了,对比起来,其他就是蜗牛。
这个安装脚本非常的智能,几乎可以一件帮我们搞定所有问题。
再次感谢 Gitee 上这位大牛,已经 3k star 了,我把地址贴出来:
brew 本体安装成功后,会提示我们配置国内镜像源。
nice,安装完成了。执行下面这几个命令体验下。
brew ls
查看本地命令;brew search mongodb
查找软件;brew -v
查看版本;brew update
更新版本;brew install --cask firefox
安装图形化界面软件brew config
查看配置。
brew 和 brew cask 的区别
这里顺带说一下 brew 和 brew cask 的区别,这也是一开始我使用 brew 时困惑的一个点。
以前的版本中,是可以直接 brew cask list
这样执行命令的,现在改成了 brew list --cask
。
brew 是从下载源码开始,然后编译(不一定,有些有现成的 bottle)解压,通过 ./configure && make install
进行安装,同时会包含相关的依赖库。环境变量也是自动配置的。
brew cask 是下载解压已经编译好了的软件包(.dmg/.pkg),放在统一的目录中,省去了手动去下载、解压、拖拽等蛋疼步骤。
通过 brew search google
我们也可以看得出两者之间的区别。
- 「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。
3)但我们在 macOS 上安装了多个版本的 JDK 后,怎么管理它们呢?可以安装一下 jEnv,一个帮助我们管理 JAVA_HOME 的命令行工具,在 GitHub 上已经收获 4.3k 的 star。
GitHub 地址:https://github.com/jenv/jenv
官方文档也非常的简洁大方:
安装:
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/
JDK 的安装路径可以通过下图的位置查找。
管理:
jenv versions
jenv global 17.0.3
是不是贼方便?再也不用整这 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
2)更新 brew
brew update
3)安装 MongoDB
brew install mongodb-community@4.4
OK,安装成功。
小结
通过 Homebrew 下载的软件基本上来自于官网,所以大可以放心。而且而且它尽可能地利用了系统自带的各种库,使得软件包的编译时间大大缩短,基本上不会造成冗余。
这里顺带给大家提一则小故事,教别人学算法的大佬可以拿走了:homebrew 的作者去面 Google,被考算法题: 反转二叉树,结果没通过被拒了,
好了好了,今天这篇文章就先水到这吧,我们下期见~
没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟。
本文已收录到 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+的命令行软件管理神器,功能真心强大!的更多相关文章
- 解放双手!推荐一款 GitHub 星标 8.2k+的命令行软件管理器,非常酷炫!
小二是公司新来的实习生,之前面试的过程中对答如流,所以我非常看好他.第一天,我给他了一台新电脑,要他先在本地搭建个 Java 开发环境. 二话不说,他就开始马不停蹄地行动了.真没想到,他竟然是通过命令 ...
- springboot实战开发全套教程,让开发像搭积木一样简单!Github星标已上10W+!
前言 先说一下,这份教程在github上面星标已上10W,下面我会一一给大家举例出来全部内容,原链接后面我会发出来!首先我讲一下接下来我们会讲到的知识和技术,对比讲解了多种同类技术的使用手日区别,大家 ...
- WindTerm:新一代开源免费的终端工具,GitHub星标6.6k+,太酷了!
继 Tabby.Warp 后,今天再来给大家推荐一款终端神器--WindTerm,完全开源,在 GitHub 上已经收获 6.6k 的 star. https://github.com/kingToo ...
- github版本库使用详细教程(命令行及图形界面版)
Git是一个分布式的版本控制系统,作为开源代码库以及版本控制系统,Github目前拥有140多万开发者用户.随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选 ...
- 陋居寡闻,初探Github CLI For Windows,开启命令行撸铁时代
简介 gh is GitHub on the command line. It brings pull requests, issues, and other GitHub concepts to t ...
- 好用的Java工具类库,GitHub星标10k+你在用吗?
简介 Hutool是Hu + tool的自造词,前者致敬我的"前任公司",后者为工具之意,谐音"糊涂",寓意追求"万事都作糊涂观,无所谓失,无所谓得& ...
- 【转】Github轻松上手2-如何使用命令行创建和管理repo
转自:http://blog.sina.com.cn/s/blog_4b55f6860100zzhd.html 如果你对这种怀旧的方式很感冒,不妨参考这里: http://help.github.co ...
- Eclipse使用github并开启命令行
1. 安装EGit插件 2. 导入git项目 选择Import: 选择“Clone URI” 输入想要导入的git项目地址和用户名密码: 选择代码分支: 一路点击next完成导入github项目即可. ...
- 神作!阿里首发并发编程神仙笔记,Github已星标92K
Qzone 微信 神作!阿里首发并发编程神仙笔记,Github已星标92K JAVA超神编程 2020-09-23 21:04:06 JVM 无论什么级别的Java从业者,JVM都是进阶时必须迈过的坎 ...
随机推荐
- Vue基础二之全局API、实例属性和全局配置,以及组件进阶(mixins)的详细教程(案列实现,详细图解,附源码)
本篇文章主要是写Vue.directive().Vue.use()等常用全局API的使用,vm.$props.vm.$options.vm.$slots等实例属性的使用,以及Vue全局配置.组件的mi ...
- Jx.Cms开发笔记(二)-系统登录
界面 此界面完全抄了BootstrapAdmin css隔离 由于登录页面的css与其他页面没有什么关系,所以为了防止其他界面的css被污染,我们需要使用css隔离. css隔离需要在_Host.cs ...
- Docker安装 Ubuntu Centos
Ubuntu 安装Dokcer 1. 删除旧版本Docker安装包和依赖项 sudo apt-get remove docker docker-engine docker.io containerd ...
- git-config配置多用户环境以及 includeIf用法
git-config配置多用户环境以及 includeIf用法 git-config配置多用户环境以及 includeIf用法 背景 介绍 配置 栗子 背景 开发人员经常遇到这样的问题,公司仓库和个人 ...
- Typora使用手册(基础)
Typora使用手册 第一步,你首先得拥有一个Typora,可通过(https://typoraio.cn/)该网址下载. 第二步,安装并打开. 第三步,让我们开始认识并设置自己的Typora吧~ 什 ...
- [Istio是什么?] 还不知道你就out了,一文40分钟快速理解
@ 目录 前言 Istio是什么? 服务网格是什么? 应用场景 为什么使用Istio? 流量管理介绍 istio架构 Envoy Sidecar Istiod 虚拟服务(VirtualService) ...
- [python][flask] Flask 入门(以一个博客后台为例)
目录 1.安装 1.1 创建虚拟环境 1.2 进入虚拟环境 1.3 安装 flask 2.上手 2.1 最小 Demo 2.2 基本知识 3.解构官网指导 Demo 3.1 克隆与代码架构分析 3.2 ...
- 干货 | Nginx负载均衡原理及配置实例
一个执着于技术的公众号 Nginx系列导读 给小白的 Nginx 10分钟入门指南 Nginx编译安装及常用命令 完全卸载nginx的详细步骤 Nginx 配置文件详解 理解正向代理与反向代理的区别 ...
- viewport布局
1.viewport实例 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <h ...
- 一、全新安装搭建redis主从集群
前言· 这里分为三篇文章来写我是如何重新搭建redis主从集群和哨兵集群的及原本服务器上有单redis如何通过升级脚本来实现redis集群.(redis结构:主-从(备)-从(备)) 至于为什么要搭建 ...