介绍
包管理工具几乎已经成为现代操作系统或者开发平台不可或缺的工具软件,无论做开发,或是管理服务器,都免不了用到一些第三方依赖包。包管理工具的基本功能就是提供一个集中的平台,可以在这里找到大部分流行的组件,而不用费力的到每个软件自己的主页去下载安装。只需要输入简单的命令,就可以直接安装,并且包管理工具还会帮助用户管理所有这些包的版本,以及它们之间的依赖关系。包管理工具可以让安装和更新程序变得更方便,目前在 MacOS 系统中受欢迎的包管理工具是 Homebrew
Homebrew(可直译为家酿啤酒) 是一款 MacOS 平台下的软件包管理工具,是一个开源的 Ruby 脚本,最早的创建者是马克斯·霍威尔(max howell)。该工具拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用关心各种依赖和文件路径的情况,十分方便快捷
优势
1、通过 Homebrew 下载安装的软件全部来自对应的软件官网,无需担心下载源的安全问题
2、依存于系统既有的库,减少了空间占用和冗余
3、使用 Git 进行管理和更新
4、易于定制
5、安装软件、软件包、软件都在一个目录/usr/local/Cellar
下(cellar 是酒窖的意思),方便管理
安装
【xcode】
如果没有安装 Xcode.app,可能需要先下载并安装 Xcode。但实际上并不需要,只需要安装完成 Xcode 命令行工具(Xcode Command Line Tools )即可
xcode-select —install
然后,执行下面代码就可以安装 Homebrew 了,这是一个 ruby 脚本,执行这个安装脚本就可以完成 Homebrew 所有安装操作
![](/qrcode.jpg)
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
将 /usr/local/bin 添加至 $PATH
环境变量中,要注意的是,.bash_profile中的内容会和其他shell共享,.bashrc中的内容仅仅bash会加载
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile
运行以下命令,确保 Homebrew 运行正常
brew doctor
使用
brew install <package_name> # 安装包
brew uninstall <package_name> # 卸载包
brew upgrade <package_name> # 更新包
brew search <package_name> # 搜索包
brew update # 更新所有安装过的包(包括homebrew)
brew list --versions # 列出所有安装过的包(包括版本号)
cask
Homebrew 是下载源码解压,然后 ./configure && make install ,同时会包含相关依赖库,并自动配置好各种环境变量
Homebrew Cask 是在 Homebrew 基础上的一个增强工具,用来安装 Mac 上的 GUI 程序应用包(.dmg/.pkg)。它是下载程序包解压到统一的目录中(/opt/homebrew-cask/Caskroom),省掉了自己去下载、解压、拖拽(安装)等步骤,然后再软链到~/Applications/目录下, 非常方便,而且还包含很多在 AppStore 里没有的常用软件
所以,Homebrew 一般管理第三方库和命令行工具,而 Homebrew Cask 可以看作是 APP Store 的补充
使用 brew search 命令搜索 google-chrome 时
$ brew search google-chrome
==> Casks
google-chrome
homebrew/cask-versions/google-chrome-beta
homebrew/cask-versions/google-chrome-canary
homebrew/cask-versions/google-chrome-dev
表示 google-chrome 只能用 brew cask 命令来安装
cask 的常用命令如下,cask 只能更新所有包,而不能更新单个包
brew cask install <package_name> # 安装程序包
brew cask uninstall <package_name> # 卸载程序包
brew cask list # 列出安装过的程序包
brew cask upgrade # 更新所有安装过的包(包括homebrew)
两件逸事
一、算法面试失败
Homebrew 的创始人 Max Howell,在 2015 年初曾去 Google 面试,因为 “白板” 写算法题「翻转二叉树」失败,愤而发 twitter 讽刺
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.
二、移除 MongoDB
MongoDB 在 2018 年 10 月宣布将开源 License 从 GNU AGPLv3 切换到 Server Side Public License(SSPL),以此回应 AWS 等云厂商将 MongoDB 以服务的形式提供给用户而没有回馈社区的行为。SSPL 明确要求托管 MongoDB 实例的云厂商要么获取商业许可证要么向社区开放其服务源码。
但是开源社区对此似乎有不少反对声音,许多人认为 SSPL 是具有针对性的,对特定类别的用户具有严重歧视性,这违反了开源的真谛,所以 Fedora 认定 SSPL 不是一个自由软件许可,红帽和 Debian 也宣布从发行版中删除 MongoDB
Homebrew core 列表目前已经将 MongoDB 移除,不再为其提供支持
所以,使用 brew doctor 命令时,会有一个如下的 warning
Warning: Some installed formulae are not readable:
mongodb: unknown version :mountain_lion