Découvrez les étapes de dépannage qui pourraient vous être utiles si vous rencontrez des problèmes des problèmes de gestion des packages OS dans Artifact Registry.
Pour savoir comment résoudre les problèmes liés à l'API Remote d'Artifact Registry pour les packages du système d'exploitation, consultez Résoudre les problèmes liés aux dépôts distants
Problèmes d'authentification et d'autorisation
Vous ne pouvez pas vous connecter à un dépôt pour effectuer des actions telles que l'installation d'un package.
La sortie du gestionnaire de paquets inclut une erreur 401
ou 403
, ce qui indique des problèmes d'authentification ou d'autorisation.
Exemples d'erreurs liées à Apt:
Err:1 ar+https://us-central1-apt.pkg.dev/projects/my-project my-package Release Error downloading: code 401
E: Failed to fetch https://us-central1-apt.pkg.dev/projects/my-project/dists/quickstart-apt-repo/main/binary-amd64/Packages 403 Forbidden [IP: 74.125.20.82 443] E: Some index files failed to download. They have been ignored, or old ones used instead.
Exemple d'erreur Yum:
/repodata/repomd.xml: [Errno 14] HTTPS Error 403 - Forbidden
Il existe un certain nombre de causes possibles à ces erreurs. Assurez-vous que votre VM répond aux conditions suivantes :
Vérifiez que la VM est associée à un compte de service.
VM Compute Engine
- Accédez à la page Instances de VM.
Dans la liste des VM, cliquez sur le nom de votre VM.
Dans l'onglet Détails, le compte de service et les niveaux d'accès apparaissent sous Gestion des API et des identités :
Par défaut, les VM Compute Engine utilisent le compte de service par défaut Compute Engine et disposent d'un ensemble limité de champs d'application. Adresse e-mail du compte de service par défaut est au format
PROJECT_NUMBER-compute@developer.gserviceaccount.com
.Pour modifier le compte de service ou associer un compte de service à une VM, consultez la Modifier le compte de service et les niveaux d'accès d'une instance.
Autre VM
Pour les autres VM, vous devez disposer d'un compte de service pour agir en leur nom.
Créez un compte de service si vous n'en avez pas.
Attribuez le rôle Lecteur Artifact Registry (
roles.artifactregistry.reader
) lorsque vous créez le compte de service afin de ne pas avoir à configurer les autorisations dans une étape distincte.
Assurez-vous que le compte de service de la VM dispose d'autorisations de lecture pour le dépôt, ainsi que de l'étendue d'accès de l'API
cloud-platform
.VM Compute Engine
Artifact Registry récupère automatiquement les identifiants du compte de service de la VM. La requise varie selon que vous utilisez ou non la configuration ou un compte de service géré par l'utilisateur.
- Compte de service par défaut
Si la VM utilise le compte de service par défaut, ce service dispose du rôle Éditeur par défaut, ce qui inclut des autorisations de lecture vers les dépôts d'un même projet. Si le dépôt se trouve dans un autre que la VM, accordez le rôle de lecteur Artifact Registry au compte de service de la VM.
De plus, le compte de service par défaut ne dispose pas de toutes les autorisations Niveaux d'accès aux API.
Pour définir le niveau d'accès
cloud-platform
,Arrêtez l'instance de VM en remplaçant
INSTANCE
par le nom de l'instance de VM.gcloud compute instances stop INSTANCE
Définissez le niveau d'accès:
gcloud compute instances set-service-account INSTANCE \ --scopes=cloud-platform
Redémarrez l'instance de VM.
gcloud compute instances start INSTANCE
- Compte de service géré par l'utilisateur
- Si la VM utilise un compte de service géré par l'utilisateur, accordez le rôle
Lecteur Artifact Registry pour le compte de service de la VM.
Les comptes de service gérés par l'utilisateur disposent du niveau d'accès
cloud-platform
.
Autre VM
Accordez le rôle de lecteur Artifact Registry au service de VM. de service. Par défaut, les comptes de service gérés par l'utilisateur disposent du rôle
cloud-platform
le niveau d'accès requis.Vérifiez que vous avez suivi la procédure de préparation de la VM à accéder au un dépôt de clés. Consultez les instructions de préparation pour Apt ou Yum.
Vérifiez que vous avez correctement configuré Apt ou Yum pour accéder au dépôt.
Si vous vous connectez à un dépôt Apt depuis une VM Compute Engine, assurez-vous assurez-vous que l'URL du dépôt inclut le préfixe
ar+
.
Problèmes liés à l'assistant d'identification
Le message d'erreur suivant s'affiche lorsque la VM ne parvient pas à localiser les identifiants Apt outil d'aide:
E: Unable to locate package apt-transport-artifact-registry
L'erreur se produit lorsque vous essayez d'installer apt-transport-artifact-registry
sur une VM créée à partir d'une image qui n'inclut pas l'API
la clé de signature de dépôt.
Pour résoudre ce problème, procédez comme suit :
Installez la clé de signature sur la VM:
VM Debian
Installez les clés de signature du dépôt Apt à l'aide de la commande suivante:
curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add -
Remplacez
LOCATION
par l'emplacement un dépôt de clés.VM Ubuntu
Installez les clés de signature du dépôt Apt à l'aide de la commande suivante :
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 -
Remplacez
LOCATION
par l'emplacement du dépôt.Réessayez la Étapes de préparation des VM
Problèmes liés au plug-in d'authentification
Le message d'erreur suivant s'affiche en cas de problème avec Yum ou DNF plug-in d'authentification:
Plugin "artifact-registry" can't be imported
Cette erreur peut se produire pour plusieurs raisons. Pour résoudre l'erreur, essayez d'exécuter la pour confirmer les dépendances, rechercher des problèmes Python d'autres problèmes sous-jacents possibles.
Pour exécuter le plug-in directement, utilisez l'une des commandes suivantes:
Pour le plug-in Yum:
python /usr/lib/yum-plugins/artifact-registry.py
Pour le plug-in DNF :
python3 /usr/lib/pythonVERSION-NUMBER/site-packages/dnf-plugins/artifact-registry.py
Remplacez
VERSION-NUMBER
par la version Python par défaut de la distribution Linux. Par exemple, Enterprise Linux 8 inclut Python 3.6.Vous pouvez lister les fichiers du package du plug-in installé pour vérifier le nom de bibliothèque Python.
rpm -ql dnf-plugin-artifact-registry|grep artifact-registry.py
Artefacts récemment importés manquants
Si votre client Apt ou Yum ne trouve pas un package récemment importé ou importé dans votre dépôt, cela peut être dû au fait que le processus de regénération L'index des packages Apt ou Yum n'est pas encore complet.
Pour les petits dépôts, régénérer le fichier d'index Apt ou Yum secondes. Pour les dépôts plus volumineux, la réindexation peut prendre plusieurs minutes. plus longtemps.
Pour vérifier qu'un package a bien été ajouté au dépôt, utilisez la Google Cloud CLI pour répertorier les fichiers du package. Exécutez la commande suivante :
gcloud artifacts files list \
--package=PACKAGE \
--project=PROJECT-ID \
--repository=REPOSITORY \
--location=LOCATION
Par exemple, vous pouvez vérifier que le package python-gflags
nommé python3-gflags_1.5.1-5_all.deb
a bien été importé dans le dépôt us-central1-apt.pkg.dev\apt-project\apt-repo
à l'aide de la commande suivante :
gcloud artifacts files list \
--package=python-gflags \
--project=apt-project \
--repository=apt-repo \
--location=us-central1
Si le package a été importé correctement, le fichier apparaît dans la sortie avec un identifiant unique dans le nom du fichier, comme dans l'exemple suivant :
FILE CREATE_TIME UPDATE_TIME SIZE (MB) OWNER
pool/python3-gflags_1.5.1-5_all_2414c7af6a64c99a5f488aad366d637a.deb 2023-01-12T20:39:53 2023-01-12T20:39:53 0.035 projects/apt-project/locations/us-central1/repositories/apt-repo/packages/python3-gflags/versions/1.5.1-5
Erreur d'authentification pour certains packages importés ou importés
Si le délai d'importation ou de transfert des fichiers est supérieur à l'expiration du jeton d'authentification les importations échouent au-delà de cette période. Les jetons expirent au bout de 60 minutes après les avoir obtenus. Si le jeton a expiré, une erreur semblable à l'exemple suivant s'affiche dans le résultat de la commande d'importation.
errors:
- error:
code: 16
message: The request does not have valid authentication credentials.
gcsSource:
uris:
- gs://my-bucket/debs/python/python3-gflags_1.5.1-5_all.deb
Pour résoudre ce problème:
- Essayez d'importer le package concerné uniquement pour vérifier ajouter le package individuellement au lieu d'effectuer une importation par lots.
- Si plusieurs packages ont échoué, importez-les ou importez-les en plus petits lots afin que l'opération ne dépasse pas le délai d'expiration du jeton.