

终止支持通知：2026 年 10 月 7 日， Amazon 将停止对的支持。 Amazon IoT Greengrass Version 1 2026 年 10 月 7 日之后，您将无法再访问这些 Amazon IoT Greengrass V1 资源。如需了解更多信息，请访问[迁移自 Amazon IoT Greengrass Version 1](https://docs.amazonaws.cn/greengrass/v2/developerguide/migrate-from-v1.html)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 安装 Amazon IoT Greengrass 核心软件
<a name="install-ggc"></a>

<a name="ggc-software-descripton"></a> Amazon IoT Greengrass Core 软件将 Amazon 功能扩展到 Amazon IoT Greengrass 核心设备，使本地设备能够根据其生成的数据进行本地操作。

Amazon IoT Greengrass 提供了几个安装 Amazon IoT Greengrass 核心软件的选项：
+ [下载并解压缩 tar.gz 文件](#download-and-extract-tarball)。
+ [运行 Greengrass 设备设置脚本](#run-device-setup-script)。
+ [从 APT 存储库安装](#ggc-package-manager)。

Amazon IoT Greengrass 还提供了运行 C Amazon IoT Greengrass ore 软件的容器化环境。
+ [Amazon IoT Greengrass 在 Docker 容器中运行](#gg-docker-support)。
+ [快速运行 Amazon IoT Greengrass](#gg-snap-support)。

 

## 下载并解压 Amazon IoT Greengrass 核心软件包
<a name="download-and-extract-tarball"></a>

为您的平台选择 Amazon IoT Greengrass 核心软件，将其作为 tar.gz 文件下载并提取到您的设备上。您可以下载软件的最新版本。有关更多信息，请参阅 [Amazon IoT Greengrass 核心软件](what-is-gg.md#gg-core-download-tab)。

 

## 运行 Greengrass 设备设置脚本
<a name="run-device-setup-script"></a>

运行 Greengrass 设备安装程序来配置您的设备，安装 Amazon IoT Greengrass 最新的 Core 软件版本，并在几分钟内部署 Hello World Lambda 函数。有关更多信息，请参阅 [快速入门：Greengrass 设备安装程序](quick-start.md)。

 

## 从 APT 存储库安装 Amazon IoT Greengrass 核心软件
<a name="ggc-package-manager"></a>

**重要**  
自 2022 年 2 月 11 日起，您无法再从 APT 存储库安装或更新 Amazon IoT Greengrass 核心软件。在添加 Amazon IoT Greengrass 存储库的设备上，必须[从来源列表中移除存储库](#ggc-package-manager-remove-sources)。从 APT 存储库运行该软件的设备将继续正常运转。我们建议您使用 [tar 文件](#download-and-extract-tarball)更新 Amazon IoT Greengrass Core 软件。

提供的 APT 存储库 Amazon IoT Greengrass 包括以下软件包：
+ `aws-iot-greengrass-core`。 安装 Amazon IoT Greengrass 核心软件。
+ `aws-iot-greengrass-keyring`。 安装用于对软件包存储库进行签名的 GnuPG (GPG) 密钥。 Amazon IoT Greengrass 

  下载此软件即表示您同意[Greengrass Core 软件许可协议](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)。

**Topics**
+ [使用 systemd 脚本管理 Greengrass 守护程序生命周期](#ggc-package-manager-systemd)
+ [使用 APT 存储库卸载 Amazon IoT Greengrass 核心软件](#ggc-package-manager-uninstall)
+ [移除 Amazon IoT Greengrass 核心软件存储库来源](#ggc-package-manager-remove-sources)

### 使用 systemd 脚本管理 Greengrass 守护程序生命周期
<a name="ggc-package-manager-systemd"></a>

该`aws-iot-greengrass-core`软件包还安装可用于管理 Amazon IoT Greengrass 核心软件（守护程序）生命周期的`systemd`脚本。
+ 要在引导过程中启动 Greengrass 守护程序，请执行以下操作：

  ```
  systemctl enable greengrass.service
  ```
+ 要启动 Greengrass 守护程序，请执行以下操作：

  ```
  systemctl start greengrass.service
  ```
+ 要停止 Greengrass 守护程序，请执行以下操作。

  ```
  systemctl stop greengrass.service
  ```
+ 要检查 Greengrass 守护程序的状态，请执行以下操作：

  ```
  systemctl status greengrass.service
  ```

### 使用 APT 存储库卸载 Amazon IoT Greengrass 核心软件
<a name="ggc-package-manager-uninstall"></a>

卸载 Amazon IoT Greengrass 核心软件时，您可以选择保留还是删除 Amazon IoT Greengrass 核心软件的配置信息，例如设备证书、组信息和日志文件。

**卸载 Amazon IoT Greengrass 核心软件并保留配置信息**
+ 运行以下命令以删除 Amazon IoT Greengrass 核心软件包并将配置信息保留在`/greengrass`文件夹中。

  ```
  sudo apt remove aws-iot-greengrass-core aws-iot-greengrass-keyring
  ```

**卸载 Amazon IoT Greengrass 核心软件并删除配置信息**

1. 运行以下命令删除 Amazon IoT Greengrass 核心软件包并从中删除配置信息`/greengrass folder`。

   ```
   sudo apt purge aws-iot-greengrass-core aws-iot-greengrass-keyring
   ```

1. 从来源列表中移除 Amazon IoT Greengrass 核心软件存储库。有关更多信息，请参阅 [移除 Amazon IoT Greengrass 核心软件存储库来源](#ggc-package-manager-remove-sources)。

### 移除 Amazon IoT Greengrass 核心软件存储库来源
<a name="ggc-package-manager-remove-sources"></a>

当您不再需要从 APT 存储库中安装或更新 Amazon IoT Greengrass 核心软件时，可以删除 Amazon IoT Greengrass 核心软件存储库来源。2022 年 2 月 11 日之后，您必须将存储库从来源列表中移除，以免在运行 `apt update` 时出错。

**从来源列表中删除 APT 存储库**
+ 运行以下命令将 Amazon IoT Greengrass 核心软件存储库从源列表中删除。

  ```
  sudo rm /etc/apt/sources.list.d/greengrass.list
  sudo apt update
  ```

## Amazon IoT Greengrass 在 Docker 容器中运行
<a name="gg-docker-support"></a>

Amazon IoT Greengrass 提供了 Dockerfile 和 Docker 镜像，让你可以更轻松地在 Docker 容器中运行 Amazon IoT Greengrass 核心软件。有关更多信息，请参阅 [Amazon IoT Greengrass Docker 软件](what-is-gg.md#gg-docker-download)。

**注意**  
还可以在 Greengrass 核心设备上运行 Docker 应用程序。为此，应使用 [Greengrass Docker 应用程序部署连接器](docker-app-connector.md)。

 

## 快速运行 Amazon IoT Greengrass
<a name="gg-snap-support"></a>

<a name="gg-snap-description"></a>Amazon IoT Greengrass snap 1.11.x 使您能够在容器化 Amazon IoT Greengrass 环境中通过便捷的软件包以及所有必要的依赖项运行有限版本的。

<a name="gg-snap-support-ends"></a>[2023年12月31日， Amazon IoT Greengrass 将结束在snapcraft.io上发布的 Amazon IoT Greengrass 核心软件版本1.11.x Snap的维护。](https://snapcraft.io/aws-iot-greengrass)当前运行 Snap 的设备将能够继续正常运转，直至另行通知。但是，维护结束后， Amazon IoT Greengrass 核心 Snap 将不再收到安全补丁或错误修复。

### Snap 概念
<a name="gg-snap-concepts"></a>

下方提供了一些基本的 Snap 概念，可帮助您了解如何使用 Amazon IoT Greengrass Snap：

**[Channel](https://snapcraft.io/docs/channels)**  
一个 Snap 组件，用于定义安装哪个版本的 snap 并跟踪其更新。Snap 会自动更新至当前频道的最新版本。

**[接口](https://snapcraft.io/docs/interface-management)**  
一个 Snap 组件，用于授予对网络和用户文件等资源的访问权限。  
要运行 Amazon IoT Greengrass 快照，必须连接以下接口。请注意，必须首先连接 `greengrass-support-no-container`，并确保其始终保持连接。  

```
      - greengrass-support-no-container
      - hardware-observe
      - home-for-hooks
      - hugepages-control
      - log-observe
      - mount-observe
      - network
      - network-bind
      - network-control
      - process-control
      - system-observe
```
其他接口是可选的。如果您的 Lambda 函数需要访问特定的资源，则可能需要连接到相应接口。

**[刷新](https://snapcraft.io/docs/managing-updates)**  
Snap 会自动更新。`snapd` 进程守护程序是 Snap 包管理器，默认为每天检查更新四次。每次更新检查称为一次刷新。当刷新发生时，进程守护程序会停止，接着 Snap 会更新，然后进程守护程序再重新启动。

有关更多信息，请参阅 [Snapcraft](https://snapcraft.io/) 网站。

### s Amazon IoT Greengrass nap v1.11.x 的新增功能
<a name="gg-snap-whats-new"></a>

以下内容介绍了 Amazon IoT Greengrass Snap 版本 1.11.x 中的新增和更改的功能。
+ 此版本仅支持以 `snap_daemon` 用户，其呈现为用户 ID (UID) 和组 (GID) `584788` 的形式。
+ 此版本仅支持非容器化的 Lambda 函数。
**重要**  
由于非容器化的 Lambda 函数必须共享同一个用户 (`snap_daemon`)，因此 Lambda 函数彼此之间没有隔离。有关更多信息，请参阅[使用组特定的配置控制 Greengrass Lambda 函数的执行](https://docs.amazonaws.cn/greengrass/v1/developerguide/lambda-group-config.html)。
+ 此版本支持 C、C\$1\$1、Java 8、Node.js 12.x、Python 2.7、Python 3.7 和 Python 3.8 运行时。
**注意**  
为了避免 Python 运行时冗余，Python 3.7 Lambda 函数实际上运行的是 Python 3.8 运行时。

### 开始使用 s Amazon IoT Greengrass nap
<a name="gg-snap-get-started"></a>

以下步骤可帮助您在设备上安装和配置 Amazon IoT Greengrass snap。

#### 要求
<a name="gg-snap-requirements"></a>

要运行 Amazon IoT Greengrass 快照，必须执行以下操作：
+ 在支持的 Linux 发行版上 Amazon IoT Greengrass 快速运行，例如 Ubuntu、Linux Mint、Debian 和 Fedora。
+ 在您的设备安装 `snapd` 进程守护程序。`snapd` 进程守护程序包含 `snap` 工具，可用来管理您设备上的 Snap 环境。

有关支持的 Linux 发行版列表和安装说明，请参阅 *Snap 文档*中的[安装 snapd](https://snapcraft.io/docs/installing-snapd)。

#### 安装和配置 Amazon IoT Greengrass 快照
<a name="gg-snap-install-config"></a>

以下教程向您展示了如何在设备上安装和配置 Amazon IoT Greengrass snap。

**注意**  
尽管本教程使用的是亚马逊 EC2 实例（x86 t2.micro Ubuntu 20.04），但你可以使用物理硬件（例如 Raspberry Pi） Amazon IoT Greengrass 快速运行。
`snapd` 进程守护程序已预先安装在 Ubuntu 上。

1. 通过在设备的终端中运行以下命令来安装 `core18` snap：

   ```
   sudo snap install core18
   ```

   `core18` Snap 是一种[基础 Snap](https://snapcraft.io/docs/base-snaps)，为运行时环境提供了常用的库。此 Snap 是基于 [Ubuntu 18. 04 LTS](http://releases.ubuntu.com/18.04/) 构建的。

1. 通过运行以下命令来升级 `snapd`：

   ```
   sudo snap install --channel=edge snapd; sudo snap refresh --channel=edge snapd
   ```

1. 运行`snap list`命令以检查是否安装了 s Amazon IoT Greengrass nap。

   以下示例响应显示 `snapd` 已经安装，但 `aws-iot-greengrass` 尚未安装。

   ```
   Name              Version               Rev    Tracking         Publisher   Notes
   amazon-ssm-agent  3.0.161.0             2996   latest/stable/…  aws✓        classic
   core              16-2.48               10444  latest/stable    canonical✓  core
   core18            20200929              1932   latest/stable    canonical✓  base
   lxd               4.0.4                 18150  4.0/stable/…     canonical✓  -
   snapd             2.48+git548.g929ccfb  10526  latest/edge      canonical✓  snapd
   ```

1. 选择以下选项之一来安装 s Amazon IoT Greengrass nap 1.11.x。
   + 要安装 s Amazon IoT Greengrass nap，请运行以下命令：

     ```
     sudo snap install aws-iot-greengrass
     ```

     示例响应：

     ```
     aws-iot-greengrass 1.11.5 from Amazon Web Services (aws) installed
     ```
   + 要从早期版本迁移到 v1.11.x 或更新为最新的可用补丁版本，请运行以下命令：

     ```
     sudo snap refresh --channel=1.11.x aws-iot-greengrass
     ```

   与其他快照一样， Amazon IoT Greengrass 快照使用频道来管理次要版本。Snap 会自动更新至当前频道的最新可用版本。例如，如果您指定`--channel=1.11.x`，则您的 Amazon IoT Greengrass 快照将更新到 v1.11.5。

   你可以运行`snap info aws-iot-greengrass`命令来获取可用频道的列表 Amazon IoT Greengrass。

1. 要访问 Lambda 函数所需的特定资源，您可以连接到其他接口。

   运行以下命令以获取 s Amazon IoT Greengrass nap 支持的接口列表：

   ```
   snap connections aws-iot-greengrass
   ```

   示例响应：

   ```
   Interface                Plug                                                Slot                 Notes
   camera                   aws-iot-greengrass:camera                           -                    -
   dvb                      aws-iot-greengrass:dvb                              -                    -
   gpio                     aws-iot-greengrass:gpio                             -                    -
   gpio-memory-control      aws-iot-greengrass:gpio-memory-control              -                    -
   greengrass-support       aws-iot-greengrass:greengrass-support-no-container  :greengrass-support  -
   hardware-observe         aws-iot-greengrass:hardware-observe                 :hardware-observe    manual
   hardware-random-control  aws-iot-greengrass:hardware-random-control          -                    -
   home                     aws-iot-greengrass:home-for-greengrassd             -                    -
   home                     aws-iot-greengrass:home-for-hooks                   :home                manual
   hugepages-control        aws-iot-greengrass:hugepages-control                :hugepages-control   manual
   i2c                      aws-iot-greengrass:i2c                              -                    -
   iio                      aws-iot-greengrass:iio                              -                    -
   joystick                 aws-iot-greengrass:joystick                         -                    -
   log-observe              aws-iot-greengrass:log-observe                      :log-observe         manual
   mount-observe            aws-iot-greengrass:mount-observe                    :mount-observe       manual
   network                  aws-iot-greengrass:network                          :network             -
   network-bind             aws-iot-greengrass:network-bind                     :network-bind        -
   network-control          aws-iot-greengrass:network-control                  :network-control     -
   opengl                   aws-iot-greengrass:opengl                           :opengl              -
   optical-drive            aws-iot-greengrass:optical-drive                    :optical-drive       -
   process-control          aws-iot-greengrass:process-control                  :process-control     -
   raw-usb                  aws-iot-greengrass:raw-usb                          -                    -
   removable-media          aws-iot-greengrass:removable-media                  -                    -
   serial-port              aws-iot-greengrass:serial-port                      -                    -
   spi                      aws-iot-greengrass:spi                              -                    -
   system-observe           aws-iot-greengrass:system-observe                   :system-observe      -
   ```

   如果您在 Slot 列中看到连字符 (-)，则表示相应接口尚未连接。

1. 按照[安装 Amazon IoT Greengrass 核心软件](module2.md)来创建 Amazon IoT 事物、Greengrass 组、支持 Amazon IoT与之进行安全通信的安全资源以及 Amazon IoT Greengrass 核心软件配置文件。配置文件包含特定`config.json`于 Greengrass 核心的配置，例如证书文件的位置和设备数据端点。 Amazon IoT 
**注意**  
如果您将文件下载到其他设备，请按照此[步骤](start-greengrass.md#transfer-files-to-device)将文件传输到 Amazon IoT Greengrass 核心设备。

1. 对于 Amazon IoT Greengrass 快照，请务必更新 c [onfig.json](gg-core.md#config-json) 文件，如下所示：
   + 将的*certificateId*每个实例替换为证书和密钥文件名称中的证书 ID。
   + 如果您下载的亚马逊根 CA 证书不同于 Amazon 根 CA 1 证书，请将的*AmazonRootCA1.pem*每个实例替换为亚马逊根 CA 文件的名称。

   ```
   {
     ...
     "crypto" : {
       "principals" : {
         "SecretsManager" : {
           "privateKeyPath" : "file:///snap/aws-iot-greengrass/current/greengrass/certs/certificateId-private.pem.keyy"
         },
         "IoTCertificate" : {
           "privateKeyPath" : "file:///snap/aws-iot-greengrass/current/greengrass/certs/certificateId-private.pem.key",
           "certificatePath" : "file:///snap/aws-iot-greengrass/current/greengrass/certs/certificateId-certificate.pem.crt"
         }
       },
       "caPath" : "file:///snap/aws-iot-greengrass/current/greengrass/certs/AmazonRootCA1.pem"
     },
     "writeDirectory": "/var/snap/aws-iot-greengrass/current/ggc-write-directory",
     "pidFileDirectory": "/var/snap/aws-iot-greengrass/current/pidFileDirectory"
   }
   ```

1. 运行以下命令来添加您的 Amazon IoT Greengrass 证书和配置文件：

   ```
   sudo snap set aws-iot-greengrass gg-certs=/home/ubuntu/my-certs
   ```

### 部署 Lambda 函数
<a name="gg-snap-lambda"></a>

本节介绍如何将客户托管的 Lambda 函数部署到 Amazon IoT Greengrass Snap 上。

**重要**  
Amazon IoT Greengrass snap v1.11 仅支持非容器化的 Lambda 函数。

1. 运行以下命令启动 Amazon IoT Greengrass 守护程序：

   ```
   sudo snap start aws-iot-greengrass
   ```

   示例响应：

   ```
   Started.
   ```
**注意**  
如果看到错误，您可以使用 `snap run` 命令来获取详细的错误消息。有关问故障排除的更多信息，请参阅[错误：无法执行以下任务：-对 snap “” 的服务 ["greengrassd"] 运行服务命令 “start”（[start aws-iot-greengrass snap。 aws-iot-greengrass.greengrassd.service] 失败，退出状态 1：Job for snap。 aws-iot-greengrass.greengrassd.service 失败，因为控制进程退出时出现错误代码。 请参阅 “systemctl 状态快照”。 aws-iot-greengrass.greengrassd.service” 和 “journalctl-xe” 了解详情。）](#gg-snap-troubleshoot-snaprun)。

1. 运行以下命令，以确认进程守护程序正在运行：

   ```
   snap services aws-iot-greengrass.greengrassd
   ```

   示例响应：

   ```
   Service                         Startup   Current  Notes
   aws-iot-greengrass.greengrassd  disabled  active   -
   ```

1. 按照[模块 3（第 1 部分）： Amazon IoT Greengrass上的 Lambda 函数](https://docs.amazonaws.cn/greengrass/v1/developerguide/module3-I.html)中所述，开始创建和部署 Hello World Lambda 函数。但在部署 Lambda 函数之前，请先完成下面这一步。

1. 确保您的 Lambda 函数以 `snap_daemon` 用户身份在无容器模式下运行。要更新 Greengrass 群组的设置，请在控制台中执行以下操作： Amazon IoT Greengrass 

   1. 登录 Amazon IoT Greengrass 控制台。

   1. <a name="console-gg-groups"></a>**在 Amazon IoT 控制台导航窗格的**管理**下，展开 **Greengrass** 设备，然后选择群组 (V1)。**

   1. 在 **Greengrass 组**下，选择目标组。

   1. 在组配置页面上的导航窗格中，选择 **Lambda 函数**选项卡。

   1. 在**默认 Lambda 函数运行时环境**下，选择**编辑**，然后执行以下操作：

      1. 对于 “**默认系统用户和组**”，选择 “**其他用户 ID/group ID**”，然后同时输入 **584788** “**系统用户 ID”（数字）**和 “**系统组 ID”（数字）**。

      1. 对于**默认 Lambda 函数容器化**，请选择**无容器**。

      1. 选择**保存**。

### 停止 Amazon IoT Greengrass 守护程序
<a name="gg-snap-stop"></a>

您可以使用 `snap stop` 命令来停止服务。

要停止 Amazon IoT Greengrass 守护程序，请运行以下命令：

```
sudo snap stop aws-iot-greengrass
```

命令应返回 `Stopped.`。

要检查是否成功停止了 Snap，请运行以下命令：

```
snap services aws-iot-greengrass.greengrassd
```

示例响应：

```
Service                         Startup   Current   Notes
aws-iot-greengrass.greengrassd  disabled  inactive  -
```

### 卸载快照 Amazon IoT Greengrass
<a name="gg-snap-uninstall"></a>

要卸载 s Amazon IoT Greengrass nap，请运行以下命令：

```
sudo snap remove aws-iot-greengrass
```

示例响应：

```
aws-iot-greengrass removed
```

### 对 Amazon IoT Greengrass 快照进行故障排除
<a name="gg-snap-troubleshoot"></a>

使用以下信息来帮助解决 Amazon IoT Greengrass 快照问题。

#### 收到权限被拒绝错误
<a name="gg-snap-troubleshoot-permission-denied"></a>

**解决方案**：权限被拒绝错误的原因通常是缺少接口。如需缺失接口的列表和详细的故障排除信息，您可以使用 `snappy-debug` 工具。

运行以下命令来安装该工具。

```
sudo snap install snappy-debug
```

示例响应：

```
snappy-debug 0.36-snapd2.45.1 from Canonical✓ installed
```

在独立的终端会话中运行 `sudo snappy-debug` 命令。该操作将一直持续到出现权限被拒绝错误为止。

例如，如果 Lambda 函数尝试读取 `$HOME` 目录中的文件，您可能会得到以下响应：

```
INFO: Following '/var/log/syslog'. If have dropped messages, use:
INFO: $ sudo journalctl --output=short --follow --all | sudo snappy-debug
kernel.printk_ratelimit = 0
= AppArmor =
Time: Dec  6 04:48:26
Log: apparmor="DENIED" operation="mknod" profile="snap.aws-iot-greengrass.greengrassd" name="/home/ubuntu/my-file.txt" pid=12345 comm="touch" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
File: /home/ubuntu/my-file.txt (write)
Suggestion:
* add 'home' to 'plugs'
```

此示例显示创建 `/home/ubuntu/my-file.txt` 文件导致了权限错误。它还建议您在 `plugs` 中添加 `home`。但是，此建议并不适用。`home-for-greengrassd` 和 `home-for-hooks` plug 仅被授予只读访问权限。

有关更多信息，请参阅 *Snap 文档*中的 [snappy-debug Snap](https://snapcraft.io/docs/debug-snaps#heading--snappy-debug)。

#### 错误：无法执行以下任务：-对 snap “” 的服务 ["greengrassd"] 运行服务命令 “start”（[start aws-iot-greengrass snap。 aws-iot-greengrass.greengrassd.service] 失败，退出状态 1：Job for snap。 aws-iot-greengrass.greengrassd.service 失败，因为控制进程退出时出现错误代码。 请参阅 “systemctl 状态快照”。 aws-iot-greengrass.greengrassd.service” 和 “journalctl-xe” 了解详情。）
<a name="gg-snap-troubleshoot-snaprun"></a>

**解决方案**：当`snap start aws-iot-greengrass`命令无法启动 C Amazon IoT Greengrass ore 软件时，您可能会看到此错误。

有关更多故障排除信息，请运行以下命令：

```
sudo snap run aws-iot-greengrass.greengrassd
```

示例响应：

```
Couldn't find /snap/aws-iot-greengrass/44/greengrass/config/config.json.
```

此示例显示找 Amazon IoT Greengrass 不到该`config.json`文件。您可以检查配置和证书文件。

#### /var/snap/aws-iot-greengrass/current/ggc-write-directory/packages/1.11.5/rootfs/merged不是绝对路径或符号链接。
<a name="gg-snap-troubleshoot-lambda"></a>

**解决方案**： Amazon IoT Greengrass 快照仅支持非容器化的 Lambda 函数。确保您的 Lambda 函数在无容器模式下运行。有关更多信息，请参阅《*Amazon IoT Greengrass Version 1 开发人员指南*》中的[选择 Lambda 函数容器化时的注意事项](https://docs.amazonaws.cn/greengrass/v1/developerguide/lambda-group-config.html#no-container-mode)。

#### 在您运行 sudo snap refresh snapd 命令后，snapd 进程守护程序无法重新启动。
<a name="gg-snap-troubleshoot-snapd"></a>

**解决方案**：按照中的步骤 6 [安装和配置 Amazon IoT Greengrass 快照](#gg-snap-install-config) 到 8 将 Amazon IoT Greengrass 证书和配置文件添加到 Amazon IoT Greengrass 快照中。

## 存档 Amazon IoT Greengrass 核心软件安装
<a name="archive-ggc-version"></a>

升级到新版本的 Amazon IoT Greengrass Core 软件时，可以存档当前安装的版本。这将保留您当前的安装环境，因此，您可以在同一硬件上测试新的软件版本。这还使您能够出于任何原因轻松回滚到您的存档版本。

**存档当前安装并安装新版本**

1. 下载您要升级到的 [Amazon IoT Greengrass Core 软件](what-is-gg.md#gg-core-download-tab)安装程序包。

1. 将此程序包复制到目标核心设备。有关描述如何传输文件的说明，请参阅此[步骤](start-greengrass.md#transfer-files-to-device)。
**注意**  
稍后，您将当前的证书、密钥和配置文件复制到新的安装。

   在核心设备终端中，在以下步骤中运行命令。

1. 确保 Greengrass 守护进程在您的核心设备上停止。

   1. 要检查进程守护程序是否正在运行，请执行以下操作：

      ```
      ps aux | grep -E 'greengrass.*daemon'
      ```

      如果输出包含 `root` 的 `/greengrass/ggc/packages/ggc-version/bin/daemon` 条目，则表示进程守护程序正在运行。
**注意**  
此过程的编写假设是 Amazon IoT Greengrass Core 软件已安装在`/greengrass`目录中。

   1. 停止 进程守护程序：

      ```
      cd /greengrass/ggc/core/
      sudo ./greengrassd stop
      ```

1. 将当前 Greengrass 根目录移至其他目录。

   ```
   sudo mv /greengrass /greengrass_backup
   ```

1. 将新的软件解压缩到核心设备上。替换命令中的*os-architecture*和*version*占位符。

   ```
   sudo tar –zxvf greengrass-os-architecture-version.tar.gz –C /
   ```

1. 将存档的证书、密钥和配置文件复制到新的安装。

   ```
   sudo cp /greengrass_backup/certs/* /greengrass/certs
   sudo cp /greengrass_backup/config/* /greengrass/config
   ```

1. 启动守护程序：

   ```
   cd /greengrass/ggc/core/
   sudo ./greengrassd start
   ```

现在，您可以进行一个组部署来测试新的安装。如果出现故障，您可以还原已存档的安装。

**还原已存档的安装**

1. 停止守护程序。

1. 删除新的 `/greengrass` 目录。

1. 将 `/greengrass_backup` 目录移回 `/greengrass`。

1. 启动进程守护程序。