管理 Debian 软件包

本页面介绍如何在 Apt 代码库中添加、查看和删除 Debian 软件包。

准备工作

  1. 如果目标 Apt 代码库不存在,请创建新的代码库
  2. 配置虚拟机以访问代码库。
  3. (可选)为 gcloud 命令配置默认值
  4. 确保元数据中的软件包名称符合 Debian 软件包名称标准

添加软件包

存储库模式:标准

您必须同时具有代码库的读写权限才能添加软件包。

您可以使用 Google Cloud CLI 将软件包上传到代码库,也可以导入存储在 Cloud Storage 中的软件包。如果您使用 Cloud Build 构建软件包,该 build 可以将软件包存储在 Cloud Storage 中,以便您导入。

很长的导入或上传操作可能会超过 gcloud CLI 用于调用 API 的令牌的有效期。如果您要添加的软件包数量非常大,请考虑分批添加,让每个上传或导入操作能在更短的时间内完成。如需了解详情,请参阅操作系统软件包问题排查文档。

直接上传

使用 gcloud artifacts apt upload 命令将软件包上传到 Apt 代码库:

gcloud artifacts apt upload REPOSITORY \
    --location=LOCATION \
    --source=PACKAGES

替换以下值:

  • REPOSITORY 是 Artifact Registry 代码库名称。
  • LOCATION 是代码库的单区域或多区域位置。
  • PACKAGES 是软件包的路径。

例如,如需将软件包 my-package.deb 上传到位于 us-central1 的 Apt 代码库 my-repo,请运行以下命令:

gcloud artifacts apt upload my-repo \
    --location=us-central1 \
    --source=my-package.deb

Cloud Storage

  1. 通过以下某种方式将软件包上传到 Cloud Storage:

    • 将软件包直接上传到 Cloud Storage 存储桶
    • 使用 Cloud Build 构建软件包并将其存储在存储桶中
  2. 运行以下命令:

    gcloud artifacts apt import REPOSITORY \
        --location=LOCATION \
         --gcs-source=PACKAGES
    

    替换以下值:

    • REPOSITORY 是 Artifact Registry 代码库名称。
    • LOCATION 是代码库的单区域或多区域位置。
    • PACKAGES 是 Cloud Storage 中软件包的列表(以英文逗号分隔)。如需上传某个目录中的所有软件包,请使用目录通配符 (*) 或使用递归目录通配符 (**) 上传所有子目录中的所有软件包。

    例如,如需将软件包 package.rpmdirectory 目录中的所有软件包从存储桶 my-bucket 上传到位于 us-central1 位置的 Apt 代码库 my-repo,请运行以下命令:

    gcloud artifacts apt import my-repo \
       --location=us-central1 \
       --gcs-source=gs://my-bucket/path/to/package.deb,gs://my-bucket/directory*
    

上传或导入操作完成后,您可以使用 Google Cloud 控制台或 gcloud CLI 查看代码库中的软件包并确认它们已成功上传。

如果您有包含大量软件包的大型代码库,则可能需要几分钟时间重新生成软件包索引,以便 Apt 客户端可以看到新软件包。

查看软件包

代码库模式:标准、远程(预览版)

如需查看软件包,您必须拥有 Artifact Registry Reader 角色中的权限。Artifact Registry 不会列出软件包内的文件。

如需使用 Google Cloud 控制台或 gcloud 查看软件包和软件包版本,请执行以下操作:

控制台

  1. 打开 Google Cloud 控制台中的制品库页面。

    打开“代码库”页面

  2. 在代码库列表中,点击相应代码库。

    软件包页面列出代码库中的软件包。

  3. 点击一个软件包以查看它的版本。

gcloud

如需列出代码库中的软件包,请运行以下命令:

gcloud artifacts packages list [--repository=REPOSITORY] [--location=LOCATION]

地点

  • REPOSITORY 是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。
  • LOCATION 是单区域或多区域位置。使用此标志可查看特定位置的代码库。如果您配置了默认位置,可以省略此标志,以便使用默认位置。

如需查看软件包的版本,请运行以下命令:

gcloud artifacts versions list --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION]

其中

  • PACKAGE 是软件包的 ID 或软件包的完全限定标识符。
  • REPOSITORY 是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。
  • LOCATION 是单区域或多区域位置。使用此标志可查看特定位置的代码库。如果您配置了默认位置,可以省略此标志,以便使用默认位置。

安装软件包

代码库模式:标准、远程(预览版)

在安装软件包之前,请验证是否已正确配置软件包管理器和代码库。

如需在代码库中安装软件包,请执行以下操作:

  1. 更新可用软件包的列表:

    sudo apt update
    
  2. 安装软件包,指定在 Apt.

    sudo apt install PACKAGE/REPOSITORY
    

    替换以下值:

    • PACKAGE 是软件包名称。
    • REPOSITORY 是 Artifact Registry 代码库的名称。 对于远程代码库,请使用标准上游代码库的名称。

    例如,如需从代码库 my-repo 安装软件包 my-package,请运行以下命令:

    sudo apt install my-package -t my-repo
    

删除软件包

存储库模式:标准

在删除软件包或软件包版本之前,请确认您已在其中告知或解决任何重要依赖项。

如需删除软件包,请按如下所述操作:

控制台

  1. 打开 Google Cloud 控制台中的制品库页面。

    打开“代码库”页面

  2. 在代码库列表中,点击相应代码库。

    软件包页面列出代码库中的软件包。

  3. 选择要删除的软件包。

  4. 点击删除

  5. 在确认对话框中,点击删除

gcloud

运行以下命令:

gcloud artifacts packages delete PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] [--async]

地点

  • PACKAGE 是代码库中的软件包名称。
  • REPOSITORY 是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。
  • LOCATION 是单区域或多区域位置。使用此标志可查看特定位置的代码库。如果您配置了默认位置,可以省略此标志,以便使用默认位置。
  • --async 会立即返回结果,而无需等待正在进行的操作完成。

如需删除软件包的版本,请按如下所述操作:

控制台

  1. 打开 Google Cloud 控制台中的制品库页面。

    打开“代码库”页面

  2. 在代码库列表中,点击相应代码库。

    软件包页面列出代码库中的软件包。

  3. 点击一个软件包以查看它的版本。

  4. 选择您要删除的版本。

  5. 点击删除

  6. 在确认对话框中,点击删除

gcloud

运行以下命令:

gcloud artifacts versions delete VERSION \
    --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] \
    [--async]

地点

  • PACKAGE 是代码库中的软件包名称。
  • REPOSITORY 是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。
  • LOCATION 是单区域或多区域位置。使用此标志可查看特定位置的代码库。如果您配置了默认位置,可以省略此标志,以便使用默认位置。
  • --async 会立即返回结果,而无需等待正在进行的操作完成。

对于大型代码库,可能需要几分钟时间重新生成 Apt 软件包索引以反映删除。

后续步骤