MacOS环境配置Homebrew
Homebrew笔记

1. 介绍
对于习惯了使用命令来完成一切的程序员来说,安装软件这种小事,自然是能够用命令解决,就不用图形界面选择。但是在 Linux 中,我们有 yum、apt、dnf、pkg等命令来完成软件的安装,macOS 却并未为我们提供一个好用的包管理器,帮助我们更好的使用 macOS。
好在,虽然官方没有提供,我们却可以使用 Homebrew 这一神器,来完成类似的工作,就如同 Homebrew 的 Slogan :“The missing package manager for macOS (or Linux)”
Homebrew 由开发者 Max Howell 开发,并基于 BSD 开源,是一个非常方便的包管理器工具。在早期, Homebrew 仅有 macOS 的版本,后续随着用户的增多,Homebrew 还提供了 Linux 的版本,帮助开发者在 Linux 同样使用 Homebrew 来配置环境。
1.1 组成部分
Homebrew 是一款包管理工具,目前支持 macOS 和 linux 系统。主要有四个部分组成: brew、homebrew-core 、homebrew-cask、homebrew-bottles。
| 名称 | 说明 |
|---|---|
| brew | Homebrew 源代码仓库 |
| homebrew-core | Homebrew 核心源 |
| homebrew-cask | 提供 macOS 应用和大型二进制文件的安装 |
| homebrew-bottles | 预编译二进制软件包 |
1.2 核心概念
在正式介绍 Homebrew 的使用之前,我先为你介绍一下 Homebrew 中的一些核心的概念,了解这些概念,就可以帮助你更好的去使用 Homebrew。
| 词汇 | 含义 |
|---|---|
| formula (e) | 安装包的描述文件,formulae 为复数 |
| cellar | 安装好后所在的目录 |
| keg | 具体某个包所在的目录,keg 是 cellar 的子目录 |
| bottle | 预先编译好的包,不需要现场下载编译源码,速度会快很多;官方库中的包大多都是通过 bottle 方式安装 |
| tap | 下载源,可以类比于 Linux 下的包管理器 repository |
| cask | 安装 macOS native 应用的扩展,你也可以理解为有图形化界面的应用。 |
| bundle | 描述 Homebrew 依赖的扩展 |
其中,最关键的是 tap 、cask,我们在后续会经常用到。
2. 安装
复制下方命令到终端一键执行即可,我这里用的第一个,是一个知乎博主分享的。
苹果电脑 常规安装脚本(推荐 完全体 几分钟安装完成):
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
苹果电脑 极速安装脚本(精简版 几秒钟安装完成):
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" speed
苹果电脑 卸载脚本:
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/HomebrewUninstall.sh)"
常见错误去下方地址查看
https://gitee.com/cunkai/HomebrewCN/blob/master/error.md
Linux电脑 安装脚本:
rm Homebrew.sh ; wget https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh ; bash Homebrew.sh
Linux电脑 卸载脚本:
rm HomebrewUninstall.sh ; wget https://gitee.com/cunkai/HomebrewCN/raw/master/HomebrewUninstall.sh ; bash HomebrewUninstall.sh
3. 更换为国内镜像源
本教程以更改中科大源为例。
中科大源地址:https://mirrors.ustc.edu.cn/
Homebrew源使用帮助 http://mirrors.ustc.edu.cn/help/brew.git.htmlHomebrew Core源使用帮助 http://mirrors.ustc.edu.cn/help/homebrew-core.git.htmlHomebrew Cask源使用帮助 http://mirrors.ustc.edu.cn/help/homebrew-cask.git.htmlHomebrew Bottles源使用帮助 http://mirrors.ustc.edu.cn/help/homebrew-bottles.html
最终效果查看,最下面的两行 origin 表示,按照 3.1 教程演示即可
# 切换当前工作目录到 Homebrew 的仓库目录
cd "$(brew --repo)"
#显示当前工作目录的路径
pwd
# 查看当前 Git 仓库所配置的远程仓库的详细信息
git remote -v

git remote -v 命令用于查看当前 Git 仓库的远程仓库信息。
输出结果显示 origin https://mirrors.ustc.edu.cn/brew.git (fetch) 和 origin https://mirrors.ustc.edu.cn/brew.git (push) 。这表明当前 Homebrew 仓库的远程源(名为origin)的 URL 是 https://mirrors.ustc.edu.cn/brew.git 。(fetch)表示从这个 URL 拉取代码更新,(push)表示向这个 URL 推送代码更改。
以上为最终效果,大家最后有时间看就行
3.1 更换 brew.git 源
执行下方命令,并看到 ORIGNN 地址已经更新
# 切换到 Homebrew 的仓库目录
cd "$(brew --repo)"
# 设置 Homebrew 仓库的远程源 URL 为中国科学技术大学的镜像地址
git remote set-url origin https://mirrors.ustc.edu.cn/brew.git
# 显示当前 Homebrew 的配置信息,如各种配置参数,如版本号、安装路径、镜像地址等
brew config

重置为官方镜像:
cd "$(brew --repo)"
git remote set-url origin https://github.com/Homebrew/brew.git
3.2 更换 homebrew-core.git 源
通过下方命令发现错误,这个错误信息表明 Git 认为在 “/opt/homebrew/Library/Taps/homebrew/homebrew-core” 这个路径下的仓库所有权存在可疑情况。这通常是由于安全机制引起的,Git 可能担心该仓库不是在安全的环境下或者可能存在恶意操作的风险。
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git

按照要求执行命令,这个命令会将指定的目录添加到 Git 的安全目录列表中,告诉 Git 这个目录是安全的,可以进行操作。这样,在后续执行与这个仓库相关的 Git 操作时,就不会再出现这个错误了。
git config --global --add safe.directory /opt/homebrew/Library/Taps/homebrew/homebrew-core
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git

# 重置为官方地址:
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://github.com/Homebrew/homebrew-core
默认不安装 cask 有需要的可以替换(Homebrew cask 软件仓库,提供 macOS 应用和大型二进制文件),这个我没弄,我就不演示了。
cd "$(brew --repo)"/Library/Taps/homebrew/homebrew-cask
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git
# git remote set-url origin git://mirrors.ustc.edu.cn/homebrew-cask.git
# 重置为官方地址:
cd "$(brew --repo)"/Library/Taps/homebrew/homebrew-cask
git remote set-url origin https://github.com/Homebrew/homebrew-cask
3.3 替换 Homebrew-bottles 源
用以下命令查看终端使用的是 Bash 还是 Zsh
echo $SHELL

bash用户
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile
zsh用户
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zshrc
source ~/.zshrc
brew4.x 系列有个 api 加速环境变量,是如下命令。阿里云镜像是上下两个变量HOMEBREW_BOTTLE_DOMAIN 和 HOMEBREW_API_DOMAIN 都有的,只需要吧里面的 ustc 换成 aliyun即可 。然后这里我使用中科大 api 加速。后续 Homebrew 在使用 API 时会通过中科大的镜像加速地址来提高访问速度。
bash用户
echo 'export HOMEBREW_API_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles/api'>>~/.bash_profile
source ~/.bash_profile
zsh用户
echo 'export HOMEBREW_API_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles/api'>>~/.zshrc
source ~/.zshrc
4. 常用命令
4.1 安装卸载软件
brew --version或者brew -v显示brew版本信息brew install <formula>安装指定软件brew uninstall <formula>卸载指定软件brew list显示所有的已安装的软件brew search text搜索本地远程仓库的软件,已安装会显示绿色的勾brew search /text/使用正则表达式搜软件brew info <formula>显示指定软件信息brew reinstall <formula>重新安装指定软件,先卸载后安装brew install <formula> --build-from-source源码安装指定软件,可以给定指定参数brew commands列出所有可用命令
4.2 升级软件相关
brew update自动升级 homebrew (从 github 下载最新版本)brew outdated检测已经过时的软件brew upgrade升级所有已过时的软件,即列出的以过时软件brew upgrade <formula>升级指定的软件brew pin <formula>禁止指定软件升级brew unpin <formula>解锁禁止升级brew upgrade --all升级所有的软件包,包括未清理干净的旧版本的包brew edit <formula>编辑软件,不会的情况下慎用brew tap列出本地资源仓库,其中 homebrew 是默认仓库,其它都是第三方仓库brew tap <user/repo>添加第三方仓库,命名的规则按照 github 来定的。使用brew untap <user/repo>删除仓库brew deps <formula>查看指定软件依赖于哪些软件brew uses <formula>查看指定软件被哪些软件所依赖
4.3 清理相关
homebrew 再升级软件时候不会清理相关的旧版本,在软件升级后我们可以使用如下命令清理
brew cleanup -n列出需要清理的内容brew cleanup <formula>清理指定的软件过时包brew cleanup清理所有的过时软件brew unistall <formula>卸载指定软件brew unistall <fromula> --force彻底卸载指定软件,包括旧版本
通过 brew 安装的文件会自动设置环境变量,所以不用担心命令行不能启动的问题。
比如安装好了 gradle,即可运行 gradle -v
4.4 管理后台服务
macOS 使用 launchctl 命令加载开机自动运行的服务,brew service 可以简化 lauchctl 的操作。
以 <font style="color:#ECAA04;">MySQL</font> 为例,使用 <font style="color:#ECAA04;">launchctl</font> 启动:
ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
如使用 brew service 可以简化为:
brew services start mysql
services常用命令
brew services list# 查看使用brew安装的服务列表brew services run formula|--all # 启动服务(仅启动不注册)brew services start formula|--all # 启动服务,并注册brew services stop formula|--all # 停止服务,并取消注册brew services restart formula|--all # 重启服务,并注册brew services cleanup# 清除已卸载应用的无用的配置
- 配置文件目录
/Library/LaunchDaemons # 开机自启,需要sudo
~/Library/LaunchAgents # 用户登录后自启
以 homebrew.mxcl.kafka.plist 为例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>homebrew.mxcl.kafka</string>
<key>WorkingDirectory</key>
<string>/usr/local</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/opt/kafka/bin/kafka-server-start</string>
<string>/usr/local/etc/kafka/server.properties</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardErrorPath</key>
<string>/usr/local/var/log/kafka/kafka_output.log</string>
<key>StandardOutPath</key>
<string>/usr/local/var/log/kafka/kafka_output.log</string>
</dict>
</plist>
在这里可以找到服务路径、启动参数、日志路径等
4.5 brew cask
Homebrew Cask 是 Homebrew 的扩展,借助它可以方便地在 macOS 上安装图形界面程序,即我们常用的各类应用。Homebrew 中文含义为自制、自酿酒,Cask 中文含义为桶、木桶,桶装酒是一种成品,也就是说每一个 homebrew cask 都可以直接使用的,比如 Atom 的 Cask 名称为 atom,那么就可以使用如下命令安装:
brew cask install atom
甚至也可以提交新的 Cask,比如假设有桌面客户端少数派,则用 brew cask create sspai 创建新的名称为 sspai 的 Cask,当然还要提供官网下载链接、官方主页、应用版本等信息,可以参照 官方教程,此处就不再细说。
安装 Homebrew Cask【以后新版不需要安装】
安装好 brew 后,就可以执行命令brew tap caskroom/cask获取 Homebrew Cask。注意:
Caskroom 的 Git 地址在 2018 年 5 月 25 日从 https://github.com/caskroom/homebrew-cask 迁移到了 https://github.com/Homebrew/homebrew-cask
所以,以后就不需要安装 Homebrew Cask
4.6 使用 Homebrew Cask
github 使用:https://github.com/Homebrew/homebrew-cask/blob/master/USAGE.md
brew cask install <formula>安装指定图形界面软件brew cask uninstall <formula>卸载软件brew cask uninstall --force <formula>卸载软件,带参数brew cask search text搜索软件brew cask list列出所有通过 cask 安装的软件- 其它可以参考:https://github.com/Homebrew/homebrew-cask/blob/master/USAGE.md
举例可安装的软件
# 安装chrome
brew cask install google-chrome
# 安装LaunchRocket
brew cask install launchrocket
5. 图像化工具 cakebrew
官方地址:https://www.cakebrew.com/
Github 仓库地址:https://github.com/brunophilipe/Cakebrew

点击上方导航栏的 Download,再点击 Download Now 就下载安装包,然后解压的程序拖到应用程序即可。

或者通过 Homebrew 命令安装:
brew install --cask cakebrew
打开后,有点不太稳定,显示不了界面

参考
- https://zhuanlan.zhihu.com/p/111014448 安装
- https://sspai.com/post/56009#! 1.2 核心概念、3
- https://blog.csdn.net/Amio_/article/details/109694893 1.1 组成部分
- https://cloud.tencent.com/developer/article/1867824
- https://zhuanlan.zhihu.com/p/366354601 介绍 Homebrew 图形化工具 cakebrew
MacOS环境配置Homebrew的更多相关文章
- ASP.NET Core macOS 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core macOS 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 是对 ASP.NET 有重大意义的一次重新设计.本章节我 ...
- 重装macOS环境配置笔记
由于早些年买mac的时候写代码的经验还不够,导致多年使用后mac上装满了乱七八糟的软件,比如python就有系统自带的,xcode里的,pyenv的,以及brew安装的各种版本,nginx,Apach ...
- Flutter之环境配置与项目搭建
Flutter之环境配置与项目搭建 一,介绍 1.1,Dart Dart 是一种 易于学习. 易于扩展.并且可以部署到 任何地方 的 应用 编程 语言.并且同时借鉴了Java和JavaScript.D ...
- 在MacOs上配置Hadoop和Spark环境
在MacOs上配置hadoop和spark环境 Setting up Hadoop with Spark on MacOs Instructions 准备环境 如果没有brew,先google怎样安装 ...
- MIT6.828课程JOS在macOS下的环境配置
本文将介绍如何在macOS下配置MIT6.828 JOS实验的环境. 写JOS之前,在网上搜寻JOS的开发环境,很多博客和文章都提到"不是32位linux就不好配置,会浪费大量时间在配置环境 ...
- 【LuaJIT版】从零开始在 macOS 上配置 Lua 开发环境
前言 这篇文章针对的是基于 LuaJIT 的环境配置.借助于 LuaJIT,Lua 的执行效率可以进一步提升几十倍.如果你不是很清楚自己是需要 Lua 还是 LuaJIT,那么建议你从 LuaJIT ...
- macOS 下配置 MAMP 开发环境(Mac + Apache + Mysql + PHP)
macOS 中已经内置了 PHP.Python.Ruby.Perl 等常用的脚本语言,以及 Apache HTTP 服务器,所以使用起来非常方便.本文以最新的 macOS Sierra 10.12 配 ...
- cocos2d-x3.0 macOS下配置Android开发环境以及使用cocos2d-console来新建执行project
下面是子龙山人录制的关于cocos2d-x3.0的视频教程,macOS下配置Android开发环境.使用cocos2d-console来新建执行project.怎样执行cocos2d-x 3.0win ...
- Java环境配置:MacOS
主要是在mac os下进行java环境配置. 下载jdk http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads- ...
- 《React Native 精解与实战》书籍连载「Node.js 简介与 React Native 开发环境配置」
此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...
随机推荐
- PostgreSql Docker 主从热备,异步流复制方案
环境说明 Docker Windows 11 PostgreSql 16 方案步骤 0. 宿主机准备: 找个地方创建一个文件夹用来挂载容器中数据库Data文件夹,这里我用的是: C:\Users\Ad ...
- node-sass安装问题
前情 最近在开发一个小程序项目,为了开发速度,部分页面使用原有H5,但原有H5需要对小程序做一定兼容适配,发现原有H5项目是个很古老项目. 坑位 在项目启动前,需要执行npm install安装项目依 ...
- Python 2.7 十六进制字符数组 转 字符串 (字符是Unicode字符)
有一串十六进制数据,是Uncode字符. import struct strhex='003100310031' buf = strhex.decode("hex") value= ...
- Centos7.8安装Gitlab
公司为了合规性考虑,需要自己搭建私有化版的github.那不用想,肯定要上GitLab了. 项目背景: 服务器:华为云ECS,需要上公网,并在安全组打开80端口访问. 用户:关闭公开注册,新建用户后, ...
- JDK 19 对反应式编程的批判
我们知道 JDK 19 引入了虚拟线程,实现了 JEP425 草案,https://openjdk.org/jeps/425 该案对反应式编程的批判可谓犀利: Improving scalabilit ...
- 设置Docker的默认文件存储位置
对于windows下,直接修改docker desktop界面的配置项目.对于rocky linux下面,对应的配置文件存储在: vim /etc/docker/daemon.json 文件可以配置镜 ...
- 移动端IM开发者必读(三):爱奇艺移动端跨国弱网通信的优化实践
本文由爱奇艺技术团队分享,作者isno,原题"爱奇艺海外App的网络优化实践",下文进行了排版和内容优化等. 1.引言 做海外市场,特别目标是面向全球的用户,网络的重要性不言而喻. ...
- golang两个协程交替打印出1-100
基于channel实现的,两个协程交替打印出1-100 package main import ( "fmt" "sync" ) var ( toOdd = m ...
- JVM实战—11.OOM的原因和模拟以及案例
大纲 1.线上系统突然由于OOM内存溢出挂掉 2.什么是内存溢出及哪些区域会发生内存溢出 3.Metaspace如何因类太多而发生内存溢出 4.无限制调用方法如何让线程的栈内存溢出 5.对象太多导致堆 ...
- C# AIModelRouter:使用不同的AI模型完成不同的任务
AIModelRouter AI模型路由,模型的能力有大小之分,有些简单任务,能力小一点的模型也能很好地完成,而有些比较难的或者希望模型做得更好的,则可以选择能力强的模型.为什么要这样做呢?可以降低A ...