在 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
选择构建类型¶
如果您没有修改 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、在本地更新您的源代码等等。
故障排除¶
构建错误¶
- 如果您在尝试设置开发环境时遇到构建错误,请按照以下步骤操作
将整个构建错误复制到剪贴板
将此错误粘贴到 paste.mozilla.org 的文本区域中,并将“一小时后过期”选项更改为“一周后过期”。注意:获得帮助不需要一周时间,但最好让代码片段存在的时间比预期长一点。
转到 介绍频道 并寻求构建错误的帮助。请务必发布您创建的 paste.mozilla.org 代码片段的链接!
CLOBBER 文件已更新¶
这是一个常见的错误,并且在长时间处理错误时往往会出现。如果您遇到此错误,则需要在运行 ./mach build
之前运行 ./mach clobber
。运行 ./mach clobber
将删除以前的构建工件以从头开始重新构建。如果您使用的是工件构建,则意味着下一次构建将比平时稍长一些。但是,如果您使用的是非工件/完整构建,则下一次构建将需要更长的时间才能完成。
使用非本机文件系统 (NTFS、网络驱动器等)¶
根据我们的经验,在这些混合或其他复杂环境中构建 Firefox 总是会导致意想不到的、通常是静默的并且总是难以诊断的故障。在该环境中构建 Firefox 更有可能揭示这些系统的缺陷和不足,而不是生成一个正在运行的 Web 浏览器。