命令行工具
chromebrew/chromebrew avatar
chromebrew/chromebrew

Chromebrew:让 Chrome OS 真正变成 Linux 发行版的包管理器

该项目围绕「Package manager for Chrome OS. The only missing pieces to use them as full-featured Linux distro were gcc and make with their dependencies.」构建,适用于实际场景的开源实践,提供可复用的工具链与集成方式。

2,516 个 Star421 个 ForkRubyGPL-3.0

秒懂

它是什么?
Chromebrew 为 Chrome OS 提供 gcc、make 及数千个软件包,让 Chromebook 在开发者模式下具备完整 Linux 环境。本文基于其 README 与仓库信息,分析其机制、安装流程、适用边界与替代方案。
适合谁用?
Chromebrew 适合那些已经启用开发者模式、愿意接受 Chrome OS 安全折衷的 Chromebook 用户,尤其是需要在 Chrome OS 上运行 CLI 工具或编译软件的人。不适合仅使用稳定版 Chrome OS、依赖 crosh 安装或需要完整图形界面支持的用户,因为 README 明确警告 beta/dev/Canary 频道不支持,且 M117 后 crosh 安装失效。
能商用吗?
可以,但有条件。GPL-3.0 是 copyleft 许可证:如果你分发包含它的软件,就必须以同一许可证公开该软件的源代码。只在内部运行、不对外分发,则不会触发这项义务。
还在维护吗?
在维护。仓库最近一次提交在 1 天前。
用什么语言写的?
主要是 Ruby(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。

开源项目深度解析

Chrome OS 缺什么,Chromebrew 补什么

Chrome OS 基于 Linux 内核,但默认不提供完整的用户态工具链。Chromebrew 的定位很直接:它声称解决了 Chromebook 作为全功能 Linux 发行版的最后一块短板,也就是 gcc 和 make 及其依赖。换句话说,没有 Chromebrew,你在 Chrome OS 上无法编译任何 C 程序,也无法运行大多数依赖编译器的开发工作流。它面向的是开发者模式下的 Chromebook 用户,这些人需要在自己的设备上安装软件,但又不想刷机换成 Ubuntu 或 GalliumOS。Chromebrew 不是虚拟机,也不是容器,它直接作用于 Chrome OS 的文件系统,把包管理能力带进这个原本封闭的环境。

从内核到 crew:包管理的实际机制

Chromebrew 是一个用 Ruby 编写的命令行工具,核心命令是 crew。它不依赖 apt 或 pacman,而是自己管理软件包。根据 README,软件包定义存放在仓库的 packages 目录中,每个包包含构建脚本和元数据。crew install 会先解析依赖,然后从源码构建或下载预编译的二进制包,安装到 /usr/local 下。值得注意的一个细节是,Chromebrew 默认会在安装后清理 BREW_DIR,也就是 /usr/local/tmp/crew,除非你传入 -k 或 --keep 参数。这意味着默认情况下,你无法保留下载的源码或二进制文件,这可能会影响后续的离线安装或调试。此外,crew 提供了 22 个命令,涵盖构建、查询、升级和卸载,其中 whatprovides 支持用正则搜索包含特定文件的包,这在排查文件冲突时很有用。

安装前提:开发者模式与 VT-2 终端

安装 Chromebrew 并非一条命令那么简单。你需要先进入开发者模式,这本身会降低设备安全性。README 特别警告,开发者模式若配置不当是不安全的,并建议设置密码和启用签名启动:sudo chromeos-setdevpasswd 和 sudo crossystem dev_boot_signed_only=1。安装过程要求在 VT-2 终端会话中操作,也就是按 Ctrl+Alt+右箭头,然后用 chronos 用户登录。安装命令是一行脚本:bash <(curl -L git.io/vddgY) && . ~/.bashrc。这条命令从短链接下载并执行安装脚本,然后刷新 bash 配置。但请注意,README 明确说,在 Chrome OS M117 之后,由于安全变更,Chromebrew 安装器无法在 crosh 中运行,所以你必须使用 VT-2。这实际上提高了操作门槛,因为许多用户不熟悉 VT-2 终端。

架构支持:x86_64 与 armv7l 为主,i686 受限

Chromebrew 支持四种架构,但支持程度不同。x86_64 和 armv7l 是完整支持的,而 i686 只有有限支持,因为 Google 已停止对该架构的支持,README 说明 i686 无法再支持 GUI 应用,只能继续维护 CLI 程序。aarch64 的情况更特殊:即使你的 Chromebook 是 aarch64 用户空间,Chromebrew 目前也只提供 armv7l 的软件包,并指向 issue #8044 说明细节。这意味着如果你有一台较新的 ARM Chromebook,你实际上运行的是 32 位 ARM 包,性能可能不如原生 64 位。这个限制对现代设备影响不小,因为大多数新 Chromebook 都采用 aarch64。如果你需要原生 64 位 ARM 支持,Chromebrew 目前不是合适的选择。

频道警告:稳定版之外都是雷区

Chromebrew 明确不支持 beta、dev 和 Canary 频道,并警告在这些频道上使用会导致严重问题。它引用了 issue #2890 和 FAQ 作为依据。这意味着你只能使用稳定版 Chrome OS,而稳定版的更新节奏较慢,可能错过新特性。这个限制源于 Chromebrew 对系统文件的修改,而测试频道更新频繁,可能破坏包的完整性。对于想尝鲜的用户来说,这是一个硬性约束。如果你已经在测试频道上,要么降级到稳定版,要么放弃 Chromebrew。此外,README 还提到,M117 之后 crosh 无法运行安装器,这进一步限制了安装方式,也暗示未来 Chrome OS 安全更新可能继续收窄 Chromebrew 的生存空间。

与 Linux 发行版的本质差异:无根文件系统覆盖

Chromebrew 的替代方案不是另一个包管理器,而是直接安装完整的 Linux 发行版,比如通过 crouton 或 Crostini。Crostini 是 Chrome OS 内置的 Linux 虚拟机,它运行一个完整的 Debian 容器,有独立的包管理器和完整的软件源。与 Chromebrew 不同,Crostini 不需要开发者模式,也不影响系统安全。Chromebrew 则直接修改 /usr/local,与 Chrome OS 系统文件共存,这带来了冲突风险。关键差异在于隔离性:Crostini 提供沙箱,Chromebrew 没有。如果你需要编译工具链,Crostini 同样可以安装 gcc 和 make,而且有更大的软件库。但 Chromebrew 的优势在于它更接近原生,性能开销更小,且不依赖虚拟化。选择哪种方式,取决于你是更看重安全隔离还是原生性能。

维护成本与许可证:GPL-3.0 的继承风险

Chromebrew 采用 GPL-3.0 许可证,这意味着如果你分发修改后的 Chromebrew 源码,必须同样以 GPL-3.0 发布。它还嵌入了 docopt.rb,该文件保留 MIT 许可证,所以你在贡献代码时需注意两种许可证的边界。维护方面,仓库的最近一次推送是 2017 年 1 月,但 README 中的版权声明更新到 2025 年,说明项目仍在活跃维护,只是发布节奏不快。最近版本 0.4.1 主要修正版本号,v0.4 增加了 ARM 支持。升级命令是 crew update 和 crew upgrade,分别更新 crew 本身和软件包。由于 Chromebrew 依赖 Chrome OS 的系统库,每次 Chrome OS 大版本更新都可能影响包的兼容性,你需要定期运行 crew upgrade 来保持环境稳定。对于企业用户,GPL-3.0 可能带来合规负担,但个人使用无碍。

编辑结论

Chromebrew 适合那些已经启用开发者模式、愿意接受 Chrome OS 安全折衷的 Chromebook 用户,尤其是需要在 Chrome OS 上运行 CLI 工具或编译软件的人。不适合仅使用稳定版 Chrome OS、依赖 crosh 安装或需要完整图形界面支持的用户,因为 README 明确警告 beta/dev/Canary 频道不支持,且 M117 后 crosh 安装失效。在采用前,务必确认你的设备架构(x86_64、i686、armv7l 或 aarch64),并检查目标软件包是否在 packages 目录中提供,同时准备好通过 VT-2 终端执行安装。最终判断:Chromebrew 是填补 Chrome OS 缺失编译工具链的务实方案,但其依赖开发者模式的安全妥协和频道限制,决定了它只适合技术用户,而非普通消费者。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记