原本想着macOS使用Homebrew对你们没啥难度,以前就分享了一篇介绍homebrew-bundle备份恢复的文章,不过长期使用后仍是以为有必要作一下总结,道理也很简单,越简单越频繁使用的产品就越值得挖掘一些背本身忽视的小技巧,由于若是能够作到天天节省5分钟那么量变可能会成为质变。html
2019年09月11日 - 更新转载Homebrew 深度应用
2019年09月08日 - 初稿mysql
阅读原文 - https://wsgzao.github.io/post...linux
扩展阅读git
Homebrewgithub
macOS使用homebrew-bundle优雅的备份和恢复软件列表面试
Homebrew 是一款颇负盛名的包管理工具,是 macOS 上包管理的事实 (de facto) 标准 。Homebrew 的意思是家酿啤酒。算法
它的官方 slogan 是 The missing package manager for macOS (or Linux)。Linuxbrew 已经在 Homebrew 1.9 正式合入,成为 Homebrew 的 “一等公民”。sql
Homebrew 最先的建立者是 Max Howell,目前的主要维护者是 Mike McQuaid。同 Jekyll 等开源项目同样,Homebrew 的核心维护者也是 GitHub 的员工。GitHub 对于员工亲自参加开源项目方面,作得一直不错。chrome
顺带插播一条奇闻逸事:Homebrew 的创始人 Max Howell 活跃在开源社区,目前主要从事 Swift 相关的库开发。他在 2015 年初曾去 Google 面试,由于 “白板” 写算法题「翻转二叉树」失败,愤而发 tweet 讽刺:swift
Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.
对于使用 Unix/Linux 类系统的用户每每都遇到过这些需求:
./configure
参数超多,还要解决各类库的依赖各 Linux 发行版为了提高安装软件的体验,大多都提供了官方的包管理器,如 Ubuntu 的 aptitude (apt-get)。而苹果官方没有为 macOS 提供包管理器,市面上最好的解决方案就是 Homebrew。
目前 Homebrew 的中文内容大多以简单入门级教程为主,对于它的各种能力提之甚少,我但愿在这里更全面的分享 Homebrew。
网上基础的教程不少,我这里只简略的介绍下。对于基础功能类的深度用法,推荐这篇 macOS 包管理工具 Homebrew 不彻底指南。
开始安装前须要安装 macOS 命令行工具:
xcode-select —install
或者,在 https://developer.apple.com/d... 下载安装。
而后执行:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# 安装 brew install wget # 完成安装后能够列出已安装内容 brew list # 显示能够升级的包 brew outdated cmake (3.13.4) < 3.14.0 yarn (1.13.0) < 1.15.2 youtube-dl (2019.03.09) < 2019.03.18 # 进行升级 brew upgrade cmake # 删除 brew uninstall wget # 安装桌面程序 brew cask install google-chrome
对于 Homebrew-cask 管理桌面程序,这里先不细说,后面会专门讲。
Homebrew 会把软件安装到 /usr/local/Cellar
,而且经过软链连接到 /usr/local/bin
。咱们能够经过 brew unlink
和 brew link
删除或建立连接。
Homebrew 把软件安装过程当中的各类名词都进行了拟物化命名,这些命名挺有意思,但对于大多数英语水平通常的人来讲,有很多词汇有些生僻。
英文 | 直译 | 实际含义 |
---|---|---|
formula(e) | 公式 | 安装包的描述文件,formulae 为复数 |
cellar | 地窖 | 安装好后所在的目录 |
keg | 小桶 | 具体某个包所在的目录,keg 是 cellar 的子目录 |
bottle | 瓶子 | 预先编译好的包,不须要现场下载编译源码,速度会快不少;官方库中的包大多都是经过 bottle 方式安装 |
tap | (插入) 水龙头 | 下载启用某个源 |
cask | 木桶 | 安装 macOS native 应用的扩展 |
bundle | 捆 | 描述 Homebrew 依赖的扩展 |
对于 Homebrew,咱们不少时候每每都是上来就 brew search
或是 brew install
。缺什么安什么,没有充分的应用它的强大能力。
首先,Homebrew 虽为解决控制台程序而生,但它彻底有能力(Cask)安装任何桌面软件。它还支持丰富的分类目软件库或第三方库。
除此以外,它还有一个打包安装或备份工具,能够把已安装的软件输出成 Brewfile。迁移到新电脑时,只要根据 Brewfile 运行 Homebrew bundle,就能够一键安装所有控制台、桌面和来自 Mac App Store 的程序(Mac App Store 上的软件经过 mas 支持)。
Tap 在 Homebrew 中我理解是个动词,指的是启用某个源。实际看了下发现,homebrew-services 和 homebrew-bundle 也已 tap 形式存在,所以能够认为 tap 实际指的应该是扩展(extension)。
Homebrew 默认状况下会自带:
后二者并无任何公式配方,而只是扩展程序。
除此以外的源,须要经过 brew tap
来启用。如:
brew tap heroku/brew brew install heroku
Homebrew-services 是 Homebrew 的后台服务程序扩展,它基于 macOS 的 launchctl
。后台服务类程序的安装依旧使用 Homebrew,在管理时可使用 Homebrew-services 进行启动、重启和中止等操做。
brew install mysql brew services start mysql
Homebrew-cask 是 Homebrew 的 macOS Native 应用扩展,经过 cask 能够安装各种应用程序。
搜索 Cask 的方法和搜索普通包同样,但安装时须要加上 cask 指令:
brew search google-chrome brew cask install google-chrome
cask-versions
Homebrew Cask 和 Homebrew 同样,默认库只维护最新版本,但有的时候咱们仍是须要用旧版的(好比:我只有 Dash 3 的 License,因此须要用 Dash 3 而不是最新的 Dash 4),那就可能须要使用 cask-versions。
brew tap homebrew/cask-versions brew cask install dash3
cask-fonts
Homebrew 官方的字体源,好比 Mozilla 的开源字体 Fira Code:
brew tap homebrew/cask-fonts brew cask install font-fira-code
Homebrew 不只仅是一个包管理器,还具备软件依赖管理能力。经过 Homebrew Bundle 能够帮你解决全部软件依赖,包括官方和第三方的 formula 以及 cask,甚至还包括 Mac App Store(简称 mas)中的应用。
Homebrew 默认就安装了 Homebrew Bundle。
咱们只须要一个 Brewfile
,就能够配置好全部须要的应用。熟悉 Ruby 的人应该不太须要解释,毕竟 Ruby 本身就有 Bundler 这套东西,Brewfile 和 Gemfile 属于对应关系。
若是你的安装列表已经足够 “干净”,那么能够执行 brew bundle dump
来生成现有依赖,输出到 Brewfile
:
brew bundle dump cat Brewfile brew "git" brew "wget" brew "mas" brew "p7zip" ...
若是想本身写也比较容易,Brewfile
是一种简单的 Ruby DSL,写起来比大部分配置文件都简单。只须要掌握一些经常使用到的命令,主要有 brew
, tap
, cask
和 mas
。
这四条命令分别对应:
注:Homebrew 虽然好用,但 Homebrew 并不能管理 MAS「Mac App Store」上的应用软件, 在终端上轻松管理「Mac App Store」中应用的神器 mas-cli
命令行类应用:
brew "git" brew "wget" brew "vim"
非命令行类:
cask "google-chrome" cask "alfred" cask "visual-studio-code"
非官方 Formula 应用:
tap "homebrew/cask-versions" brew "dash3" tap "homebrew/cask-fonts" cask "font-source-code-pro"
Mac App Store 上的应用:
mas "WeChat", id: 836500024
所以,维护好 Brewfile 就能够完美解决应用自动化安装,只须要运行:
brew bundle
建立并提交一个 Formula 比较容易,官方教程很是详细。这里,我就不作单独介绍了。
Homebrew 除了各类官方维护的源外,还支持自建软件库。默认使用 GitHub,须要以 “homebrew-xxx” 格式命名 Repo。Formula 或 Cask 文件须要存放在 Formula 或 Casks 二级目录中。
好比,Heroku 的自建库在 GitHub 上是 heroku/homebrew-brew
。经过 brew tap heroku/brew
就能够获取库里维护的包了。
上面说到,Tap 默认维护在 GitHub,那么当咱们想安装一些须要保密的软件时该怎么办呢?
答案是 Tap 支持指定 Git,所以也可使用内网域名内的 Git:
brew tap yourcompany/brew git@git.yourcompany.com: yourcompany/homebrew-brew.git brew install inhouse-app
Homebrew 自动升级触发几率很高,因为网络等问题,检查更新会好久有时会比较烦。能够经过环境变量禁用自动升级:
HOMEBREW_NO_AUTO_UPDATE=1 brew info mysql
Homebrew 的安装指令并不是只支持名字,也能够用文件安装包括网络文件和本地文件。
# 本地 brew install blabla.rb # 远程 brew install https://blablablabla.com/blabla.rb
Homebrew 默认状况下只支持最新版软件安装,有些重要的版本会单独存在。但想安装一些小版本就得本身 DIY 了。
我所知有两种方法:
brew install
安装。/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
,git checkout
到所在 commit,再用 brew pin
锁定这个文件的更新,而后进行安装。我遇到的问题大多数是升级macOS Mojave以后产生的,升级前要三思然后行,先备份,先备份,先备份
Homebrew Permissions Denied Issues Solution
sudo chown -R $(whoami) $(brew --prefix)/*
Reference - https://gist.github.com/iraza...
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun.
Reference - https://apple.stackexchange.c...
# The problem is that you are using XCode and you explicit have to agree to the license agreement. So open Terminal, and run the following: xcode-select --install # This will download and install xcode developer tools and fix the problem. As a follow on step, you may need to reset the path to Xcode if you have several versions or want the command line tools to run without Xcode. xcode-select --switch /Applications/Xcode.app xcode-select --switch /Library/Developer/CommandLineTools
Homebrew国内加速镜像
加速一切 - 配置国内镜像 - Linux apt/macOS brew/Docker/Python Conda/Maven
https://github.com/Linuxbrew/brew/issues/612
Formula Cookbook — Homebrew Documentation
Formula Cookbook — Homebrew Documentation