下载 Fuchsia 源代码

本指南介绍如何下载 Fuchsia 源代码并在计算机上设置 Fuchsia 开发环境。

具体步骤如下:

  1. 安装必备软件包
  2. 执行预检检查
  3. 下载 Fuchsia 源代码
  4. 设置环境变量
  5. 配置防火墙规则(可选)

1. 安装必备软件包

Fuchsia 要求 curlfileunzipgit 为最新版本。git 必须为 2.31 或更高版本。

安装(或更新)以下软件包:

sudo apt install curl file git unzip

2. 执行预检检查

Fuchsia 提供了一个预检检查工具 (ffx platform preflight),该工具会检查您的机器,并告知您可能影响在机器上从源代码构建 Fuchsia 的任何问题。

运行以下命令:

curl -sO https://storage.googleapis.com/fuchsia-ffx/ffx-linux-x64 && chmod +x ffx-linux-x64 && ./ffx-linux-x64 platform preflight

3. 下载 Fuchsia 源代码

Fuchsia 提供了一个引导脚本,用于创建一个名为 fuchsia 的目录并在该目录中下载 Fuchsia 源代码。

下载 Fuchsia 源代码需要机器上有大约 2 GB 的可用空间。稍后构建 Fuchsia 时,您还需要另外 80 到 90 GB 的空间(具体取决于您的 build 配置)。此外,下载过程会使用大量内存。建议在此期间关闭非关键进程。

如需下载 Fuchsia 源代码,请执行以下操作:

  1. 选择用于下载 Fuchsia 源代码的目录,例如:

    cd $HOME
    
  2. 运行引导加载程序脚本:

    curl -s "https://fuchsia.googlesource.com/fuchsia/+/HEAD/scripts/bootstrap?format=TEXT" | base64 --decode | bash
    

    此脚本会创建 fuchsia 目录并下载源代码。

    如果您在引导过程中看到 Invalid authentication credentials 错误,请参阅身份验证错误以获取帮助。

    如果您的互联网连接速度较慢且出现超时问题,您可能需要直接下载引导脚本,并增加 -fetch-packages-timeout-hook-timeout 的值。这些超时时间以分钟为单位,表示软件包下载超时时间为 2 小时。(下载 CIPD 软件包时,-hook-timeout 值将乘以 5。)

4. 设置环境变量

Fuchsia 建议您更新 shell 配置文件以执行以下操作:

  • .jiri_root/bin 目录添加到 PATH 中。

    Fuchsia 源代码中的 .jiri_root/bin 目录包含对 Fuchsia 工作流至关重要的 jirifx 工具。Fuchsia 使用 jiri 工具管理 Fuchsia 项目中的代码库,fx 工具则有助于配置、构建、运行和调试 Fuchsia。Fuchsia 工具链要求 PATH 中提供 jiri

  • 获取 scripts/fx-env.sh 文件的源代码。

    虽然这不是必需的,但提取 fx-env.sh 脚本可在终端中启用许多实用的 Shell 函数。例如,它会创建 FUCHSIA_DIR 环境变量,并提供 fd 命令以便在目录中导航并使用自动补全功能。(如需了解详情,请参阅 fx-env.sh 中的注释。)

如需更新 shell 配置文件以配置 Fuchsia 的环境变量,请执行以下操作:

  1. 使用文本编辑器打开 ~/.bash_profile 文件(在以下示例中,我们使用 Nano 文本编辑器):

    nano ~/.bash_profile
    
  2. 将以下代码行添加到 ~/.bash_profile 文件中:

    export PATH=~/fuchsia/.jiri_root/bin:$PATH
    source ~/fuchsia/scripts/fx-env.sh
    
  3. 保存文件并退出文本编辑器。

  4. 如需更新环境变量,请运行以下命令:

    source ~/.bash_profile
    
  5. 验证您的环境设置:

    1. 前往 fuchsia 目录,例如:

      cd ~/fuchsia
      
    2. 验证您能否顺利运行以下命令:

      jiri help
      
      fx help
      

5. 配置防火墙规则(可选)

运行以下命令可允许在宿主机上处理特定于 Fuchsia 的流量:

fx setup-ufw

此脚本需要 sudo(要求输入密码)设置相应的防火墙规则。(如需详细了解此脚本,请参阅 setup-ufw。)

后续步骤

如需构建您的第一个 Fuchsia 系统映像,请参阅配置和构建 Fuchsia

附录

身份验证错误

如果您在引导过程中看到 Invalid authentication credentials 错误,则您的 ~/.gitcookies 文件可能包含 googlesource.com 中某些代码库中的 Cookie,而引导脚本希望以匿名方式检出这些 Cookie。

如需解决此错误,请执行以下某项操作:

  • 按照屏幕上的说明获取指定代码库的密码。
  • .gitcookies 文件中删除违规 Cookie。

无需更新 PATH 即可在 Fuchsia 上工作

以下部分提供了设置环境变量部分的替代方法:

将该工具复制到您的二进制目录

如果您不想更新环境变量,但希望 jiri 在任何目录中运行,请将 jiri 工具复制到 ~/bin 目录,例如:

cp ~/fuchsia/.jiri_root/bin/jiri ~/bin

不过,您必须拥有对 ~/bin 目录的写入权限,而无需 sudo。如果您不执行此操作,jiri 将无法保持最新状态。

同样,如果您想使用 fx 工具而不更新环境变量,请在 ~/bin 目录中提供 fx 工具的符号链接,例如:

ln -s ~/fuchsia/scripts/fx ~/bin

或者,直接使用其路径运行 fx 工具,例如:

./scripts/fx help

无论是哪种情况,您都需要在 PATH 中添加 jiri