配置虚拟机以安装 RPM 软件包

本页介绍了如何配置虚拟机以从 Artifact Registry Yum 代码库安装 RPM 软件包。Artifact Registry Yum 仓库支持 yumdnf 客户端。

准备工作

如果目标 Yum 代码库不存在,请创建新代码库。您可以创建私有代码库或无需身份验证的公共代码库。

准备虚拟机以访问 Yum 代码库

如需准备虚拟机以访问 Yum 仓库,请使用 yumdnf 客户端工具:

私有仓库

  1. 选择您将用于授予访问权限的服务账号。

    • 对于 Compute Engine 虚拟机,此值可能是默认服务账号。Artifact Registry 会自动为使用服务账号的任何虚拟机检索 Compute Engine 虚拟机服务账号凭据。
    • 对于其他虚拟机,请创建或选择一个服务账号来代表虚拟机执行操作。您需要知道服务账号密钥文件的位置,才能配置虚拟机。您可以在服务账号页面上查看现有账号的密钥并为其创建密钥。
  2. 向您的服务账号授予代码库访问权限

  3. 准备虚拟机以访问代码库。

    Compute Engine 虚拟机

    1. 向虚拟机分配 cloud-platform API 访问权限范围。如需了解如何设置访问权限范围,请参阅更改实例的服务账号和访问权限范围

    2. 使用以下命令更新软件包缓存:

      sudo yum makecache
      
    3. 使用以下命令在虚拟机上安装 Artifact Registry 插件:

      sudo yum install FORMAT-plugin-artifact-registry
      

      替换以下内容:

      • FORMAT 替换为以下项之一:
        • yum,如果您的操作系统是 Enterprise Linux 7 或更低版本
        • dnf,如果您的操作系统是 Enterprise Linux 8 或更高版本

    其他虚拟机

    1. 使用以下命令安装 RPM 签名密钥:

      sudo rpm --import https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
      
    2. 创建一个名为 /etc/yum.repos.d/artifact-registry-plugin.repo 的文件,其中包含以下内容:

      [ar-plugin]
      name=Artifact Registry Plugin
      baseurl=https://packages.cloud.google.com/yum/repos/FORMAT-plugin-artifact-registry-DISTRO-stable
      enabled=1
      gpgcheck=1
      

      替换以下内容:

      • FORMAT 替换为以下项之一:
        • yum,如果您的操作系统是 Enterprise Linux 7 或更低版本
        • dnf,如果您的操作系统是 Enterprise Linux 8 或更高版本
      • DISTRO,采用 Red Hat Enterprise Linux 主要版本的格式 elX,其中 X 是版本。el7el8 是有效的 DISTRO 值示例。
    3. 使用以下命令更新 Yum:

      sudo yum makecache
      
    4. 使用以下命令在虚拟机上安装 Artifact Registry 插件:

      yum install FORMAT-plugin-artifact-registry
      

      FORMAT 替换为以下项之一:

      • yum,如果您的操作系统是 Enterprise Linux 7 或更低版本
      • dnf,如果您的操作系统是 Enterprise Linux 8 或更高版本
    5. artifact-registry.conf 文件中找到 #service_account_json = "/path/to/creds.json" 行,然后取消注释该行并添加服务账号密钥的路径。

      • 对于 Enterprise Linux 7 或更低版本的操作系统,配置文件的路径为 /etc/yum/pluginconf.d/artifact-registry.conf
      • 对于 Enterprise Linux 8 或更高版本的操作系统,配置文件的路径为 /etc/dnf/plugins/artifact-registry.conf

      配置文件条目:

      service_account_json = "PATH_TO_SERVICE_ACCOUNT_KEY"
      

      PATH_TO_SERVICE_ACCOUNT_KEY 替换为服务账号密钥 JSON 文件的路径。

公共代码库

配置对代码库的公共访问权限

配置虚拟机以访问标准 Yum 存储库

如需将虚拟机配置为访问 Yum 仓库,请使用 yumdnf 客户端工具:

  1. 运行 gcloud beta artifacts print-settings yum 命令生成虚拟机配置命令:

    gcloud beta artifacts print-settings yum \
        --repository=REPOSITORY \
        --location=LOCATION
    

    替换以下内容:

    • REPOSITORY 是 Artifact Registry 制品库的名称。
    • LOCATION 是代码库的单区域或多区域位置

    输出类似于以下内容:

    # To configure your package manager with this repository:
    
    # Update Yum:
    sudo yum makecache
    
    # Install the Yum credential helper:
    sudo yum install yum-plugin-artifact-registry
    
    # Configure your VM to access Artifact Registry packages using the following
    # command:
    
    sudo tee -a /etc/yum.repos.d/artifact-registry.repo << EOL
    [REPOSITORY]
    name=REPOSITORY
    baseurl=https://LOCATION-yum.pkg.dev/projects/PROJECT/REPOSITORY
    enabled=1
    repo_gpgcheck=0
    gpgcheck=0
    EOL
    
    # Update Yum:
    sudo yum makecache
    
  2. 配置 yum 客户端工具,以便使用 print-settings 命令的输出中的 tee 命令从代码库提取软件包。

    例如,如需从项目 my-project 中的公共 my-repo 和位置 us-west1 安装软件包,请使用以下命令:

    sudo tee -a /etc/yum.repos.d/artifact-registry.repo << EOL
    [my-repo]
    name=My Repository
    baseurl=https://us-west1-yum.pkg.dev/projects/my-project/my-repo
    enabled=1
    repo_gpgcheck=0
    gpgcheck=0
    EOL
    
  3. 使用以下命令更新代码库源:

    sudo yum makecache
    

Yum 现在可以连接到代码库。

如果您创建了其他 Yum 仓库,请在 /etc/yum.repos.d/ 中为每个仓库创建一个 .repo 文件。重新运行 sudo yum update 以更新代码库来源。

配置虚拟机以访问远程 Yum 仓库

如需将虚拟机配置为仅使用远程 Yum 仓库(而非标准上游 Yum 仓库),请将虚拟机仓库列表中的标准仓库替换为远程仓库。

如果标准代码库是在配置文件中定义的,而不是在单独的代码库文件 (.repo) 中定义的,您可以删除配置文件中的条目并将其替换为远程代码库,也可以在 /etc/yum.repos.d/ 目录中定义新的代码库文件。

  1. 转到“虚拟机实例”页面

  2. 在虚拟机所在的行中,点击 SSH。系统会打开一个新窗口,其中包含虚拟机上的终端会话。

  3. 打开虚拟机的 /etc/yum.repos.d/ 文件夹,然后找到包含标准上游代码库的适当代码库文件 (.repo)。这有时也称为“基础代码库”。您可以通过包含 [base][baseos] 的 Yum 代码库名称来识别基本代码库。

  4. 如需完全替换基础代码库,请移除 [base][baseos] 下的默认设置。如果您想保留标准的上游代码库,并将远程代码库添加为后备选项,请勿移除默认设置。

  5. [base][baseos] 下添加以下设置:

    name=YUM_REPOSITORY_NAME
    baseurl=https://LOCATION-yum.pkg.dev/remote/PROJECT_ID/REMOTE_REPOSITORY_NAME
    enabled=1
    gpgcheck=1
    

    替换以下内容:

  • YUM_REPOSITORY_NAME,其中包含远程 Yum 代码库的唯一单字代码库 ID。如果您已删除标准上游代码库配置,则此名称可以与上游代码库名称匹配;如果您要保留标准上游代码库,则可以使用其他名称将其标识为远程代码库。
  • LOCATION 是代码库的单区域或多区域位置
  • PROJECT_ID 替换为虚拟机的项目 ID。
  • REMOTE_REPOSITORY_NAME 替换为远程仓库的直观易懂的名称。

将远程 Yum 代码库用作备用

如果您想将标准上游作为首选项保留,并将远程代码库添加为后备选项,则可以在代码库文件中保留标准上游,并在 /etc/yum.repos.d 文件夹中创建新的代码库文件。

如需在 /etc/yum.repos.d 文件夹中创建新的代码库文件,请运行以下命令:

sudo tee -a /etc/yum.repos.d/artifact-registry.repo << EOF
[YUM_REPOSITORY_NAME]
name=REPOSITORY_NAME
baseurl=https://LOCATION-yum.pkg.dev/remote/PROJECT_ID/REMOTE_REPOSITORY_NAME
enabled=1
gpgcheck=1
EOF

替换以下内容:

  • YUM_REPOSITORY_NAME,用于指定远程 Yum 代码库的唯一单字代码库 ID。
  • REPOSITORY_NAME 替换为制品库的可读名称。
  • LOCATION 替换为远程代码库的单区域或多区域位置
  • PROJECT_ID 替换为虚拟机的项目 ID。
  • REMOTE_REPOSITORY_NAME 替换为您为远程仓库指定的名称。

例如,以下命令会在 Yum 安装代码库 my-repo 时,将虚拟机配置为提取项目 my-project 和位置 us-west1 中的代码库 my-repo

sudo tee -a /etc/yum.repos.d/artifact-registry.repo << EOF
[my-repo]
name=My Repository
baseurl=https://us-west1-yum.pkg.dev/remote/my-project/my-repo
enabled=1
gpgcheck=1
EOF

后续步骤