Homebrew (brew)

简介 Homebrew 是 macOS 上最流行的包管理器,用于安装和管理命令行工具及应用程序。 brew 会把软件安装在用户主目录里,不需要 sudo brew(formula)装的主要是命令行工具 brew cask 装的大多是有 GUI 界面的 app 以及驱动 Formula 与 Cask 的区别 两者的本质区别是安装方式,不是有没有 GUI: formula:需要从源码编译或解压二进制的工具,brew 完全管理其生命周期 cask:处理 .dmg、.pkg、.zip(含 .app)这类"分发包",安装时需要复制到 /Applications、注册 UTI、处理系统权限等,安装/卸载逻辑与 formula 完全不同 两套安装逻辑分开,互不干扰,也便于用户区分"这是个 CLI 工具"还是"这是个桌面 App"。 实际使用中的经验规律: 类型 典型情况 例外 formula(不加 --cask) 命令行工具、库 极少数带 GUI cask(--cask) GUI 桌面 App google-cloud-sdk、android-platform-tools 等纯 CLI 官方说法是:cask 用于安装"macOS native apps and large binaries",重点是分发形式(预编译的大型安装包),而不是有没有界面。 Homebrew 术语表(酿酒比喻) Homebrew 整个项目名叫"家酿啤酒",术语全部来自酿酒场景: 术语 酿酒含义 对应概念 formula 配方 软件的安装脚本 keg 酒桶 安装后的目录(/usr/local/Cellar/<pkg>) cellar 酒窖 所有已安装包的存放处 tap 水龙头(接上一个新酒桶) 接入一个新的软件仓库 cask 大木桶(装整瓶酒) 完整的 macOS App bottle 预先装好的瓶子 预编译的二进制包 安装与卸载 brew # 安装 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # 卸载 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh)" 常用命令 # 搜索 brew search foo # 安装 brew install ansible brew install --cask obsidian # 卸载 brew uninstall packageName # 列出已安装的包 brew list # 查看所有需要更新的包 brew outdated # 更新某一个包 brew upgrade package0 # 更新所有包,相当于 Arch Linux 的 pacman -Syu # brew upgrade 会自动先执行 brew update 刷新 formula 列表,再升级所有包 brew upgrade # 配置信息 brew config # 检查系统问题 brew doctor 不认识的包怎么查 brew upgrade 或 brew outdated 里经常出现一些不认识的包名,多数是别的软件的依赖,被顺带装上。按下面的顺序查: ...

Created 11116-06-11 · Updated 22226-09-22 · 3 min · 429 words · -

System Libraries: 跨平台底层库速查

包管理器升级时,经常会看到一些不认识的底层库(harfbuzz、giflib、little-cms2 等)。它们通常不是自己主动装的,而是被某个上层软件依赖,顺带装上。 这篇文章记录这些底层库是什么、做什么、各平台叫什么包名。库本身是跨平台的,macOS(Homebrew)、Linux(apt / pacman / dnf)上都有,因此不按平台拆分。 遇到不认识的包时,怎么在 macOS 上查依赖关系,见 Homebrew (brew)。 索引 库 功能 常见使用方 harfbuzz OpenType 文本整形(text shaping) Pango、Qt、Firefox、Chromium、LibreOffice、OpenJDK freetype 字体解析与字形光栅化 Linux 桌面、Android、OpenJDK、各类游戏引擎 giflib GIF 图片编解码 OpenJDK、ImageMagick libpng PNG 图片编解码 几乎所有图形软件 jpeg-turbo JPEG 编解码(libjpeg 的 SIMD 加速实现) OpenJDK、浏览器、ImageMagick little-cms2 色彩管理(ICC profile) OpenJDK、GIMP、Ghostscript 包名对照 各平台的包名不完全一致,Linux 发行版通常把运行时库和开发头文件拆成两个包,编译其他软件时需要装带 dev / devel 的那个。 库 Homebrew Debian / Ubuntu(开发包) Arch Fedora / RHEL(开发包) harfbuzz harfbuzz libharfbuzz-dev harfbuzz harfbuzz-devel freetype freetype libfreetype-dev freetype2 freetype-devel giflib giflib libgif-dev giflib giflib-devel libpng libpng libpng-dev libpng libpng-devel jpeg-turbo jpeg-turbo libjpeg-dev libjpeg-turbo libjpeg-turbo-devel little-cms2 little-cms2 liblcms2-dev lcms2 lcms2-devel Arch 和 Homebrew 没有 dev / devel 拆分,头文件和库在同一个包里。 ...

Created 22226-09-22 · Updated 22226-09-22 · 2 min · 251 words · -