1.29.2.3.1. Homebrew介绍


1.29.2.3.1.1. Homebrew介绍和安装

Homebrew官网
Homebrew Documentation
Homebrew Github
Mac App Store Search & Install any app on Mac

🍺 The missing package manager for macOS (or Linux)
mac缺少macOS(或Linux)的软件包管理器

Homebrew 是一款 Mac OS 平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。

Homebrew 通过简单的一条指令,就可以实现包管理,不需要关心各种依赖和文件路径的情况。

Homebrew 的两个术语:

  • Formulae:软件包,包括了这个软件的依赖、源码位置及编译方法等;
  • Casks:已经编译好的应用包,如图形界面程序等。

Homebrw相关的几个文件夹用途:

  • bin:用于存放所安装程序的启动链接(相当于快捷方式)
  • etc:brew安装程序的配置文件默认存放路径
  • Library:Homebrew 系统自身文件夹
  • Cellar:通过brew安装的程序将以 [程序名/版本号] 存放于本目录下

  • 通过brew install安装应用最先是放在/usr/local/Cellar/目录下。

  • 有些应用会自动创建软链接放在/usr/bin或者/usr/sbin,同时也会将整个文件夹放在/usr/local
  • 可以使用brew list 软件名确定安装位置。可以在mac终端直接输入 brew list mysql

1.29.2.3.1.1.1. Homebrew安装

Install Homebrew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Run brew help to get started

brew -v

brew更新到最新版本,执行:brew update


1.29.2.3.1.2. Homebrew常用的brew命令

  • 查看brew版本:brew -v
  • 更新brew版本:brew update
  • 本地软件库列表:brew list 列出已安装的软件
  • 查看软件库版本:brew list --versions
  • 查找/搜索软件包:brew search xxx (xxx为要查找软件的关键词),如brew search wget
  • 安装软件包:brew install xxx (xxx为软件包名称),如brew install wget
  • 卸载软件包:brew uninstall xxx
  • 卸载软件:brew remove 软件名,如brew remove wget
  • 安装软件:brew cask install xxx(xxx为软件名称)
  • 卸载软件:brew cask uninstall xxx
  • 查找软件安装位置:which xxx (xxx为软件名称)
  • 列出过时的软件包(已安装但不是最新版本):brew outdated
  • 更新过时的软件包(全部或指定):brew upgrade 或 brew upgrade wget
  • 用浏览器打开brew的官方网站:brew home
  • 显示软件信息:brew info
  • 显示包依赖:brew deps

要获取最新的包的列表,首先得更新 Homebrew 自己。这可以用 brew update 办到。

  • brew update

更新包 (formula)
更新之前,我会用 brew outdated 查看哪些包可以更新。

  • brew outdated

然后就可以用 brew upgrade 去更新了。Homebrew 会安装新版本的包,但旧版本仍然会保留。

  • brew upgrade # 更新所有的包
  • brew upgrade $FORMULA # 更新指定的包

清理旧版本
一般情况下,新版本安装了,旧版本就不需要了。我会用 brew cleanup 清理旧版本和缓存文件。Homebrew 只会清除比当前安装的包更老的版本,所以不用担心有些包没更新但被删了。

  • brew cleanup # 清理所有包的旧版本
  • brew cleanup $FORMULA # 清理指定包的旧版本
  • brew cleanup -n # 查看可清理的旧版本包,不执行实际操作
    这样一套下来,该更新的都更新了,旧版本也被清理了。

锁定不想更新的包
如果经常更新的话,brew update 一次更新所有的包是非常方便的。但我们有时候会担心自动升级把一些不希望更新的包更新了。数据库就属于这一类,尤其是 PostgreSQL 跨 minor 版本升级都要迁移数据库的。我们更希望找个时间单独处理它。这时可用 brew pin 去锁定这个包,然后 brew update 就会略过它了。

  • brew pin $FORMULA # 锁定某个包
  • brew unpin $FORMULA # 取消锁定

其他几个常用命令

  • brew info 可以查看包的相关信息,最有用的应该是包依赖和相应的命令。比如 Nginx 会提醒你怎么加 launchctl ,PostgreSQL 会告诉你如何迁移数据库。这些信息会在包安装完成后自动显示,如果忘了的话可以用这个命令很方便地查看。
  • brew info $FORMULA # 显示某个包的信息
  • brew info # 显示安装了包数量,文件数量,和总占用空间
  • brew deps 可以显示包的依赖关系,我常用它来查看已安装的包的依赖,然后判断哪些包是可以安全删除的。
  • brew deps --installed --tree # 查看已安装的包的依赖,树形显示

还有很多有用的命令和参数,没事 man brew 一下可以涨不少知识。

参考定期更新 Homebrew
https://github.com/Homebrew/brew/blob/master/docs/FAQ.md
https://segmentfault.com/a/1190000004353419
Homebrew常用安装卸载命令


1.29.2.3.1.3. 安装过程中遇到的问题

1.29.2.3.1.3.1. 连接不上网站的问题

  1. 如何解决类似 curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused 的问题

笔者最近发现 github 的用户头像和自己文章中的图片显示不出来了。然后今天发现安装 homeBrew 和 nvm 出现了标题的报错信息。

以上是安装 pnpm 的报错信息,可以发现,脚本需要到 raw.githubusercontent.com 上拉取代码。

网上搜索了一下,发现是 github 的一些域名的 DNS 解析被污染,导致DNS 解析过程无法通过域名取得正确的IP地址。

1.29.2.3.1.3.2. 解决方案

打开 https://www.ipaddress.com/ 输入访问不了的域名

查询之后可以获得正确的 IP 地址

在本机的 host 文件中添加,建议使用 switchhosts 方便 host 管理

199.232.68.133 raw.githubusercontent.com
199.232.68.133 user-images.githubusercontent.com
199.232.68.133 avatars2.githubusercontent.com
199.232.68.133 avatars1.githubusercontent.com

添加以上几条 host 配置,页面的图片展示就正常了,homebrew 也能装了,nvm 也行动灵活了。

参考
如何解决类似 curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused 的问题 #10


1.29.2.3.1.4. Homebrew的brew install 和 brew cask install 的区别

Homebrew 提供了两种安装软件的方式,brew install 和 brew cask install,下面对两种方式进行一些解释说明。

1.29.2.3.1.4.1. 1. brew install

brew 是下载源码解压,然后 ./configure && make install ,同时会包含相关依存库,并自动配置好各种环境变量。

Homebrew is the easiest and most flexible way to install the UNIX tools Apple didn’t include with macOS.

对于对程序员只需通过简单的指令,就能快速安装和升级本地的各种开发环境,非常快捷方便。

1.29.2.3.1.4.2. 2. brew cask install

brew cask 是针对已经编译好了的应用包(.dmg/.pkg)下载解压,然后放在统一的目录中(Caskroom),省掉了自己下载、解压、安装等步骤。

Homebrew-Cask extends Homebrew and brings its elegance, simplicity, and speed to macOS applications and large binaries alike.

这个对一般用户来说会比较方便,包含很多在 AppStore 里没有的常用软件。

简单来说,

  • brew install 用来安装一些不带界面的命令行工具和第三方库。
  • brew cask install 用来安装一些带界面的应用软件。

参考
brew install 和 brew cask install 的区别
brew和brew cask有什么区别?


Copyright © 2018-2021 | Distributed under CC BY 4.0 | Peter all right reserved,powered by Gitbook Updated at 2023-03-25 00:08:43

results matching ""

    No results matching ""