在 Linux 上构建 Firefox

本文档将帮助您在自己的计算机上构建 Firefox。设置可能需要一段时间 - 我们需要下载大量数据!即使在快速连接下,这可能也需要 10 到 15 分钟的工作时间,分布在一两个小时内。

需求

  • **内存:**至少 4GB RAM,建议 8GB 或以上。

  • **磁盘空间:**至少 30GB 的可用磁盘空间。

  • **操作系统:**64 位 Linux 安装。强烈建议您使用受支持的发行版;请参阅 受支持的构建主机。我们还建议您的系统完全是最新的。

注意

某些 Linux 发行版比其他发行版获得更好的支持。Mozilla 维护 Ubuntu 的引导代码,但其他发行版由社区管理(感谢!)。您使用的发行版越冷门,就越有可能需要解决意想不到的问题。

1. 系统准备

1.1 安装 Python

要构建 Firefox,必须安装 3.6 或更高版本的 Python。Python 2 不再需要构建 Firefox,尽管它仍然需要运行某些类型的测试。此外,您可能还需要 Python 开发文件才能安装某些 pip 包。

您应该能够使用系统包管理器安装 Python

  • 对于基于 Debian 的 Linux(例如 Ubuntu):sudo apt-get install curl python3 python3-pip

  • 对于 Fedora Linux:sudo dnf install python3 python3-pip

如果您需要包管理器没有的 Python 版本(例如:提供的 Python 3 太旧,或者您想要 Python 2 但它不可用),那么您可以使用 pyenv,假设您的系统受支持。

1.2 安装 Mercurial

Mozilla 的源代码托管在 Mercurial 存储库中。您将需要 Mercurial 来下载和更新代码。

请注意,如果您希望使用发行版打包的 Mercurial 版本,则可以跳过此部分。但是,请记住,发行版打包的 Mercurial 可能已过时,因此速度较慢且支持较少。

python3 -m pip install --user mercurial

您可以通过运行以下命令来测试 Mercurial 是否已安装

hg version

注意

如果您的 shell 显示 command not found: hg,则 Python 的包未在 $PATH 中找到。您可以通过执行以下操作并重新启动 shell 来解决此问题

# If you're using zsh
echo 'export PATH="'"$(python3 -m site --user-base)"'/bin:$PATH"' >> ~/.zshenv

# If you're using bash
echo 'export PATH="'"$(python3 -m site --user-base)"'/bin:$PATH"' >> ~/.bashrc

# If you're using a different shell, follow its documentation to see
# how to configure your PATH. Ensure that `$(python3 -m site --user-base)/bin`
# is prepended.

2. 引导 Firefox 源代码副本

现在您的系统已准备就绪,我们可以下载源代码并让 Firefox 自动下载它所需的其他依赖项。以下命令将下载大量数据(多年的 Firefox 历史记录!),然后引导您完成交互式设置过程。

curl https://hg.mozilla.org/mozilla-central/raw-file/default/python/mozboot/bin/bootstrap.py -O

# To use Git as your VCS
python3 bootstrap.py --vcs=git

# To use Mercurial as your VCS
python3 bootstrap.py

注意

要使用 git,您可以通过使用 vcs 参数运行引导脚本以“git”形式获取源代码

python3 bootstrap.py --vcs=git

这在幕后使用了 Git Cinnabar

选择构建类型

如果您没有修改 Firefox 后端,则选择其中一个 工件模式 选项。如果您正在为 Android 构建 Firefox,则还应该看到 GeckoView 贡献者指南

3. 构建

现在您的系统已引导,您应该能够构建!

cd mozilla-unified
hg up -C central
./mach build

🎉 恭喜!您已经构建了自己的 Firefox!在成功构建后,您应该在终端中看到以下消息

Your build was successful!
To take your build for a test drive, run: |mach run|
For more information on what to do now, see https://firefox-source-docs.mozilla.ac.cn/setup/contributing_code.html

您现在可以使用 ./mach run 命令运行您本地构建的 Firefox!

如果您的构建失败,请参考 故障排除部分 中的步骤。

现在开始有趣的部分

是时候开始黑客攻击了!您应该加入我们在 Matrix 上,在 介绍频道 中打个招呼,并 找到一个要开始处理的错误。请参阅 Firefox 贡献者快速参考,了解如何测试您的更改、将补丁发送到 Mozilla、在本地更新您的源代码等等。

故障排除

构建错误

如果您在尝试设置开发环境时遇到构建错误,请按照以下步骤操作
  1. 将整个构建错误复制到剪贴板

  2. 将此错误粘贴到 paste.mozilla.org 的文本区域中,并将“一小时后过期”选项更改为“一周后过期”。注意:获得帮助不需要一周时间,但最好让代码片段存在的时间比预期长一点。

  3. 转到 介绍频道 并寻求构建错误的帮助。请务必发布您创建的 paste.mozilla.org 代码片段的链接!

CLOBBER 文件已更新

这是一个常见的错误,并且在长时间处理错误时往往会出现。如果您遇到此错误,则需要在运行 ./mach build 之前运行 ./mach clobber。运行 ./mach clobber 将删除以前的构建工件以从头开始重新构建。如果您使用的是工件构建,则意味着下一次构建将比平时稍长一些。但是,如果您使用的是非工件/完整构建,则下一次构建将需要更长的时间才能完成。

使用非本机文件系统 (NTFS、网络驱动器等)

根据我们的经验,在这些混合或其他复杂环境中构建 Firefox 总是会导致意想不到的、通常是静默的并且总是难以诊断的故障。在该环境中构建 Firefox 更有可能揭示这些系统的缺陷和不足,而不是生成一个正在运行的 Web 浏览器。