Mac 上的包管理工具 Homebrew 使用
Homebrew 是使用 ruby 语言写的 Mac 系统的包管理工具 (也有 Linux 版本), 在系统默认没有提供相关包的情况下发挥作用. 大多是工程类没有图形界面的包.
Homebrew 的优点是能够判断系统中已经有的组件而不会重复下载, 其他的包管理工具如 MacPorts, Fink, pkgsrc, Gentoo Prefix等都会重复下载系统已有的组件.

安装
/usr/bin/ruby -e "$(curl -fsSL [https://raw.githubusercontent.com/Homebrew/install/master/install](https://raw.githubusercontent.com/Homebrew/install/master/install))"镜像设置 (可选)
# brew
git -C "$(brew --repo)" remote set-url origin https://mirrors.ustc.edu.cn/brew.git
# core
git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
# cask
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git
# bottles for zsh 和下面 2 选 1
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zprofile
source ~/.zprofile
# bottles for bash 和上面 2 选 1
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile基础命令
brew install vim: 安装 vimbrew install cask: 安装 cask(也是一种软件管理工具, 但是涵盖软件范围广, 基本都是图形界面软件, 比如 QQ 微信等)brew help: 查看简单帮助brew install <package name>: 安装软件包brew uninstall <package name>: 卸载软件包brew list [--versions]: 列出已安装的软件包 (包括版本)brew search <package name>: 查找软件包brew info <package name>: 查看软件包信息brew update: 更新 brewbrew cleanup: 清理所有包的旧版本brew outdated: 列出过时的软件包 (已安装但不是最新版本)brew upgrade [<package name>]: 更新过时的软件包 (不指定软件包表示更新全部)brew doctor: 检查 brew 运行状态man brew: 显示使用手册brew pin $FORMULA: 锁定某个包 (以后不会再更新)brew unpin $FORMULA: 取消锁定brew tap buo/cask-upgrade: 安装一个第三方的仓库- 第三方仓库需要在
GitHub上, 且仓库名必须以homebrew-开头 - 此命令的仓库名可以简写, 省略了
homebrew- - 在
brew install时, 默认的检查顺序如下- pinned taps
- core formulae
- other taps
- 第三方仓库需要在
brew tap-pin user/repo: 固定某个第三方仓库brew tap-info --installed: 列出所有已安装的tapsbrew untap buo/cask-upgrade: 删除brew deps --installed --tree: 查看已安装的包的依赖, 树形显示brew install mas: 安装更新官方商店软件的插件mas upgrade: 更新 mas 内需要更新的软件
如何安装旧版本包
使用 brew tap
以安装 1.2.22 版本的 pyenv 为例
# 1. create a new local tap(ignore this if created)
brew tap-new $USER/local
# 2. extract into our local tap
brew extract --version=1.2.22 pyenv hanley/local
# 3. run brew install@version as usual
brew install pyenv@1.2.22
brew pin pyenv@1.2.22从 https://github.com/Homebrew/homebrew-core/find/master 找到所需包的历史版本
或者直接使用
<https://github.com/Homebrew/homebrew-core/commits/master/Formula/<yourpackage>.rb定位到版本 commits 列表
使用 brew install url
在 github 上找到所需包的历史版本的 rb 文件, 定位该文件的 url, 然后直接使用 brew install <url> 即可
官方全部包列表
个人 Homebrew 包清单 (仅供参考)
autoconf libidn2 python
brew-rmtree libmpc python@3.8
cask libsodium readline
cmake libtasn1 reattach-to-user-namespace
cscope libunistring ruby
ctags libyaml ruby-build
emacs lsd sourcekitten
gcc lua sphinx-doc
gdbm mpfr sqlite
gettext mysql swiftlint
git ncurses tmux
gitup nettle trash
gmp node tree
gnutls openssl@1.1 unbound
highlight p11-kit utf8proc
icu4c pcre2 xz
isl perl yarn
libevent pkg-config yasm
libffi protobuf小知识
Gem是封装起来的Ruby应用程序或代码库. 在终端使用的gem命令, 是指通过RubyGems管理Gem包.
rvm 用于帮你安装Ruby环境, 帮你管理多个Ruby环境, 帮你管理你开发的每个Ruby应用使用机器上哪个Ruby环境. Ruby环境不仅仅是Ruby本身, 还包括依赖的第三方Ruby插件. 都由RVM管理.
curl 全称是 commandline url, 是在命令行模式下工作, 利用 URL 的语法进行数据的传输或者文件的传输
[Cask](https://github.com/Homebrew/homebrew-cask)
介绍
brew 中的一个 gui 软件管理命令
基础命令
brew install --cask <software name>: 安装软件brew install --cask <software name> --force: 强制安装 (可用在已有 dmg 安装的情况下)brew uninstall --cask <software name>: 卸载软件brew zap --cask <software name>: 将与此包相关的所有文件全部删除 (可能会删除与其他包共享的一些文件)brew search --cask <software name>: 根据名称搜索相关软件brew info --cask <software name>: 查看软件相关信息brew list --cask: 列出通过Homebrew-Cask安装的包brew fetch --cask <software name>: 下载远程软件包到本地文件夹 (不安装)brew outdated --cask: 列出过期的软件包brew upgrade --cask: 升级所有包brew tap buo/cask-upgrade: 安装第三方仓库, 此仓库可以帮助用户检查更新并更新所有caskbrew cu -a: 通过执行上一个命令后, 可用此命令更新所有 cask 下载的软件. 如果使用默认的brew cask upgrade会导致部分自动更新的软件不被列出进而不能更新.
个人 cask 软件包清单 (仅供参考)
1password eudic iterm2 omnifocus qlvideo suspicious-package
alfred firefox itsycal omnigraffle qq transmit
aliwangwang fliqlo kap omnioutliner quicklook-json tuxera-ntfs
baidunetdisk folx karabiner-elements omniplan quicklookase typora
bartender fork keycastr paw sf-symbols visual-studio-code
betterzip gemini loopback pdf-expert shadowsocksx-ng-r webpquicklook
beyond-compare get-backup-pro macvim permute slack wechat
chromedriver github monitorcontrol picgo snipaste xscope
dash google-chrome moom qlcolorcode sogouinput
default-folder-x google-earth-pro neteasemusic qlimagesize spotify
downie iina nextcloud qlmarkdown sublime-text
dropbox imazing obs qlstephen surge[rmtree](https://github.com/beeftornado/homebrew-rmtree)
这个包很简单, 功能就是将一个已安装包, 且将只用于该包的所有依赖全部删除, 非常实用!
安装
brew tap beeftornado/rmtree && brew install brew-rmtree: 安装第三方 tap 并将该 tap 下的包 brew-rmtree 安装到本机
使用
brew rmtree <package name>: 删除该包并将其所有依赖删除
[bundle](https://github.com/Homebrew/homebrew-bundle)
这个功能可以让我们备份恢复软件
brew bundle dump --describe --force --file="~/Desktop/Brewfile": 生成备份文件--describe: 为列表中的命令行工具加上说明性文字.--force: 直接覆盖之前生成的Brewfile文件. 如果没有该参数, 则询问你是否覆盖.--file="~/Desktop/Brewfile": 在指定位置生成文件. 如果没有该参数, 则在当前目录生成Brewfile文件.
brew bundle install --file="~/Desktop/Brewfile": 根据Brewfile批量安装软件brew bundle check: 检查是否Brewfile中的所有依赖已经安装brew bundle list: 列出Brewfile中的所有依赖brew bundle cleanup: 将Brewfile中所有未列出的依赖全部删除
Ref
本博客文章采用 CC 4.0 协议,转载需注明出处和作者。
