本页介绍了如何在 Yum 仓库中添加、查看和删除 RPM 软件包。Artifact Registry Yum 仓库支持 Yum 和 DNF。
准备工作
- 如果目标 Yum 代码库不存在,请创建新代码库。
- 配置虚拟机以访问代码库。
- (可选)为 gcloud 命令配置默认值。
- 确保元数据中的软件包名称符合 Fedora 软件包命名准则和 Fedora 软件包版本控制准则。
添加软件包
代码库模式:标准
您必须同时拥有对代码库的读取和写入权限,才能添加软件包。
您可以使用 Google Cloud CLI 将软件包上传到代码库,也可以导入存储在 Cloud Storage 中的软件包。
如果您使用 Cloud Build 构建软件包,则构建可以将软件包存储在 Cloud Storage 中,以供您导入。非常长的导入或上传操作可能会超出 gcloud CLI 用于调用 API 的令牌的到期期限。如果您要添加的软件包数量非常多,不妨考虑分批添加,以便缩短每次上传或导入操作的完成时间。如需了解详情,请参阅操作系统软件包问题排查文档。
直接上传
使用 gcloud artifacts yum upload
命令将软件包上传到 Yum 仓库:
gcloud artifacts yum upload REPOSITORY \
--location=LOCATION \
--source=PACKAGES
替换以下值:
REPOSITORY
是 Artifact Registry 制品库名称。-
LOCATION
是代码库的单区域或多区域位置。 PACKAGES
是软件包的路径。
例如,如需将软件包 my-package.rpm
上传到位置 us-west1
中的 Yum 代码库 my-repo
,请运行以下命令:
gcloud artifacts yum upload my-repo \ --location=us-west1 \ --source=my-package.rpm
Cloud Storage
- 通过以下任一方式将软件包上传到 Cloud Storage:
- 直接将软件包上传到 Cloud Storage 存储桶
- 使用 Cloud Build 构建软件包并将其存储在存储桶中
- 运行以下命令:
gcloud artifacts yum import REPOSITORY \ --location=LOCATION \ --gcs-source=PACKAGES
替换以下值:
REPOSITORY
是 Artifact Registry 制品库名称。-
LOCATION
是代码库的单区域或多区域位置。 PACKAGES
是 Cloud Storage 中软件包的英文逗号分隔列表。如需上传目录中的所有软件包,请使用目录通配符 (*
) 或递归目录通配符 (**
) 上传所有子目录中的所有软件包。
例如,以下命令会将软件包
package.rpm
和directory
目录中的所有软件包从存储桶my-bucket
上传到位置us-west1
中的 Yum 代码库my-repo
:gcloud artifacts yum import my-repo \ --location=us-west1 \ --gcs-source=gs://my-bucket/path/to/package.rpm,gs://my-bucket/directory*
上传或导入操作完成后,您可以使用Google Cloud 控制台或 gcloud CLI 查看代码库中的软件包,并确认它们已成功上传。
如果您有包含大量软件包的大型代码库,则可能需要几分钟才能重新生成软件包索引,以便 Yum 客户端可以看到新软件包。
查看软件包
代码库模式:标准、远程(预览版)
如需查看软件包,您必须拥有 Artifact Registry Reader 角色的权限。Artifact Registry 不会列出软件包中的文件。
如需使用 Google Cloud 控制台或 gcloud
查看软件包和软件包版本,请执行以下操作:
控制台
在 Google Cloud 控制台中打开制品库页面。
在代码库列表中,点击相应代码库。
软件包页面列出代码库中的软件包。
点击一个软件包以查看它的版本。
gcloud
如需列出代码库中的软件包,请运行以下命令:
gcloud artifacts packages list [--repository=REPOSITORY] [--location=LOCATION]
替换以下内容:
如需查看软件包的版本,请运行以下命令:
gcloud artifacts versions list --package=PACKAGE \
[--repository=REPOSITORY] [--location=LOCATION]
替换以下内容:
安装软件包
代码库模式:标准、远程(预览版)
在安装软件包之前,请验证您是否已配置虚拟机以从 Artifact Registry 代码库安装软件包。
如需安装软件包,请运行以下命令:
sudo yum --enablerepo=REPOSITORY install PACKAGE
替换以下值:
PACKAGE
是软件包名称REPOSITORY
是.repo
文件中配置的代码库的名称。
例如,如需从代码库 my-repo
安装软件包 my-package
,请运行以下命令:
sudo yum --enablerepo=my-repo install my-package
删除软件包
代码库模式:标准
在删除软件包或软件包版本之前,请确认您已在其中告知或解决任何重要依赖项。
如需删除软件包,请按如下所述操作:
控制台
在 Google Cloud 控制台中打开制品库页面。
在代码库列表中,点击相应代码库。
软件包页面列出代码库中的软件包。
选择要删除的软件包。
点击删除。
在确认对话框中,点击删除。
gcloud
运行以下命令:
gcloud artifacts packages delete PACKAGE \
[--repository=REPOSITORY] [--location=LOCATION] [--async]
替换以下内容:
PACKAGE
是代码库中的软件包名称。REPOSITORY
是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。-
LOCATION
是代码库的单区域或多区域位置。 使用此标志可查看特定位置中的代码库。如果您配置了默认位置,则可以省略此标志以使用默认值。
--async
标志会导致命令立即返回,而无需等待正在进行的操作完成。
如需删除软件包的版本,请按如下所述操作:
控制台
在 Google Cloud 控制台中打开制品库页面。
在代码库列表中,点击相应代码库。
软件包页面列出代码库中的软件包。
点击一个软件包以查看它的版本。
选择您要删除的版本。
点击删除。
在确认对话框中,点击删除。
gcloud
运行以下命令:
gcloud artifacts versions delete VERSION \
--package=PACKAGE \
[--repository=REPOSITORY] [--location=LOCATION] \
[--async]
替换以下内容:
VERSION
是要删除的版本的名称。PACKAGE
是代码库中的软件包名称。REPOSITORY
是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。-
LOCATION
是代码库的单区域或多区域位置。 使用此标志可查看特定位置中的代码库。如果您配置了默认位置,则可以省略此标志以使用默认值。
--async
标志会导致命令立即返回,而无需等待正在进行的操作完成。
对于大型代码库,重新生成 Yum 软件包索引可能需要几分钟时间,以反映删除操作。