Store Apt packages in Artifact Registry
This quickstart shows you how to set up a private Artifact Registry Apt repository, add a Debian package to the repository, and install the package on a Compute Engine VM running a Debian-based operating system.
To learn more about managing Debian packages, see Working with Debian packages.
Before you begin
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Launch Cloud Shell
Cloud Shell comes preinstalled with the Google Cloud CLI. The gcloud CLI provides the primary command-line interface for Google Cloud.
Launch Cloud Shell:
Go to Google Cloud console.
In the Google Cloud console, click Activate Cloud Shell
.
A Cloud Shell session opens inside a frame lower on the console.
You'll use this shell to run the gcloud commands to create a VM and a
repository.
Create a repository
Create the repository for your artifacts.
Create the repository:
Console
Open the Repositories page in the Google Cloud console.
Click Create Repository.
Specify
quickstart-apt-repoas the repository name.Select Apt as the format.
Under Location Type, select Region and then choose the location
us-west1.Click Create.
The repository is added to the repository list.
gcloud
In Cloud Shell, run the following command to create a new Apt repository in the current project named
quickstart-apt-repoin the locationus-west1.gcloud artifacts repositories create quickstart-apt-repo \ --repository-format=apt \ --location=us-west1 \ --description="Apt repository"Run the following command to verify that your repository was created:
gcloud artifacts repositories list
You can now add a package to the repository. Cloud Shell uses a Google-built Ubuntu image, not Debian. To manage Debian packages in the repository, you will use a VM that uses a Debian OS image.
Create a VM
Create a new Compute Engine VM where you'll install the sample package.
In Cloud Shell, run the following command to create a VM instance
named quickstart-apt-vm:
gcloud compute instances create quickstart-apt-vm \
--image-family=debian-12 \
--image-project=debian-cloud \
--scopes=cloud-platform
By default, the VM does not have the required access scopes for
working with the repository. The --scopes flag sets the access scope
for the VM to cloud-platform.
Go to the VM instances page.
In the row with your VM, click SSH. A new window opens with a terminal session on the VM.
Add a package to the repository
You can upload a package to a repository using the Google Cloud CLI, or you can import a package that is stored in Cloud Storage. If you build packages using Cloud Build, the build can store the packages in Cloud Storage for you to import.For this quickstart, you upload a sample file using the
gcloud artifacts apt upload command.
Run
gcloud initto initialize the Google Cloud CLI on your VM.Update Apt:
sudo apt updateDownload the curl package with the command:
apt download curlApt downloads the latest version of the package that is available from your configured Apt repositories.
Get:1 file:/etc/apt/mirrors/debian.list Mirrorlist [30 B] Get:2 https://deb.debian.org/debian bookworm/main amd64 curl amd64 7.88.1-10+deb12u14 [316 kB] Fetched 316 kB in 0s (3078 kB/s)Run
lsto get the filename of the curl package. The filename is similar tocurl_7.88.1-10+deb12u14_amd64.deb.To simplify
gcloudcommands, set the default repository toquickstart-apt-repoand the default location tous-west1. After the values are set, you don't need to specify them ingcloudcommands that require a repository or a location.To set the repository, run the command:
gcloud config set artifacts/repository quickstart-apt-repoTo set the location, run the command:
gcloud config set artifacts/location us-west1For more information about these commands, see the gcloud config set documentation.
Run the
gcloud artifacts apt uploadto upload the package to the repository:gcloud artifacts apt upload quickstart-apt-repo \ --source=FILE_NAMEReplace
FILE_NAMEwith the path to the curl package.
View the package in the repository
Verify that your package was added to the repository.
Console
Open the Repositories page in the Google Cloud console.
In the repository list, click the quickstart-apt-repo repository.
The Packages page lists the packages in the repository.
gcloud
To list the packages in the quickstart-apt-repo repository, run the command:
gcloud artifacts packages list
To view versions for a package in quickstart-apt-repo, run the command:
gcloud artifacts versions list --package=apt-dpkg-ref
Configure the package manager
To install a package on the VM, add the repository you created to the Apt configuration file that defines package repositories.
Install the Apt credential helper on the VM to enable Apt to perform authentication:
sudo apt install apt-transport-artifact-registryConfigure your VM to access Artifact Registry packages:
echo 'deb ar+https://us-west1-apt.pkg.dev/projects/PROJECT quickstart-apt-repo main' | sudo tee -a /etc/apt/sources.list.d/artifact-registry.listReplace PROJECT with your Google Cloud project ID.
Install the package
Install the package that you added to the repository.
Update the list of available packages:
sudo apt updateInstall the package from your repository.
sudo apt install curl/quickstart-apt-repoThe returned installation information looks like the following example:
Reading package lists... Done Building dependency tree... Done Reading state information... Done Selected version '7.88.1-10+deb12u14' (quickstart-apt-repo:quickstart-apt-repo, Debian:12.12/oldstable [amd64]) for 'curl' The following additional packages will be installed: libcurl3-gnutls libcurl4 The following packages will be upgraded: curl libcurl3-gnutls libcurl4 3 upgraded, 0 newly installed, 0 to remove and 77 not upgraded. Need to get 1093 kB of archives. After this operation, 0 B of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 file:/etc/apt/mirrors/debian.list Mirrorlist [30 B] Get:2 https://deb.debian.org/debian bookworm/main amd64 libcurl4 amd64 7.88.1-10+deb12u14 [392 kB] Get:3 https://deb.debian.org/debian bookworm/main amd64 libcurl3-gnutls amd64 7.88.1-10+deb12u14 [386 kB] Get:4 ar+https://us-west1-apt.pkg.dev/projects/PROJECT quickstart-apt-repo/main amd64 curl amd64 7.88.1-10+deb12u14 [316 kB] Fetched 1093 kB in 1s (947 kB/s) Reading changelogs... Done (Reading database ... 72080 files and directories currently installed.) Preparing to unpack .../curl_7.88.1-10+deb12u14_amd64.deb ... Unpacking curl (7.88.1-10+deb12u14) over (7.88.1-10+deb12u12) ... Preparing to unpack .../libcurl4_7.88.1-10+deb12u14_amd64.deb ... Unpacking libcurl4:amd64 (7.88.1-10+deb12u14) over (7.88.1-10+deb12u12) ... Preparing to unpack .../libcurl3-gnutls_7.88.1-10+deb12u14_amd64.deb ... Unpacking libcurl3-gnutls:amd64 (7.88.1-10+deb12u14) over (7.88.1-10+deb12u12) ... Setting up libcurl3-gnutls:amd64 (7.88.1-10+deb12u14) ... Setting up libcurl4:amd64 (7.88.1-10+deb12u14) ... Setting up curl (7.88.1-10+deb12u14) ... Processing triggers for man-db (2.11.2-2) ... Processing triggers for libc-bin (2.36-9+deb12u10) ...
Clean up
To avoid incurring charges to your Google Cloud account for the resources used on this page, follow these steps.
Before you remove the repository, ensure that any packages you want to keep are available in another location.
To delete the repository:
Console
Open the Repositories page in the Google Cloud console.
In the repository list, select the quickstart-apt-repo repository.
Click Delete.
gcloud
To delete the
quickstart-apt-reporepository, run the following command:gcloud artifacts repositories delete quickstart-apt-repoIf you want to remove the default repository and location settings that you configured for the active
gcloudconfiguration, run the following commands:gcloud config unset artifacts/repository gcloud config unset artifacts/location
To delete the VM you created, run the following command:
gcloud compute instances delete quickstart-apt-vm
What's next
- Learn about working with Deb packages.
- Read about DevOps and explore the DevOps research program.