Homebrew 是一个新型的,Ruby 编写的 macOS 包管理器。但是 Homebrew 的一些设计哲学使得它难以在多用户的情况下共同使用,并且存在诸多安全隐患。比如,Homebrew 会将 /usr/local 下的许多目录的所有者设定为当前执行用户,并禁止用户使用 root 权限安装包。这些设计哲学,使得 Homebrew 难以成为一个系统级的包管理器。但 MacPorts 和 Fink 相对难以令人满意,因此我们需要让 Homebrew 像其它包管理器一样,使用 root 安装包并不破坏原有的系统权限。

Homebrew 代码研读

通过监控进程我们可以发现,判定是否 root 权限的代码并不在 Ruby 中。而在 Shell 脚本里。
/usr/local/Homebrew/Library/Homebrew/brew.sh 中,我们发现了相关代码: 继续阅读 »