brew@homebrew@linux通用包管理工具linuxbrew
文章目录
- linux上的brew快速指南
- abstract
- 创建linuxbrew用户🎈
- 安全性
- 方案1
- 方案2
- 配置效果检查
- 工作目录问题
- 创建root用户可用的brew函数(bw)
- 详解
- 安装前的准备(重要)
- 安装必要依赖
- Ubuntu / Debian:
- CentOS / RHEL / Fedora:
- 官方推荐安装方式🎈
- 安装后配置环境变量
- 验证安装
- 其他
- 安装路径
- 设置国内镜像源(可选,加速下载)
- 中科大源
- 清华源
- 卸载 Homebrew
- FAQ常见问题解决
- Q1: `brew command not found`
- Q2: 安装时提示权限错误
- Q3: 编译失败或缺少依赖
linux上的brew快速指南
abstract
macOS(或 Linux)缺失的软件包的管理器 — Homebrew
Homebrew — The Missing Package Manager for macOS (or Linux)
Homebrew on Linux — Homebrew Documentation
本文主要在网络较好的服务器行试验并记录(国外服务器),国内服务器可能需要解决额外的换源或网络问题
理想网络下安装brew的命令就1条,顶多注意使用非root用户(本文介绍快速创建非root用户以及安全防护的方案)以及shell配置文件中环境变量的添加
根据提供的 Homebrew on Linux 文档,以下是安装 Homebrew 的最佳实践:
-
遵循官方推荐安装方式:始终使用 Homebrew 官网首页提供的安装脚本来进行安装。这是获得最佳、受支持体验的唯一推荐方法。
-
使用默认安装前缀:安装脚本会将 Homebrew 安装到
/home/linuxbrew/.linuxbrew
目录(可能需要sudo
权限)。强烈建议不要更改此默认路径。- 原因:使用默认前缀可以最大限度地利用预编译的二进制包(称为 “bottles”),这能显著加快安装速度并提高稳定性。
- 警告:如果安装在其他位置(如个人家目录),绝大多数软件包都需要从源码编译,这会非常缓慢、耗能,且容易出错,官方对此不提供支持。在此情况下遇到问题,即使看似无关,提交的 Issue 也会被直接关闭。
-
为无管理员权限的用户准备:如果你没有管理员 (
sudo
) 权限,可以请求系统管理员创建一个名为linuxbrew
的角色账户,并将其家目录设置为/home/linuxbrew
。这样你仍然可以受益于预编译的二进制包。 -
安装系统依赖:在运行 Homebrew 安装脚本前,确保系统已安装必要的构建工具。根据你的 Linux 发行版运行相应命令:
- Debian 或 Ubuntu:
sudo apt-get install build-essential procps curl file git
- Fedora:
sudo dnf group install development-tools
和sudo dnf install procps-ng curl file
- CentOS Stream 或 RHEL:
sudo dnf group install 'Development Tools'
和sudo dnf install procps-ng curl file
- Arch Linux:
sudo pacman -S base-devel procps-ng curl file git
- Debian 或 Ubuntu:
-
配置 Shell 环境:安装完成后,务必按照安装脚本输出的 “Next steps” 指令,将 Homebrew 添加到你的
PATH
环境变量中。按照命令行(最新版请到brew首页查看)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
但是,更具体的,如果当前用户是root,运行上述命令会被拒绝安装(root下安装是高风险的)
现在假设你创建了
linuxbrew
专用的非root用户来安全安装brew,则命令行可以具体为sudo -u linuxbrew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
这里使用
sudo -u linuxbrew
来指明使用非root用户linuxbrew来运行安装脚本结束后可以看看安装目录
#( 09/14/25@10:48AM )( root@s2 ):~ls /home/linuxbrew/.linuxbrew bin Caskroom Cellar etc Frameworks Homebrew include lib opt sbin share var
通常需要将以下命令添加到你的 shell 配置文件(如
~/.bashrc
或~/.zshrc
)中:test -d ~/.linuxbrew && eval "$(~/.linuxbrew/bin/brew shellenv)" test -d /home/linuxbrew/.linuxbrew && eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >> ~/.bashrc echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >> ~/.zshrc eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
然后重新加载配置文件(例如
source ~/.bashrc
)或重启终端。 -
验证安装:完成上述步骤后,可以通过安装一个测试包来验证 Homebrew 是否正常工作:
brew install hello
首次在较旧的 Linux 发行版上安装软件包时,Homebrew 可能会自动为你安装新版的
glibc
和gcc
。 -
使用
brew doctor
:如果遇到问题,运行brew doctor
命令可以诊断并提示常见的配置问题。 -
平台注意事项:
- ARM32 (如树莓派):可以运行,但属于 Tier 3 支持,因为没有预编译包,所有软件都需要从源码编译。可能需要自行通过系统包管理器或
rbenv
安装 Ruby。 - 32-bit x86: 完全不支持。
- WSL 1: 属于 Tier 3 支持,已知存在各种问题,强烈建议升级到 WSL 2。
- ARM32 (如树莓派):可以运行,但属于 Tier 3 支持,因为没有预编译包,所有软件都需要从源码编译。可能需要自行通过系统包管理器或
核心原则:为了获得最佳体验,严格遵循官方默认设置,特别是安装路径。任何偏离都可能导致性能下降和失去官方支持。
创建linuxbrew用户🎈
username='linuxbrew' #根据需要更改要操作的用户名(homebrew,linuxbrew)
sudo useradd -m -s /bin/bash $username # 配置改用户默认使用bash
passwd $username
usermod -aG sudo $username# 1. 创建一个包含新规则的临时文件
echo "$username ALL=(ALL) NOPASSWD: ALL" > /tmp/new_sudo_rule# 2. 使用 visudo 验证临时文件的语法
if visudo -c -f /tmp/new_sudo_rule; thenecho "语法正确,正在合并..."# 3. 将验证通过的规则追加到 /etc/sudoers.d/ 目录下的一个新文件中sudo install -m 440 /tmp/new_sudo_rule /etc/sudoers.d/alice_nopasswdecho "✅ 用户 alice 已被授予无密码 sudo 权限。"
elseecho "❌ 语法错误!规则未被应用。"rm /tmp/new_sudo_ruleexit 1
fi# 4. 清理临时文件
rm /tmp/new_sudo_rule
安全性
为了提高安全性,如果使用linuxbrew
这个用户名,可以禁止此专用用户(非普通用户使用的用户)的一些功能,比如禁止从远程登录(ssh)
或者取一个默认名以外的用户名比如不用linuxbrew
而是用其他名字比如bwuser
方案1
修改用户的 shell 为 /usr/sbin/nologin
或 /bin/false
这将阻止该用户通过 SSH 或任何交互式终端登录。这比较严格,可能会影响自己的使用
方案2
也可以仅从ssh上禁用特定用户的登录,即使用DenyUsers <username>...
指令,可以指定1个或多个需要禁用ssh登录到用户名
注意添加到位置不是随意就可以,尤其是不能添加到任何Match块下方,放到其上方一般可以
DenyUsers linuxbrew
通常,sshd配置文件位于/etc/ssh/sshd_config
建议使用编辑器编辑(比如vim),比使用echo
追加到尾部要更加可靠(而且直接追加还可能和已有的DenyUsers指令冲突,导致多次出现,配置不够集中和混乱)
#echo "DenyUsers linuxbrew" | sudo tee -a /etc/ssh/sshd_config #不建议使用此方案
sudo sed -i '/^#*Match /i\DenyUsers linuxbrew' /etc/ssh/sshd_config #如果确认原文件不存在DenyUsers语句,可以尝试此方案
sudo systemctl restart sshd
这会在配置文件中添加禁用linuxbrew
的ssh登录的行到末尾,然后重启sshd服务
配置效果检查
先尝试用linuxbrew
角色登录,看是否出现Permission denied, please try again.
的提示
如果是,则说明配置生效;
也可以观察ssh的日志
sudo tail -f /var/log/auth.log
然后重新尝试用linuxbrew
登录,日志中会出现相关的登录尝试记录(这里可能包括一些肉机尝试爆破的登录尝试,我们主要关心被测试的用户名或者登录ip,ip可以通过iP地址查询–手机号码查询归属地 | 邮政编码查询 | iP地址归属地查询 | 身份证号码验证在线查询网等网站查询)
工作目录问题
运行brew时,brew需要对当前工作目录具有读权限,如果惯用root用户的用户,需要注意当前目录的跳转
例如从root家目录切换用户时,使用su - username
Error: The current working directory must be readable to linuxbrew to run brew.
创建root用户可用的brew函数(bw)
由于brew的严格限制,对于习惯使用root的用户,可以通过以下函数调用来简化调用brew的过程
已ubuntu系统为例
其内部先切换当前工作目录到brew可用的目录,然后使用sudo -u linuxbrew
借用非root用户linuxbrew
(可能是你自定义的其他用户,这里使用本文默认创建的名字homebrew) 然后指定brew
可执行文件(使用绝对路径会更加可靠,或者确保将brew添加到可以直接调用的目录中,比如/usr/bin/brew
)
最后执行完毕后,会尝试回到原工作目录下
可以个函数取名为bw
或其他名字
brew() {local ORIG_DIR="$PWD"echo "[INFO] Executing as user 'linuxbrew' in /home/linuxbrew: brew $*"cd /home/linuxbrew && sudo -u linuxbrew /home/linuxbrew/.linuxbrew/bin/brew "$@"local EXIT_CODE=$?cd "$ORIG_DIR" 2>/dev/null || echo "[WARN] Could not return to original directory: $ORIG_DIR"return $EXIT_CODE
}
>> ~/.zshrc << EOF
# brew command for root
brew() {local ORIG_DIR="$PWD"echo "[INFO] Executing as user 'linuxbrew' in /home/linuxbrew: brew $*"cd /home/linuxbrew && sudo -u linuxbrew /home/linuxbrew/.linuxbrew/bin/brew "$@"local EXIT_CODE=$?cd "$ORIG_DIR" 2>/dev/null || echo "[WARN] Could not return to original directory: $ORIG_DIR"return $EXIT_CODE
}EOF
详解
安装前的准备(重要)
安装必要依赖
不同发行版需要安装不同的基础包:
Ubuntu / Debian:
sudo apt update
sudo apt install build-essential curl file git
CentOS / RHEL / Fedora:
# CentOS/RHEL 7/8/9
sudo yum groupinstall 'Development Tools'
sudo yum install curl file git# 或者 Fedora / CentOS 8+ / RHEL 8+
sudo dnf groupinstall 'Development Tools'
sudo dnf install curl file git
💡
build-essential
或Development Tools
提供了编译工具链(gcc、make 等),curl
和git
是 brew 安装和更新所必需的。
官方推荐安装方式🎈
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
⚠️ 注意:不要用
sudo
运行此脚本!Homebrew 设计为非 root 用户安装和使用。
安装后配置环境变量
安装脚本结束后,终端会提示你需要手动添加环境变量。请仔细阅读输出内容!
例如,brew安装引导会在最后提示你(专属当前运行环境(shell,常见的bash,zsh,…)的配置文件的编辑建议)
比如方面直接调用brew所需要的shell启动时自动加载的配置片段
echo >> /home/cxxu/.zshrc #不存在会创建空的同名文件,追加一个换行符
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /home/cxxu/.zshrc
#立刻激活当前shell环境
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
配套的提示内容参考
==> Next steps:
- Run these commands in your terminal to add Homebrew to your PATH:echo >> /home/cxxu/.zshrcecho 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /home/cxxu/.zshrceval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
- Install Homebrew's dependencies if you have sudo access:sudo apt-get install build-essentialFor more information, see:https://docs.brew.sh/Homebrew-on-Linux
- We recommend that you install GCC:brew install gcc
- Run brew help to get started
- Further documentation:https://docs.brew.sh
或手动添加(比如供其他用户使用)
本例中,我使用带有sudo权限的非root用户cxxu安装,安装位置是/home/linuxbrew
通常你需要将以下内容添加到你的 shell 配置文件中(如 ~/.bashrc
、~/.zshrc
):
先登录到指定用户shell会话,然后执行添加下面的语句
# 对于大多数 Linux 系统(x86_64)
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"# 如果你安装在用户目录下(例如 ~/.linuxbrew),路径可能是:
# eval "$(/home/你的用户名/.linuxbrew/bin/brew shellenv)"
例如你使用bash和zsh,则:
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.bashrc
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.zshrc
#source ~/.bashrc 或 source ~/.zshrc
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
如果你用的是
zsh
,请替换为~/.zshrc
验证安装
brew --version
如果输出版本号(如 Homebrew 4.x.x
),说明安装成功。
其他
安装路径
- 默认安装在
/home/linuxbrew/.linuxbrew
(如果/home/linuxbrew
不存在且你有 sudo 权限) - 否则安装在
~/.linuxbrew
如果你想自定义安装路径,可以在运行安装脚本前设置环境变量:
export HOMEBREW_PREFIX="/your/custom/path"
设置国内镜像源(可选,加速下载)
中科大源
# 设置 brew 仓库源
git -C "$(brew --repo)" remote set-url origin https://mirrors.ustc.edu.cn/brew.git# 设置 core 核心仓库
git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git# 如果使用 bottles(预编译包);将配置写入到shell(比如~/.bashrc)
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bashrc
source ~/.bashrc# 更新生效
brew update
🇨🇳 国内用户强烈建议设置镜像,否则从 GitHub 下载可能极慢或失败。
清华源
homebrew | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
注意文档中分为3个部分,三个小节适用于不同的情况
卸载 Homebrew
如果你需要卸载:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
然后手动删除环境变量配置。
FAQ常见问题解决
Q1: brew command not found
- 检查是否添加了
eval "$(...)"
到 shell 配置文件 - 执行
source ~/.bashrc
(或对应 shell 文件) - 重启终端
- 尝试绝对路径访问
brew
Q2: 安装时提示权限错误
- 确保没有用
sudo
- 检查
/home/linuxbrew/.linuxbrew
或~/.linuxbrew
是否属于当前用户
Q3: 编译失败或缺少依赖
- 确保已安装
build-essential
/Development Tools
- 运行
brew doctor
诊断问题