本页面介绍了如何在 Apt 中添加、查看和删除 Debian 软件包 代码库
准备工作
- 如果目标 Apt 代码库不存在,请创建新代码库。
- 配置虚拟机以访问代码库。
- (可选)为 gcloud 命令配置默认值。
- 请确保元数据中的软件包名称符合 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
通过以下任一方式将软件包上传到 Cloud Storage:
- 直接将软件包上传到 Cloud Storage 存储桶
- 使用以下代码构建软件包: Cloud Build 并将其存储在存储桶中
运行以下命令:
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
查看软件包和软件包版本,请执行以下操作:
控制台
打开 Google Cloud 控制台中的制品库页面。
在代码库列表中,点击相应代码库。
软件包页面列出代码库中的软件包。
点击一个软件包以查看它的版本。
gcloud
如需列出代码库中的软件包,请运行以下命令:
gcloud artifacts packages list [--repository=REPOSITORY] [--location=LOCATION]
地点
- REPOSITORY 是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。
- LOCATION是 单区域或多区域 location。 使用此标志可以查看特定位置的代码库。如果您 配置了默认位置,则可以省略此标志来使用 默认值。
如需查看软件包的版本,请运行以下命令:
gcloud artifacts versions list --package=PACKAGE \
[--repository=REPOSITORY] [--location=LOCATION]
其中
安装软件包
代码库模式:标准、远程(预览版)
在安装软件包之前,请验证您是否已正确配置软件包管理器和代码库。
如需在代码库中安装软件包,请执行以下操作:
更新可用软件包的列表:
sudo apt update
安装软件包,指定在 Apt 中配置的代码库的名称。
sudo apt install PACKAGE/REPOSITORY
替换以下值:
- PACKAGE 是软件包名称。
- REPOSITORY 是 Artifact Registry 代码库的名称。 对于远程仓库,请使用标准上游仓库的名称。
例如,如需从代码库
my-repo
安装软件包my-package
,请运行以下命令:sudo apt install my-package -t my-repo
删除软件包
代码库模式:标准
在删除软件包或软件包版本之前,请确认您已在其中告知或解决任何重要依赖项。
如需删除软件包,请按如下所述操作:
控制台
打开 Google Cloud 控制台中的制品库页面。
在代码库列表中,点击相应代码库。
软件包页面列出代码库中的软件包。
选择要删除的软件包。
点击删除。
在确认对话框中,点击删除。
gcloud
运行以下命令:
gcloud artifacts packages delete PACKAGE \
[--repository=REPOSITORY] [--location=LOCATION] [--async]
地点
如需删除软件包的版本,请按如下所述操作:
控制台
打开 Google Cloud 控制台中的制品库页面。
在代码库列表中,点击相应代码库。
软件包页面列出代码库中的软件包。
点击一个软件包以查看它的版本。
选择您要删除的版本。
点击删除。
在确认对话框中,点击删除。
gcloud
运行以下命令:
gcloud artifacts versions delete VERSION \
--package=PACKAGE \
[--repository=REPOSITORY] [--location=LOCATION] \
[--async]
地点
对于大型代码库,重新生成 Apt 软件包可能需要几分钟时间 索引以反映删除操作。