From c7a485e07771634b45b04b5bed8984f72e3547c3 Mon Sep 17 00:00:00 2001
From: Xyct <87l46110@gmail.com>
Date: Fri, 26 Aug 2022 18:51:56 +0800
Subject: [PATCH] translate get-started/learn/intro/packages.md
---
get-started/learn/intro/packages.md | 85 ++++++++++++++++++++++++++++-
1 file changed, 82 insertions(+), 3 deletions(-)
diff --git a/get-started/learn/intro/packages.md b/get-started/learn/intro/packages.md
index d675445f..fb39ce46 100644
--- a/get-started/learn/intro/packages.md
+++ b/get-started/learn/intro/packages.md
@@ -1,4 +1,5 @@
-# Software delivery
+
+# 软件交付
<<../../_common/intro/_packages_intro.md>>
@@ -6,26 +7,40 @@
<<../../_common/intro/_packages_storing.md>>
+
+## 练习:包
+
+在之前的本系列代码练习中,虽然您可能没有意识到,但您已经体验过到设备的软件按需交付。在本练习中,您将进一步揭开它的神秘面纱,了解到包被交付和存储到 Fuchsia 设备中的过程的具体细节。
<<../_common/_restart_femu.md>>
+
+### 启动本地包服务器
+
+运行如下命令,以启动包服务器并允许模拟器加载软件包:
```posix-terminal
fx serve-updates
```
-
+
+该命令打印的输出类似如下所示。它表示服务器正在运行,并已成功将模拟器注册为目标设备:
```none {:.devsite-disable-click-to-copy}
[serve-updates] Discovery...
@@ -37,22 +52,40 @@ running and has successfully registered the emulator as a target device:
[pm auto] client count: 1
```
+
+### 检查包服务器
+
+`fx serve-updates` 命令会启动用于将包交付到目标设备的 **本地包服务器**。该服务器默认在 8083 端口上运行。
+
+在浏览器中访问 `http://localhost:8083`,会加载出一个当前包仓库中可用的包的列表的网页。列表中的每一项都是可被交付到设备的包。
+
+### 监视包加载
+
+包由 Fuchsia 设备按需解析并加载。让我们在 `spinning-square` 示例包上进行操作来稍作展示。
+
+在设备命令行中,您可以确定某个已知的包目前是否在设备上。
```posix-terminal
fx shell pkgctl pkg-status fuchsia-pkg://fuchsia.com/spinning-square-rs
@@ -63,22 +96,34 @@ Package in registered TUF repo: yes (merkle=ef65e2ed...)
Package on disk: no
```
+
+打开新终端,开始流式传输 `pkg-resolver` 的设备日志。
```posix-terminal
ffx log --filter pkg-resolver
```
+
+这里展示了从包服务器加载的包的所有实例。
+
+在设备命令行中,尝试解析包:
```posix-terminal
fx shell pkgctl resolve fuchsia-pkg://fuchsia.com/spinning-square-rs
```
+
+注意 `pkg-resolver` 的输出中增加的新行:
```none {:.devsite-disable-click-to-copy}
[pkg-resolver][pkg-resolver][I] Fetching blobs for fuchsia-pkg://devhost/spinning-square-rs: [
@@ -88,7 +133,10 @@ Notice the new lines added to the log output for `pkg-resolver`:
[pkg-resolver][pkg-resolver][I] resolved fuchsia-pkg://fuchsia.com/spinning-square-rs as fuchsia-pkg://devhost/spinning-square-rs to 21967ecc643257800b8ca14420c7f023c1ede7a76068da5faedf328f9d9d3649 with TUF
```
+
+在设备命令行中,再次在设备上查看包状态:
```posix-terminal
fx shell pkgctl pkg-status fuchsia-pkg://fuchsia.com/spinning-square-rs
@@ -99,30 +147,48 @@ Package in registered TUF repo: yes (merkle=ef65e2ed...)
Package on disk: yes (path=/pkgfs/versions/ef65e2ed...)
```
+
+Fuchsia 解析了包并按需从本地 TUF 仓库中将其加载了!
+
+### 探索包的元数据
+
+现在 `spinning-square` 包已经成功解析,接下来可以探索包内容。在解析之后,包就可以在目标设备上用它的内容地址引用。
+
+在设备命令行中,可以使用 `pkgctl get-hash` 命令来确认 `spinning-square` 的包摘要。
```posix-terminal
fx shell pkgctl get-hash fuchsia-pkg://fuchsia.com/spinning-square-rs
```
+
+该命令会返回如下的唯一包摘要:
```none {:.devsite-disable-click-to-copy}
ef65e2ed...
```
+
+使用 `pkgctl open` 命令并提供完整的包摘要,来查看包内容。
```posix-terminal
fx shell pkgctl open {{ '' }}ef65e2ed...{{ '' }}
@@ -154,17 +220,30 @@ package contents:
/data/vulkan/explicit_layer.d/VkLayer_khronos_validation.json
```
+
+这个命令列出了包的元数据和包中的每个内容 BLOB(Binary Large OBject,二进制大型对象)。其中的 `bin/` 项目对应可执行文件,`lib/`
+项目对应共享库依赖,还有后面的额外元数据和资源。
+
+## 接下来是?
+
+祝贺!您现在对 Fuchsia 的独特性和这样一个新平台的设计目标都有了更好的理解。
+
+在下一个模块中,您将了解到有关 Fuchsia 这个开源项目和用于构建与自定义系统的工具的更多知识:
Building Fuchsia
+ href="/get-started/learn/build">构建 Fuchsia