brew 更新

为什么要定期更新
我发现不少人都不会经常更新,或者只在必须用某个工具的新版本的时候才更新。他们的看法是,更新有可能产生一些意外的问题,反正当前环境足够稳定可以用,干嘛自找麻烦呢?

这个看法对也不对。对是因为,更新产生的潜在问题不可避免。不对是因为总有一天你需要升级的,也许是为了某个工具的新特性,也许是为了修复软件的漏洞,也许你安装的包非要依赖另一个包的新版本,等等。如果隔了很长一段时间才升级,那潜在的小问题可能就会变成大问题。

另一个有意思的现象是,当碰到比较破坏性的事情,比如 Mac OS 大版本更新后,很多人会选择重装 Homebrew 然后顺带安装最新版的包。很少人会去装一个指定的旧版本(除了特殊项目需要)。这说明他们不是不想用新版本,而是不想痛苦地更新。

既然总有一天需要更新,而更新带来问题不可避免,那为什么不更新得频繁点呢?这个道理跟 Git 的冲突解决有相似性。长时间不 pull/push 的代码更容易产生冲突,一个解决方法就是频繁地 commit & merge 。

我现在试着一个月更新一次,两次下来发现这些好处:

每次更新的包很少,更新风险也小。

更容易发现不需要的包,便于清理,不为不需要的东西买单。

定期清理旧版本,释放空间。

更新流程其实都差不多,下面列一下我常用的命令。

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

brew update
完后会显示可以更新的包列表,其中打钩的是已经安装的包。输出类似下面这样:

Updated Homebrew from fe93aa3 to 6ae64c3.
Updated 1 tap (homebrew/versions).
==> Updated Formulae
awscli cmake ✔ homebrew/versions/libmongoclient-legacy
更新包 (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 # 查看已安装的包的依赖,树形显示
输出如下:

elixir (required dependencies)
└── :erlang

wxmac (required dependencies)
├── jpeg
├── libpng
│ └── xz
└── libtiff
└── jpeg
还有很多有用的命令和参数,没事 man brew 一下可以涨不少知识。

小结
不想更新 Homebrew 往往有两个原因,害怕潜在的风险和对工具的不熟悉,我之前也是这样。写这篇文章最开始是为了帮我记录常用的命令方便以后查阅的。希望它也能帮到你。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: brew是macOS系统下的软件包管理器,可以方便地安装、更新和管理各种软件包。而Node.js是一种基于Chrome V8引擎的JavaScript运行环境,用于开发服务器端和网络应用程序。 使用brew安装Node.js非常简单,只需要在终端中运行以下命令即可: ``` brew install node ``` 运行上述命令后,brew会自动下载、安装和配置Node.js及其相关的软件包。 安装完成后,我们可以通过以下两种方式验证Node.js是否成功安装: 1. 使用以下命令查看Node.js版本: ``` node -v ``` 如果显示出Node.js的版本号,则说明安装成功。 2. 运行Node.js的REPL(交互式解释器)模式: ``` node ``` 如果成功进入REPL模式,并且看到类似`>`的提示符,则说明安装成功。 安装Node.js后,我们可以使用它开发各种服务器端应用程序、命令行工具和JavaScript应用程序等。可以通过编写JavaScript代码,实现各种功能,比如处理数据、创建web服务器、构建API等等。 总之,使用brew安装Node.js是一种非常方便快捷的方式,可以让我们更轻松地使用和管理Node.js环境。希望上述回答能够对你有所帮助。 ### 回答2: brew nodejs是指使用Homebrew作为包管理器来安装Node.js。Homebrew是一种在MacOS上安装软件的简单、快速和灵活的方法。以下是在终端中使用Homebrew安装Node.js的步骤: 1. 首先,确保你的Mac上已经安装了Homebrew。如果尚未安装,请在终端中运行以下命令来安装Homebrew: `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` 2. 安装完Homebrew后,运行以下命令来更新Homebrew到最新版本: `brew update` 3. 然后,通过运行以下命令来搜索Node.js的可用版本: `brew search node` 4. 找到你想要安装的Node.js版本后,使用以下命令来安装Node.js: `brew install node@版本号` 例如,如果你想安装Node.js的最新稳定版本,可以运行以下命令来安装: `brew install node` 5. 安装完成后,可以通过运行以下命令来验证Node.js是否成功安装: `node -v` 通过上述步骤,你可以使用Homebrew在Mac上安装Node.js。使用Homebrew安装Node.js有很多好处,例如它提供了一种简便的方式来管理和更新Node.js,而且可以轻松地切换不同的Node.js版本。 ### 回答3: "brew nodejs" 是一个被广泛使用的命令,用于通过 Homebrew 来安装 Node.js。 Homebrew 是 macOS 上一款非常受欢迎的包管理器,它允许用户通过命令行方式来安装、升级和卸载软件包。而 Node.js 则是一种基于 JavaScript 运行时的开发平台,用于构建高效且可扩展的网络应用程序。 通过运行 "brew nodejs" 命令,我们可以在 macOS 上安装最新版本的 Node.js。这个命令首先会检查系统中是否已经安装了 Homebrew 包管理器,如果没有则会进行安装。然后,它会从 Homebrew 的官方仓库中下载并安装 Node.js 最新可用的版本。 安装完成后,我们可以通过运行 "node -v" 命令来检查 Node.js 是否成功安装并查看其版本号。此外,还可以使用 "npm -v" 命令来检查是否成功安装了 Node.js 包管理工具 npm,并查看其版本号。 使用 brew 来安装 Node.js 的好处之一是它使得软件包的管理变得非常简单和方便。我们可以轻松地使用 brew 进行 Node.js 的升级和管理,并可以通过简单的命令来解决可能遇到的依赖关系问题。 总之,运行 "brew nodejs" 命令可以在 macOS 上通过 Homebrew 包管理器来安装 Node.js 并能使我们更加便捷地开发和管理 JavaScript 网络应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值