Mac 上的包管理工具 Homebrew 使用

Homebrew 是使用 ruby 语言写的 Mac 系统的包管理工具(也有 Linux 版本), 在系统默认没有提供相关包的情况下发挥作用. 大多是工程类没有图形界面的包.

Homebrew 的优点是能够判断系统中已经有的组件而不会重复下载, 其他的包管理工具如 MacPorts, Fink, pkgsrc, Gentoo Prefix等都会重复下载系统已有的组件.

himg

1. 安装

1
/usr/bin/ruby -e "$(curl -fsSL [https://raw.githubusercontent.com/Homebrew/install/master/install](https://raw.githubusercontent.com/Homebrew/install/master/install))"

2. 基础命令

  • brew install vim: 安装 vim
  • brew 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: 更新brew
  • brew 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时, 默认的检查顺序如下
      1. pinned taps
      2. core formulae
      3. other taps
  • brew tap-pin user/repo: 固定某个第三方仓库
  • brew tap-info --installed: 列出所有已安装的 taps
  • brew untap buo/cask-upgrade: 删除
  • brew deps --installed --tree: 查看已安装的包的依赖, 树形显示
  • brew install mas: 安装更新官方商店软件的插件
  • mas upgrade: 更新 mas 内需要更新的软件

3. 官方全部包列表

Homebrew Formulae

4. 个人 Homebrew 包清单(仅供参考)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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

5. 小知识

Gem是封装起来的Ruby应用程序或代码库. 在终端使用的gem命令, 是指通过RubyGems管理Gem包.

rvm 用于帮你安装Ruby环境, 帮你管理多个Ruby环境, 帮你管理你开发的每个Ruby应用使用机器上哪个Ruby环境. Ruby环境不仅仅是Ruby本身, 还包括依赖的第三方Ruby插件. 都由RVM管理.

curl 全称是 commandline url, 是在命令行模式下工作, 利用 URL 的语法进行数据的传输或者文件的传输

6. 插件

6.1. Cask

6.1.1. 介绍

brew 中的一个包管理工具, 涵盖软件范围广, 其内基本都是一些常用的图形化操作软件

6.1.2. 基础命令

  • brew cask help: 查看帮助
  • brew cask install <software name>: 安装软件
  • brew cask install <software name> --force: 强制安装(可用在已有 dmg 安装的情况下)
  • brew cask uninstall <software name> : 卸载软件
  • brew cask zap <software name>: 将与此包相关的所有文件全部删除(可能会删除与其他包共享的一些文件)
  • brew cask info <software name> 查看软件相关信息
  • brew cask list: 列出通过 Homebrew-Cask 安装的包
  • brew cask fetch <software name>: 下载远程软件包到本地文件夹(不安装)
  • brew cask doctor: 检查 Cask 配置信息问题
  • brew cask outdated : 列出过期的软件包
  • brew cask upgrade: 升级所有包
  • brew tap buo/cask-upgrade: 安装第三方仓库, 此仓库可以帮助用户检查更新并更新所有 cask
  • brew cu -a: 通过执行上一个命令后, 可用此命令更新所有 cask 下载的软件. 如果使用默认的 brew cask upgrade会导致部分自动更新的软件不被列出进而不能更新.

6.1.3. 个人 cask 软件包清单(仅供参考)

1
2
3
4
5
6
7
8
9
10
11
12
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

6.2. rmtree

这个包很简单, 功能就是将一个已安装包, 且将只用于该包的所有依赖全部删除, 非常实用!

6.2.1. 安装

brew tap beeftornado/rmtree && brew install brew-rmtree: 安装第三方 tap 并将该 tap 下的包 brew-rmtree 安装到本机

6.2.2. 使用

brew rmtree <package name>: 删除该包并将其所有依赖删除