本页面介绍了如何配置虚拟机以安装 Debian 软件包。 一个 Artifact Registry Apt 代码库
准备工作
如果目标 Apt 代码库不存在,请创建新的标准或远程代码库。您可以创建私有代码库,也可以创建不需要身份验证的公共代码库。
准备虚拟机以访问 Apt 代码库
私有仓库
选择您将用于授予访问权限的服务账号。
授予代码库访问权限 您的服务账号
准备虚拟机以访问代码库。
Compute Engine 虚拟机
Debian VM
分配
cloud-platform
API 访问权限范围 虚拟机如需了解如何设置访问权限范围,请参阅 更改实例的服务账号和访问权限范围。使用以下命令更新 Apt:
sudo apt update
在虚拟机上安装
apt-transport-artifact-registry
软件包:sudo apt install apt-transport-artifact-registry
Ubuntu VM
使用以下命令安装 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
替换为代码库的位置。向虚拟机分配
cloud-platform
API 访问权限范围。如需了解如何设置访问权限范围,请参阅 更改实例的服务账号和访问权限范围。配置虚拟机,以便使用以下命令访问 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
使用以下命令更新 Apt:
sudo apt update
在虚拟机上安装
apt-transport-artifact-registry
软件包:sudo apt install apt-transport-artifact-registry
其他虚拟机
使用以下命令安装 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
替换为 代码库配置虚拟机,以便使用以下命令访问 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
使用以下命令更新 Apt:
sudo apt update
在虚拟机上安装
apt-transport-artifact-registry
软件包:sudo apt install apt-transport-artifact-registry
在
/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 文件的路径。
公共代码库
配置公开访问权限 代码库
如果您要在 Google Cloud 之外配置虚拟机,请准备 以访问代码库如果您要配置 Compute Engine 虚拟机,请继续执行下一步。
使用以下命令安装公开签名验证密钥 命令:
curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add -
将
LOCATION
替换为 存储库使用以下命令更新 Apt:
sudo apt update
配置虚拟机以访问标准 Apt 代码库
配置虚拟机以访问 Apt 代码库:
运行
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
将 Apt 配置为使用
echo
从您的代码库中提取软件包 命令。print-settings
例如,如需从公共代码库
my-repo
安装 在项目my-project
和位置us-central1
中,使用以下命令 命令:echo 'deb ar+https://us-central1-apt.pkg.dev/projects/my-project my-repo main'
使用以下命令更新代码库源代码:
sudo apt update
Apt 现在可以连接到代码库。
如果您创建了其他 Apt 代码库,可以将其添加到 artifact-registry.list
文件中,然后重新运行 sudo apt update
以更新代码库源。
配置虚拟机以访问远程 Apt 代码库
如需将虚拟机配置为仅使用远程 Apt 代码库(而非标准上游 Apt 代码库),请在虚拟机的 /etc/apt/sources.list
文件中将标准代码库替换为远程代码库。
授予项目级 Artifact Registry 默认写入权限 Compute Engine 服务账号:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/artifactregistry.writer
在虚拟机所在的行中,点击 SSH。
系统会打开一个新窗口,其中包含虚拟机上的终端会话。
打开虚拟机的
/etc/apt/sources.list
文件并找到 您要替换为新的远程代码库的代码库删除标准代码库行,并将其替换为以下代码:
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
替换为组件名称的空格分隔列表。
例如,以下代码会将虚拟机配置为使用
buster
作为组件main
、contrib
和non-free
的上游代码库,从位置us-east1
的项目my-project
中的代码库my-repo
提取软件包。deb ar+https://us-east1-apt.pkg.dev/remote/my-project/my-repo buster main contrib non-free
使用以下命令更新代码库源:
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.list
或 sources.list
文件,然后重新运行 sudo apt update
更新代码库源代码
配置对 Apt 代码库的 HTTP 访问权限
如果您使用的是不支持 SSL 加密的旧版客户端工具,则可以配置对 Apt 仓库的公开访问权限,并通过 HTTP 访问该仓库。如果请求中包含身份验证令牌,系统会拒绝发送到可公开读取的代码库的 HTTP 请求。
要将 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 替换为代码库名称。
例如,如需从公共代码库
my-repo
安装 在项目my-project
和位置us-central1
中使用 HTTP 以下命令:echo 'deb http://us-central1-apt.pkg.dev/projects/my-project my-repo main' >> /etc/apt/sources.list.d/artifact-registry.list
使用以下命令更新代码库源代码:
sudo apt update
Apt 现在可以连接到代码库。
如果您创建了其他 Apt 代码库,则可以将其添加到
artifact-registry.list
文件,然后重新运行 sudo apt update
以更新
代码库源代码