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

本页面介绍了如何配置虚拟机,以从 Artifact Registry Apt 代码库安装 Debian 软件包。

准备工作

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

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

私有代码库

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

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

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

    Compute Engine 虚拟机

    Debian 虚拟机

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

    2. 使用以下命令更新 Apt:

      sudo apt update
      
    3. 在虚拟机上安装 apt-transport-artifact-registry 软件包:

      sudo apt install apt-transport-artifact-registry
      

    Ubuntu 虚拟机

    1. 使用以下命令安装 Apt 代码库签名密钥:

      curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add - && curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
      

      LOCATION 替换为代码库的位置。

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

    3. 使用以下命令配置虚拟机以访问 Artifact Registry 软件包:

      echo 'deb http://packages.cloud.google.com/apt apt-transport-artifact-registry-stable main' | sudo tee -a /etc/apt/sources.list.d/artifact-registry.list
      
    4. 使用以下命令更新 Apt:

      sudo apt update
      
    5. 在虚拟机上安装 apt-transport-artifact-registry 软件包:

      sudo apt install apt-transport-artifact-registry
      

    其他虚拟机

    1. 使用以下命令安装 Apt 代码库签名密钥:

      curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add - && curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
      

      LOCATION 替换为代码库的位置。

    2. 使用以下命令配置虚拟机以访问 Artifact Registry 软件包:

      echo 'deb http://packages.cloud.google.com/apt apt-transport-artifact-registry-stable main' | sudo tee -a /etc/apt/sources.list.d/artifact-registry.list
      
    3. 使用以下命令更新 Apt:

      sudo apt update
      
    4. 在虚拟机上安装 apt-transport-artifact-registry 软件包:

      sudo apt install apt-transport-artifact-registry
      
    5. /etc/apt/apt.conf.d/90artifact-registry 文件中找到 #Service-Account-JSON "/path/to/creds.json"; 行,然后取消注释该行并添加服务帐号密钥的路径。

      配置文件条目:

      Service-Account-JSON  "PATH_TO_SERVICE_ACCOUNT_KEY";
      

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

公共存储库

  1. 配置对代码库的公开访问权限

  2. 如果您要在 Google Cloud 之外配置虚拟机,请准备好机器以访问代码库。如果您要配置 Compute Engine 虚拟机,请继续执行下一步。

    使用以下命令安装公钥验证密钥:

    curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add -
    

    LOCATION 替换为代码库的位置。

  3. 使用以下命令更新 Apt:

    sudo apt update
    

配置虚拟机以访问标准 Apt 代码库

配置虚拟机以访问 Apt 代码库:

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

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

    替换以下内容:

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

    输出类似于以下内容:

    # To configure your package manager with this repository:
    
    # Update Apt:
    sudo apt update
    
    # Install the Apt credential helper:
    sudo apt install apt-transport-artifact-registry
    
    # Configure your VM to access Artifact Registry packages using the following
    # command:
    
    echo "deb ar+https://LOCATION-apt.pkg.dev/projects/PROJECT REPOSITORY main" | sudo tee -a /etc/apt/sources.list.d/artifact-registry.list
    
    # Update Apt:
    sudo apt update
    
  2. 将 Apt 配置为使用 print-settings 命令的输出中的 echo 命令从代码库中提取软件包。

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

    echo 'deb ar+https://us-central1-apt.pkg.dev/projects/my-project my-repo main'
    
  3. 使用以下命令更新代码库源代码:

    sudo apt update
    

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

如果您创建了其他 Apt 代码库,则可以将其添加到 artifact-registry.list 文件中,然后重新运行 sudo apt update 以更新代码库来源。

配置虚拟机以访问远程 Apt 代码库

如需将虚拟机配置为仅使用远程 Apt 代码库而不是标准的上游 Apt 代码库,请在虚拟机的 /etc/apt/sources.list 文件中将标准代码库替换为您的远程代码库。

  1. 向默认 Compute Engine 服务帐号授予项目级 Artifact Registry 写入权限:

     gcloud projects add-iam-policy-binding PROJECT_ID \
       --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
       --role=roles/artifactregistry.writer
    
  2. 转到“虚拟机实例”页面

  3. 在您的虚拟机所在的行中,点击 SSH

    系统会打开一个包含虚拟机上的终端会话的新窗口。

  4. 打开虚拟机的 /etc/apt/sources.list 文件,并找到要替换为新远程代码库的标准代码库。

  5. 删除标准代码库行,并将其替换为以下代码:

    deb ar+https://LOCATION-apt.pkg.dev/remote/PROJECT_ID/REMOTE_REPOSITORY_NAME UPSTREAM_REPOSITORY_NAME COMPONENTS
    

    替换以下内容:

    • LOCATION 替换为远程代码库的单区域或多区域位置
    • PROJECT_ID 替换为虚拟机的项目 ID。
    • REMOTE_REPOSITORY_NAME 替换为您为远程代码库指定的名称。
    • UPSTREAM_REPOSITORY_NAME 替换为遥控器的上游代码库的名称。
    • 使用以空格分隔的组件名称列表的 COMPONENTS

    例如,以下代码将虚拟机配置为从位置 us-east1 的项目 my-project 的代码库 my-repo 中提取软件包,并使用 buster 作为组件 maincontribnon-free 的上游代码库。

    deb ar+https://us-east1-apt.pkg.dev/remote/my-project/my-repo buster main contrib non-free
    
  6. 使用以下命令更新代码库源代码:

    sudo apt update
    

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

将远程 Apt 代码库用作备份

如果您希望将标准上游保留为第一个选项,并将远程代码库添加为回退选项,则可以在 sources.list 文件中保留标准上游,并将远程代码库附加到 sources.list 文件的末尾,也可以在 sources.list.d 文件夹中创建一个新列表。

如需在 sources.list.d 文件夹中创建新的 artifact-registry.list 文件,请运行以下命令:

echo 'deb ar+https://LOCATION-apt.pkg.dev/remote/PROJECT_ID/REMOTE_REPOSITORY_NAME UPSTREAM_REPOSITORY_NAME COMPONENTS' | sudo tee -a  /etc/apt/sources.list.d/artifact-registry.list

替换以下内容:

  • LOCATION 替换为远程代码库的单区域或多区域位置
  • PROJECT_ID 替换为虚拟机的项目 ID。
  • REMOTE_REPOSITORY_NAME 替换为您为远程代码库指定的名称。
  • UPSTREAM_REPOSITORY_NAME 替换为遥控器的上游代码库的名称。
  • COMPONENTS,带有一个以空格分隔的组件名称列表。

如果您创建了其他 Apt 代码库,则可以将其添加到 artifact-registry.listsources.list 文件中,然后重新运行 sudo apt update 以更新代码库源代码。

配置对 Apt 代码库的 HTTP 访问权限

如果使用不支持 SSL 加密的旧版客户端工具,您可以配置对 Apt 代码库的公开访问权限,并通过 HTTP 对其进行访问。如果请求附带身份验证令牌,使用 HTTP 发送到可公开读取的代码库的请求将被拒绝。

  1. 配置对代码库的公开访问权限

  2. 如需将 Apt 配置为使用 HTTP 从代码库中提取软件包,请运行以下命令:

     echo 'deb http://LOCATION-apt.pkg.dev/projects/PROJECT_ID REPOSITORY main' >> /etc/apt/sources.list.d/artifact-registry.list
    

    替换以下内容:

    • LOCATION 替换为代码库的位置。
    • PROJECT_ID 替换为代码库的项目 ID。
    • REPOSITORY 替换为代码库名称。

    例如,如需使用 HTTP 在项目 my-project 和位置 us-central1 中从公共代码库 my-repo 安装软件包,请使用以下命令:

    echo 'deb http://us-central1-apt.pkg.dev/projects/my-project my-repo main' >> /etc/apt/sources.list.d/artifact-registry.list
    
  3. 使用以下命令更新代码库源代码:

    sudo apt update
    

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

如果您创建了其他 Apt 代码库,则可以将其添加到 artifact-registry.list 文件中,然后重新运行 sudo apt update 以更新代码库来源。

后续步骤