Homebrew
初识
Homebrew 是一个用于 macOS 系统的开源软件包管理器,也被移植到了 Linux 作为 Linuxbrew。它的设计目标是简化 MacOS 系统上的包管理工作,包括安装、更新以及删除等。
以下是一些 Homebrew 的主要特性:
简易安装:你只需要在命令行中输入简单的命令,Homebrew 就可以帮你安装所需的软件包。
集中管理与更新软件包:通过
brew upgrade命令,你可以一次性更新所有你希望更新的软件包,而不用分别去官网下载最新版本安装包和手动进行更新。自动解决依赖:Homebrew 在安装软件包的时候会自动下载和安装所有依赖的软件包,这确保了软件的正常运行。
容易卸载:你只需要执行
brew uninstall命令,Homebrew 便会安全地卸载你的软件包,连同它的依赖一起。常用软件覆盖广:Homebrew 拥有大量的“formulae”,这些都是由社区维护的软件包脚本,你通常可以找到绝大多数你需要的开源软件。
使用 Homebrew,你可以避免许多手动安装、更新以及管理软件包的繁琐步骤,从而将更多的精力投入到使用这些工具本身去。
目录介绍
这些是 Homebrew 在 MacOS 系统上创建和使用的主要目录,每个目录都有它自己的特定功能。
/usr/local/Homebrew:这是 Homebrew 程序本身的主目录。所有 Homebrew 的源代码和执行文件都存储在这个目录中。当你升级 Homebrew 时,就是这个目录下的内容在更新。/usr/local/Caskroom:Caskroom 是 Homebrew 的一个扩展,它允许你使用同样的 Brew 命令来安装 MacOS 的 GUI 应用程序。每当你通过 Homebrew Cask 安装一个应用时,它的所有文件都会被放在一个单独的目录内,这个目录就在/usr/local/Caskroom/应用名。/usr/local/Cellar:这是所有 Homebrew 安装的包的存放地。当你使用 Homebrew 安装某个包时,它会在 Cellar 目录下为这个包创建一个新的目录,然后将包的所有文件都放在这个目录中。关于每个包的版本信息,也都会被保存在此。
总的来说,这些目录使得 Homebrew 能够成功且在清晰的结构下管理和追踪所安装的所有应用和包。
常用命令介绍
brew 又称 Homebrew,是 macOS 操作系统的一个最广为被接受的包管理器之一。主要用于自动化下载、编译并安装软件。以下是一些 brew 的常用命令:
安装 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"查看 brew 版本
brew -v搜索软件
brew search <软件名>安装软件
brew install <软件名>卸载软件
brew uninstall <软件名>更新 Homebrew 自身
brew update更新所有 Homebrew 安装的软件
brew upgrade查看已安装的软件
brew list获取某个软件的信息
brew info <软件名>检查是否有问题的命令
brew doctor清理不需要的文件
brew cleanup以上就是一些 brew 的常用命令,使用这些命令可以轻松管理 macOS 上的各种软件包。
Homebrew 的两个术语:
Formulae:软件包,包括了这个软件的依赖、源码位置及编译方法等;
Casks:已经编译好的应用包,如图形界面程序等。
例如,我想查找 jdk 相关的包
lennon@lennonMac-Pro Homebrew % brew search jdk
==> Formulae
openjdk openjdk@11 openjdk@17 openjdk@8 jd mdk cdk
==> Casks
adoptopenjdk graalvm-jdk microsoft-openjdk oracle-jdk-javadoc semeru-jdk-open
gama-jdk jdk-mission-control oracle-jdk sapmachine-jdk这个命令的结果显示了通过 Homebrew 可以查找并安装的与jdk相关的所有工具。它们被分为 "Formulae" 和 "Casks" 两个部分。
Formulae: 这部分列出的都是可以通过 Homebrew 在命令行环境下安装的 JDK 版本,比如 openjdk@11 表示是 openjdk 的 11 版本。Casks这部分列出的是通过 Homebrew Cask 可以安装的 GUI 应用程序。这些都是第三方提供的 JDK。例如,oracle-jdk是甲骨文公司提供的 JDK。
举例来讲,如果需要安装 openjdk 的 11 版本,可以在命令行中执行 brew install openjdk@11 命令,Homebrew 就会自动下载并安装相应的 JDK。类似的,如果希望安装特定的 GUI 应用程序,例如 oracle-jdk,只需要运行 brew install --cask oracle-jdk 即可。
换源
国内可供选择的包括但不限于 , 清华源,中科大,阿里源
因为我在江苏,通过 ping 命令得到,阿里源的延迟最小。
ping mirrors.ustc.edu.cn -c 4
ping mirrors.aliyun.com -c 4
ping mirrors.tuna.tsinghua.edu.cn -c 4输入 brew config,我们得到如下信息
HOMEBREW_VERSION: 4.2.5
ORIGIN: https://mirrors.aliyun.com/homebrew/brew.git
HEAD: 9c8374d3b78c4f531c5c2c0d272d1fb1f1b60d70
Last commit: 4 days ago
Core tap JSON: 26 Jan 02:14 UTC
Core cask tap JSON: 26 Jan 02:14 UTC
HOMEBREW_PREFIX: /opt/homebrew
HOMEBREW_BOTTLE_DOMAIN: https://mirrors.aliyun.com/homebrew/homebrew-bottles
HOMEBREW_CASK_OPTS: []
HOMEBREW_MAKE_JOBS: 10
Homebrew Ruby: 3.1.4 => /opt/homebrew/Library/Homebrew/vendor/portable-ruby/3.1.4/bin/ruby
CPU: 10-core 64-bit arm_blizzard_avalanche
Clang: 15.0.0 build 1500
Git: 2.39.3 => /Library/Developer/CommandLineTools/usr/bin/git
Curl: 8.4.0 => /usr/bin/curl
macOS: 14.3-arm64
CLT: 15.1.0.0.1.1700200546
Xcode: N/A
Rosetta 2: false分两种,一种是 4.0 及其以上,只需要更换 ORIGIN和声明HOMEBREW_BOTTLE_DOMAIN就可以了。
4.0 及其以上
具体操作如下:
# 修改 brew.git 为阿里源
$ git -C "$(brew --repo)" remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git
# 修改 homebrew-core.git 为阿里源
$ git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git
# zsh 替换 brew bintray 镜像
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.zshrc
$ source ~/.zshrc
# bash 替换 brew bintray 镜像,
# 自 MacOS Catalina(2019年) 版本后,zsh 已经成为默认的 shell,如果在此版本之后,此处可以不设置
# ubuntu 默认的仍然是 bash,需要替换这个
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.bash_profile
$ source ~/.bash_profile
# 刷新源
$ brew update4.0 以下
博客传送门:原文地址
# 查看 brew.git 当前源
$ cd "$(brew --repo)" && git remote -v
origin https://github.com/Homebrew/brew.git (fetch)
origin https://github.com/Homebrew/brew.git (push)
# 查看 homebrew-core.git 当前源
$ cd "$(brew --repo homebrew/core)" && git remote -v
origin https://github.com/Homebrew/homebrew-core.git (fetch)
origin https://github.com/Homebrew/homebrew-core.git (push)
# 修改 brew.git 为阿里源
$ git -C "$(brew --repo)" remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git
# 修改 homebrew-core.git 为阿里源
$ git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git
# zsh 替换 brew bintray 镜像
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.zshrc
$ source ~/.zshrc
# bash 替换 brew bintray 镜像
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.bash_profile
$ source ~/.bash_profile
# 刷新源
$ brew update错误分析
4.0 及其以上版本替换 homebrew/core 仓库时,会报如下错误:
lennon@lennonMac-Pro homebrew % git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git
fatal: cannot change to '/opt/homebrew/Library/Taps/homebrew/homebrew-core': No such file or directory这是因为 4.0 以后 homebrew/core 、homebrew/cask 等目录不会被默认创建,有需要的话,执行:
brew tap homebrew/core
brew tap homebrew/caskGitHub 原文地址:原文地址