当前位置: 首页 > news >正文

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 的最佳实践:

  1. 遵循官方推荐安装方式:始终使用 Homebrew 官网首页提供的安装脚本来进行安装。这是获得最佳、受支持体验的唯一推荐方法。

  2. 使用默认安装前缀:安装脚本会将 Homebrew 安装到 /home/linuxbrew/.linuxbrew 目录(可能需要 sudo 权限)。强烈建议不要更改此默认路径

    • 原因:使用默认前缀可以最大限度地利用预编译的二进制包(称为 “bottles”),这能显著加快安装速度并提高稳定性。
    • 警告:如果安装在其他位置(如个人家目录),绝大多数软件包都需要从源码编译,这会非常缓慢、耗能,且容易出错,官方对此不提供支持。在此情况下遇到问题,即使看似无关,提交的 Issue 也会被直接关闭。
  3. 为无管理员权限的用户准备:如果你没有管理员 (sudo) 权限,可以请求系统管理员创建一个名为 linuxbrew 的角色账户,并将其家目录设置为 /home/linuxbrew。这样你仍然可以受益于预编译的二进制包。

  4. 安装系统依赖:在运行 Homebrew 安装脚本前,确保系统已安装必要的构建工具。根据你的 Linux 发行版运行相应命令:

    • Debian 或 Ubuntu: sudo apt-get install build-essential procps curl file git
    • Fedora: sudo dnf group install development-toolssudo 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
  5. 配置 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)或重启终端。

  6. 验证安装:完成上述步骤后,可以通过安装一个测试包来验证 Homebrew 是否正常工作:

    brew install hello
    

    首次在较旧的 Linux 发行版上安装软件包时,Homebrew 可能会自动为你安装新版的 glibcgcc

  7. 使用 brew doctor:如果遇到问题,运行 brew doctor 命令可以诊断并提示常见的配置问题。

  8. 平台注意事项

    • ARM32 (如树莓派):可以运行,但属于 Tier 3 支持,因为没有预编译包,所有软件都需要从源码编译。可能需要自行通过系统包管理器或 rbenv 安装 Ruby。
    • 32-bit x86: 完全不支持
    • WSL 1: 属于 Tier 3 支持,已知存在各种问题,强烈建议升级到 WSL 2

核心原则:为了获得最佳体验,严格遵循官方默认设置,特别是安装路径。任何偏离都可能导致性能下降和失去官方支持。

创建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-essentialDevelopment Tools 提供了编译工具链(gcc、make 等),curlgit 是 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 诊断问题

文章转载自:

http://5vPEHXBo.gyrdn.cn
http://vQARvCV6.gyrdn.cn
http://wAkYtt92.gyrdn.cn
http://kwQBzPab.gyrdn.cn
http://MvHREjF9.gyrdn.cn
http://QI71ql8G.gyrdn.cn
http://NMtquvEA.gyrdn.cn
http://siKiHM1k.gyrdn.cn
http://uNOvUtye.gyrdn.cn
http://6pPQur98.gyrdn.cn
http://X6RyVO7O.gyrdn.cn
http://GDWr1oAr.gyrdn.cn
http://zkpN8HHA.gyrdn.cn
http://4q3alv49.gyrdn.cn
http://oLYMTx3d.gyrdn.cn
http://Oh2WSmL8.gyrdn.cn
http://BTHap4yV.gyrdn.cn
http://sImKfSTn.gyrdn.cn
http://zxBu34jM.gyrdn.cn
http://W1trcHDo.gyrdn.cn
http://nyIqkf8s.gyrdn.cn
http://U8tfqYjK.gyrdn.cn
http://LUIEcVHF.gyrdn.cn
http://G2uo8sMN.gyrdn.cn
http://KLgBInLY.gyrdn.cn
http://qMKgD165.gyrdn.cn
http://2rXvLzHJ.gyrdn.cn
http://KGSJuUF2.gyrdn.cn
http://guz1EsM0.gyrdn.cn
http://B08gaZzR.gyrdn.cn
http://www.dtcms.com/a/384105.html

相关文章:

  • NumPy 是 Python 科学计算的基石
  • LLMs之RL之GRPO:《Magistral》的翻译与解读
  • FPGA入门-数码管静态显示
  • 【大模型】企业级应用场景概览
  • uTools 轻工具 简洁又方便
  • Can总线原理
  • Matplotlib 全面详解:从入门到高级应用
  • 爬虫获取API接口的实战指南
  • 裸机开发 时钟配置,EPIT
  • TypeScript项目中,ESLint配置支持子路径的模块导入
  • 机器视觉中的工业相机接口该如何选择?
  • Knockout.js DOM 节点清理模块详解
  • 基于Python的个性化书籍推荐管理系统【2026最新】
  • Java Collection集合框架:体系、核心与选型
  • 最长递减子序列 动态规划
  • C# --- Field and Property
  • 一次 界面无法启动的问题 的解决记录
  • 011=基于YOLO12电动车进电梯检测与警告系统(Python+PySide6界面+训练代码)
  • Antminer S19 Pro 92T矿机详细参数解析与挖矿能力分析
  • LChot100--1143. 最长公共子序列
  • Android开发-选择按钮
  • [温习C/C++]0x06 坐标系中矩形重叠类问题分析
  • 拓扑排序应用——火星词典
  • Afsim沿高程运动
  • PADS查看板子Pins数
  • Photoshop - Photoshop 创建照片晕影
  • 树形数据结构之树状基础-算法赛
  • 基于QGIS的DEM数据下载与预处理指南
  • 接口自动化概念篇
  • 酶活性随着温度变化的预测(多项式模型和单项式的模型对比)