管理 Debian 软件包

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

准备工作

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

添加软件包

仓库模式:标准

您必须同时拥有对代码库的读取和写入权限,才能添加软件包。

您可以使用 Google Cloud CLI 将软件包上传到代码库,也可以 导入存储在 Cloud Storage 中的软件包。如果您使用 Cloud 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 上传到 Apt 代码库 在位置 us-central1 中使用 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 是 Cloud Storage 存储分区的 存储库
    • PACKAGES 是 Cloud Storage 中软件包的英文逗号分隔列表。如需上传某个目录中的所有文件包,请使用 目录通配符 (*) 或使用递归目录通配符 (**) 来 上传所有子目录中的所有软件包。

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

    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是 单区域或多区域 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是 单区域或多区域 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是 单区域或多区域 location。 使用此标志可查看特定位置的代码库。如果您 配置了默认位置,则可以省略此标志来使用 默认值。
  • --async 会立即返回结果,而无需等待正在进行的操作完成。

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

后续步骤