简介
Homebrew是一个开源的软件包管理工具,它的主要开发语言是Ruby,项目托管在GitHub上。
目前,Homebrew只能通过命令行终端使用,没有图形化操作界面。因此,这个工具更适合有编程基础的人使用。
官方介绍,Homebrew可以用在macOS系统或Linux系统上管理软件包。但实际上,它在Linux系统上并不流行,更多的还是用于macOS系统,逐渐成为除AppStore之外,另一个实用的软件包管理工具。
软件包管理有几个主要方面:搜索、查看、安装、更新、卸载。Homebrew对这几个方面都有较为良好的支持,使用起来相当便捷。
Homebrew安装
官网地址:https://brew.sh/index_zh-cn
安装命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装完成查看Homebrew版本
brew --version
卸载命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
安装问题
换了一台新电脑,初次安装的时候遇到个问题:
zhongxing@Crystal ~ % /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
curl: (7) Failed to connect to raw.githubusercontent.com port 443 after 5 ms: Couldn't connect to server
zhongxing@Crystal ~ % ping raw.githubusercontent.com
PING raw.githubusercontent.com (0.0.0.0): 56 data bytes
ping: sendto: Socket is not connected
ping: sendto: Socket is not connected
Request timeout for icmp_seq 0
ping: sendto: Socket is not connected
Request timeout for icmp_seq 1
网上给出的解决方案,大概有两种:
- 将Homebrew下载下来,本地手动安装
- 通过https://www.ipaddress.com查询
raw.githubusercontent.com
对应IP地址,然后添加到/etc/hosts
文件中,再执行安装命令
第一种方案我嫌麻烦没尝试;第二种方案有人说成功了,但是我改完hosts
文件后再执行命令卡住很久没动,我就主动中断了,没验证完。
最后无意间想了一下第二种方案的原理,猛然意识到可能是DNS
的问题,因为新电脑联网后还没做过多设置,默认用的是国内DNS
服务,可能存在污染。最后换成Google Public DNS
,就解决问题了,安装过程中也有卡住一段时间。
8.8.8.8 (google-public-dns-a.google.com)
8.8.4.4 (google-public-dns-b.google.com)
Homebrew术语
首先要理解什么是Homebrew软件包?
Homebrew软件包是一类Ruby脚本,其中定义了目标软件包的版本,以及如何管理安装目标软件包的流程。正常情况下,Homebrew软件包名称会和目标软件包名称保持一致。
按照管理方式的不同,Homebrew软件包又分为两类:formula、cask。
Formula
formula管理的目标软件包,其特点是要走源码编译安装流程,例如wget,这类目标软件包通常都是没有图形化操作界面的,只能通过命令行终端使用。
因为下载目标软件包源码进行本地编译安装的过程,通常都是比较原始且耗时的,所以大部分情况下,目标软件包的官方会提供编译好的二进制文件,formula可以直接下载编译好的二进制文件进行本地安装即可,避开本地编译过程,提高软件包的安装效率。
官方将这些提前编译好的二进制文件,叫做bottle。
默认情况下,formula软件包的安装路径是/usr/local/Cellar,官方称这个路径为cellar。
Cask
cask管理的目标软件包,其特点是要走应用包安装流程,例如firefox,这类目标软件包通常都是有图形化操作界面的。
在macOS系统上,应用包就是dmg包,所以,cask管理模式就是自动化了目标dmg包的安装过程,和手动下载dmg包安装效果是一样的,区别只是该软件包被纳入了Homebrew的管理范围。
默认情况下,cask软件包的安装路径是/usr/local/Caskroom,官方称这个路径为caskroom。
需要注意的是,因为目标软件包是dmg包,所以会按照macOS系统规范,被安装到应用程序(/Applications)当中,cask软件包会创建软连接指向真实的目标应用程序,从而达到管理的目的。
Tap
这个术语表示Homebrew软件包仓库,通常都是Git管理的仓库。
官方提供有两个核心仓库:
- homebrew-core仓库,对应formula管理模式
- homebrew-cask仓库,对应cask管理模式
除此之外,还有非官方提供的软件包仓库和各种镜像仓库,只要符合Homebrew软件包管理规范的仓库,都可以称之为tap。
Homebrew常用命令
brew search, -S [options] text|/regex/ […]
搜索软件包,可以用软件包名称的关键字或者正则表达式作为搜索条件。
# 不限定管理模式,formula软件包和cask软件包都会搜索
brew search wget
brew search firefox
# 只搜索formula软件包
brew search --formula wget
# 只搜索cask软件包
brew search --cask firefox
brew update [options]
获取Homebrew版本,以及所有formula、cask的可安装版本信息,同时也能看到本地已安装软件包哪些过时了。
brew update
brew install [options] formula|cask […]
安装软件包
# 优先尝试安装formula软件包,没有的话,再尝试安装cask软件包
brew install wget
brew install firefox
# 指定安装一个formula软件包
brew install --formula wget
# 指定安装一个cask软件包
brew install --cask firefox
brew reinstall [options] formula|cask […]
重新安装软件包,如果之前有安装过,就卸载掉之前的重新安装,如果之前没有安装过,就直接安装。
# 重新安装某个软件包,软件包选择顺序依旧是先formula再cask
brew reinstall wget
brew reinstall firefox
# 重新安装formula软件包
brew reinstall --formula wget
# 重新安装cask软件包
brew reinstall --cask firefox
brew upgrade [options] [outdated_formula|outdated_cask …]
更新本地已安装的,但已不是最新版本的软件包。该命令和reinstall有点类似,都是对软件包进行卸载重装,区别是upgrade命令可以自动带上前一次安装时的options参数。
# 更新所有已过时的软件包,并且会自动使用它们上一次被安装时的options参数进行重新安装
brew upgrade
# 更新指定的formula软件包
brew upgrade wget
# 更新指定的cask软件包
brew upgrade firefox
brew uninstall, remove, rm [options] installed_formula|installed_cask […]
卸载已在本地已安装的软件包。
# 卸载本地已经安装的软件包
brew uninstall wget
brew uninstall firefox
# 卸载本地已安装的formula软件包
brew uninstall --formula wget
# 卸载本地已安装的cask软件包
brew uninstall --cask firefox
brew list, ls [options] [installed_formula|installed_cask …]
查看本地已安装的软件包。
# 查看所有已安装的软件包名称,包括formula和cask
brew list
# 查看所有已安装的formula软件包名称
brew list --formula
# 查看所有已安装的cask软件包名称
brew list --cask
# 查看已安装的软件包wget的文件信息
brew list wget
brew list --formula wget
# 查看已安装的软件包firefox的文件信息
brew list firefox
brew list --cask firefox
# 查看所有已安装的软件包的名称及版本信息
brew list --version
# 查看已安装的软件包wget的名称及版本信息
brew list --version wget
# 查看已安装的软件包firefox的名称及版本信息
brew list --version firefox
brew info, abv [options] [formula|cask …]
查看软件包的一些基本信息和统计数据,就是一些大概的情况。
# 可以统计出本地安装了多少个formula软件包,共有多少文件,占用多少空间
brew info
# 可以看到软件包的概况,比如它来源于哪里,构建工具是什么,依赖有哪些,和哪些软件包有冲突,近期的分析统计数据
brew info wget
brew info --formula wget
brew info firefox
brew info --cask firefox
brew home, homepage [–formula] [–cask] [formula|cask …]
通过浏览器打开目标软件包的官网。
# 打开Homebrew官网
brew home
# 打开wget官网
brew home wget
brew home --formula wget
# 打开firefox官网
brew home firefox
brew home --cask firefox
brew outdated [options] [formula|cask …]
检查本地已安装的软件包版本是否已经过时,命令执行后会展示出已过时的软件包名称、本地安装版本号,最新版本号。
# 展示所有已安装且版本已过时的软件包
brew outdated
# 展示所有已安装且版本已过时的formula软件包
brew outdated --formula
# 展示所有已安装且版本已过时的cask软件包
brew outdated --cask
# 展示某个已安装且版本已过时的cask软件包,如果没有过时,就什么也不展示
brew outdated wget
brew outdated --formula wget
brew outdated firefox
brew outdated --cask firefox
brew cleanup [options] [formula|cask …]
对本地软件包进行清理。分两种情况:
- 如果某个软件包安装有多个版本,会保留相对最新的版本,清理卸载掉其它旧版本
- 如果某个软件包不是最新版本,Homebrew会认为这是一个应该清理掉但实际并未清理的软件包,从而给出一个警告(可忽略)
如果经常使用Homebrew,可能会积攒出很多旧版本的软件包,执行该命令可能会释放出很多的硬盘空间。
# 针对所有已安装软件包执行清理动作
brew cleanup
# 针对某个已安装软件包执行清理动作
brew cleanup wget
brew cleanup --formula wget
brew cleanup firefox
brew cleanup --cask firefox
brew tap [options] [user/repo] [URL]
- 查看本地已关联的Homebrew软件包仓库
- 新增关联一个Homebrew软件包仓库
# 没有跟任何参数,就是查看本地已关联的Homebrew软件包仓库
brew tap
# 指定了user/repo,没有指定URL,则默认这是个GitHub仓库,仓库地址满足固定格式
brew tap <user/repo>
brew tap <user/repo> https://github.com/<user>/homebrew-<repo>
# 指定了URL,则认为这不是一个GitHub仓库
brew tap <user/repo> <URL>
# 这种情况下,关联仓库后要多做一件事情,作用是让Homebrew可以自动更新这个tap
brew tap --force-auto-update <user/repo>
# 上述两个命令可以合成一个
brew tap --force-auto-update <user/repo> <URL>
# 已关联仓库,都存储在macOS系统Library中
cd $(brew --repository)/Library/Taps
同时关联多个tap,可能会遇到一种情况:一个软件包同时存在于多个tap中,并且它们的版本不同。
此时,若是执行软件包安装命令,会优先选择Homebrew官方tap,其次才是其它tap。
这种场景下,如果Homebrew选择的不是目标tap,解决方案就是指定软件包的全名称:文章来源:https://www.toymoban.com/news/detail-498302.html
# 因为homebrew/core仓库有vim软件包,所以会被优先选择
brew install vim
# 从指定了tap安装vim软件包
brew install username/repo/vim
brew untap [–force] user/repo [user/repo user/repo …]
取消本地已关联的Homebrew软件仓库。文章来源地址https://www.toymoban.com/news/detail-498302.html
# 取消关联一个软件仓库
brew untap <user/repo>
# 同时取消关联多个软件仓库
brew untap <user/repo> <user/repo>
# 强制取消关联一个软件仓库,该仓库内已有软件包安装到本地,不想卸载软件包
brew untap --force <user/repo>
到了这里,关于Homebrew使用教程(macOS)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!