brew list出现未自行安装的软件包是什么原因?如何查询对应依赖关系?
非自行安装软件包的来源
你看到的未主动安装的包均为git、node、sqlite、less四个软件的依赖项,属于Homebrew安装目标软件时自动附带安装的间接包:所有软件运行都需要依赖底层公共库,Homebrew会在安装目标软件时自动检测并安装所有缺失的必要依赖,不需要用户手动操作。比如node运行需要依赖libuv、openssl@1.1、c-ares,git运行需要依赖gettext、pcre2、ca-certificates,这些都会在你安装目标软件时自动安装到系统中。
查询依赖对应关系的方法
你可以通过以下brew命令查询依赖的对应关系:
- 查询某款主动安装的软件依赖了哪些包:执行
brew deps 软件名,例如查询node的所有依赖可运行brew deps node - 查询某款未知的间接包被哪些已安装软件依赖:执行
brew uses --installed 包名,例如查询brotli的依赖方可运行brew uses --installed brotli - 一键区分主动安装包和间接依赖包:执行
brew leaves,输出的结果就是你所有主动安装的软件,不在该列表内的包均为自动安装的依赖项。
仅更新主动安装软件的实现方法
Homebrew默认的brew upgrade会更新所有已安装的包(包含主动安装的软件和所有依赖),如果仅需要更新你主动安装的软件,执行以下命令即可:
brew upgrade `brew leaves`
该命令会先通过brew leaves拉取你主动安装的所有软件列表,再仅对列表内的软件执行升级操作。如果某个软件的新版本要求更高版本的依赖,升级该软件时Homebrew会自动按照规则升级对应的依赖,不需要你手动处理依赖升级逻辑,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者Inigo
相关产品推荐
相关产品推荐

