Scopri i passaggi per la risoluzione dei problemi, utili in caso di problemi nella gestione dei pacchetti del sistema operativo in Artifact Registry.
Per informazioni sulla risoluzione dei problemi relativi ai repository remoti di Artifact Registry per i pacchetti del sistema operativo, vedi Risolvere i problemi relativi ai repository remoti.Problemi di autenticazione e autorizzazioni
Non puoi connetterti a un repository per azioni come l'installazione di un pacchetto.
L'output del gestore dei pacchetti include un errore 401 o 403, che
indica problemi di autenticazione o autorizzazioni.
Esempi di errori Apt:
Err:1 ar+https://us-west1-apt.pkg.dev/projects/my-project my-package Release Error downloading: code 401
E: Failed to fetch https://us-west1-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.
Esempio di errore Yum:
/repodata/repomd.xml: [Errno 14] HTTPS Error 403 - Forbidden
Esistono diverse possibili cause di questi errori. Assicurati che la tua VM soddisfi i seguenti requisiti:
Verifica che alla VM sia associato un account di servizio.
VM di Compute Engine
- Vai alla pagina Istanze VM.
Nell'elenco delle VM, fai clic sul nome della tua VM.
Nella scheda Dettagli, il account di servizio e gli ambiti di accesso vengono visualizzati in Gestione API e identità.
Per impostazione predefinita, le VM Compute Engine utilizzano il service account predefinito di Compute Engine e dispongono di un insieme limitato di ambiti di accesso. L'indirizzo email dell'account di servizio predefinito è nel formato
PROJECT_NUMBER-compute@developer.gserviceaccount.com.A seconda della configurazione della policy dell'organizzazione, al service account predefinito potrebbe essere assegnato automaticamente il ruolo Editor nel progetto. Ti consigliamo vivamente di disattivare la concessione automatica dei ruoli forzando l'applicazione del vincolo
iam.automaticIamGrantsForDefaultServiceAccountsdella policy dell'organizzazione. Se hai creato la tua organizzazione dopo il 3 maggio 2024, questo vincolo viene imposto per impostazione predefinita.Se disattivi la concessione automatica dei ruoli, devi decidere quali ruoli concedere ai service account predefiniti, quindi concedere personalmente questi ruoli.
Se il service account predefinito dispone già del ruolo Editor, ti consigliamo di sostituire il ruolo Editor con ruoli meno permissivi.Per modificare in sicurezza i ruoli del service account, utilizza Policy Simulator per vedere l'impatto della modifica, quindi concedi e revoca i ruoli appropriati.
Per modificare il account di servizio o collegarne uno a una VM, consulta la sezione Modifica del account di servizio e degli ambiti di accesso per un'istanza.
Altra VM
Per le altre VM, devi disporre di un account di servizio che agisca per conto della VM.
Se non hai un account di servizio, creane uno.
Concedi il ruolo Lettore Artifact Registry (
roles.artifactregistry.reader) durante la creazione del account di servizio, in modo da non dover configurare le autorizzazioni in un passaggio separato.
Assicurati che il account di servizio della VM disponga delle autorizzazioni di lettura per il repository e dell'ambito di accesso all'API
cloud-platform.VM di Compute Engine
Artifact Registry recupera automaticamente le credenziali del account di servizio VM. Se il repository si trova in un progetto diverso dalla VM, devi concedere il ruolo Lettore di Artifact Registry al service account VM. Devi anche assicurarti che la VM abbia l'ambito di accesso
cloud-platform.Per impostare l'ambito di accesso
cloud-platform:Arresta l'istanza VM, sostituendo
INSTANCEcon il nome dell'istanza VM.gcloud compute instances stop INSTANCEImposta l'ambito di accesso:
gcloud compute instances set-service-account INSTANCE \ --scopes=cloud-platformRiavvia l'istanza VM.
gcloud compute instances start INSTANCE
Altra VM
Concedi il ruolo Lettore Artifact Registry al service account VM. Per impostazione predefinita, i service account gestiti dall'utente hanno l'ambito di accesso
cloud-platform.Verifica di aver seguito i passaggi per preparare la VM ad accedere al repository. Consulta le istruzioni per la preparazione di Apt o Yum.
Verifica di aver configurato correttamente Apt o Yum per accedere al repository.
Se ti connetti a un repository Apt da una VM di Compute Engine, assicurati che l'URL del repository includa il prefisso
ar+.
Problemi con l'helper delle credenziali
Il seguente messaggio di errore viene visualizzato quando la VM non riesce a trovare l'helper delle credenziali Apt:
E: Unable to locate package apt-transport-artifact-registry
L'errore si verifica quando provi a installare il pacchetto apt-transport-artifact-registry
su una VM creata da un'immagine che non include la chiave di firma del repository Apt.
Per risolvere il problema, segui questi passaggi:
Installa la chiave di firma sulla VM:
VM Debian
Installa le chiavi di firma del repository Apt utilizzando il seguente comando:
curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add -Sostituisci
LOCATIONcon la località regionale o multiregionale del repository.VM Ubuntu
Installa le chiavi di firma del repository Apt utilizzando il seguente comando:
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 -Sostituisci
LOCATIONcon la località regionale o multiregionale del repository.Riprova i passaggi di preparazione della VM.
Problemi relativi al plug-in di autenticazione
Il seguente messaggio di errore viene visualizzato quando si verifica un problema con il plug-in di autenticazione Yum o DNF:
Plugin "artifact-registry" can't be imported
Questo errore può verificarsi per diversi motivi. Per risolvere l'errore, prova a eseguire il plug-in direttamente per verificare le dipendenze, controllare la presenza di problemi di Python o rivelare altri possibili problemi sottostanti.
Per eseguire il plug-in direttamente, utilizza uno dei seguenti comandi:
Per il plug-in Yum:
python /usr/lib/yum-plugins/artifact-registry.pyPer il plug-in DNF:
python3 /usr/lib/pythonVERSION-NUMBER/site-packages/dnf-plugins/artifact-registry.pySostituisci
VERSION-NUMBERcon la versione predefinita di Python per la distribuzione Linux. Ad esempio, Enterprise Linux 8 include Python 3.6.Puoi elencare i file nel pacchetto del plug-in installato per verificare il nome della directory della libreria Python.
rpm -ql dnf-plugin-artifact-registry|grep artifact-registry.py
Elementi caricati di recente mancanti
Se il client Apt o Yum non trova un pacchetto caricato o importato di recente nel repository, il motivo potrebbe essere che la procedura di rigenerazione dell'indice dei pacchetti Apt o Yum non è ancora completata.
Per i repository di piccole dimensioni, la rigenerazione del file indice Apt o Yum può richiedere diversi secondi. Per i repository più grandi, la reindicizzazione potrebbe richiedere diversi minuti o più.
Per verificare che un pacchetto sia stato aggiunto correttamente al repository, utilizza Google Cloud CLI per elencare i file nel pacchetto. Esegui il comando:
gcloud artifacts files list \
--package=PACKAGE \
--project=PROJECT-ID \
--repository=REPOSITORY \
--location=LOCATION
Ad esempio, puoi verificare che il pacchetto python-gflags denominato
python3-gflags_1.5.1-5_all.deb sia stato caricato correttamente nel repository
us-west1-apt.pkg.dev\apt-project\apt-repo con il comando:
gcloud artifacts files list \
--package=python-gflags \
--project=apt-project \
--repository=apt-repo \
--location=us-west1
Se il pacchetto è stato caricato correttamente, il file viene visualizzato nell'output con un identificatore univoco nel nome file, simile al seguente esempio:
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-west1/repositories/apt-repo/packages/python3-gflags/versions/1.5.1-5
Errore di autenticazione per alcuni pacchetti caricati o importati
Se il tempo necessario per importare o caricare i file supera il periodo di scadenza del token di autenticazione, i caricamenti successivi al periodo di scadenza non andranno a buon fine. I token scadono 60 minuti dopo che li hai ottenuti. Se il token è scaduto, nell'output del comando di importazione viene visualizzato un errore simile al seguente esempio.
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
Per risolvere il problema:
- Prova a caricare o importare solo il pacchetto specifico per verificare di poterlo aggiungere singolarmente anziché in un'importazione batch.
- Se più pacchetti non sono stati caricati, importa o carica in batch più piccoli in modo che l'operazione non superi il periodo di scadenza del token.