Informazioni sui passi per la risoluzione dei problemi, utili in caso di problemi nella gestione dei pacchetti OS in Artifact Registry.
Per informazioni sulla risoluzione dei problemi relativi ai repository remoti di Artifact Registry per i pacchetti OS, 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 di pacchetti include un errore 401 o 403, che indica problemi con l'autenticazione o le autorizzazioni.
Esempi di errori di 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 di Yum:
/repodata/repomd.xml: [Errno 14] HTTPS Error 403 - Forbidden
Esistono diverse cause possibili per questi errori. Assicurati che la 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 VM.
Nella scheda Dettagli, il account di servizio e gli ambiti di accesso vengono visualizzati in Gestione di API e identità.
Per impostazione predefinita, le VM di Compute Engine utilizzano il service account predefinito di Compute Engine e hanno un insieme limitato di ambiti di accesso. L'indirizzo email del account di servizio predefinito è nel formato
PROJECT_NUMBER-compute@developer.gserviceaccount.com.A seconda della configurazione della policy dell'organizzazione, al account di servizio 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 account di servizio predefinito dispone già del ruolo Editor, ti consigliamo di sostituire il ruolo Editor con ruoli meno permissivi.Per modificare in sicurezza i ruoli del account di servizio, utilizza Policy Simulator per vedere l'impatto della modifica, quindi concedi e revoca i ruoli appropriati.
Per modificare il account di servizio o collegare un account di servizio a una VM, vedi il Modificare il account di servizio e gli ambiti di accesso per un'istanza.
Altre VM
Per altre VM, devi disporre di un account di servizio che agisca per conto della VM.
Se non hai un account di servizio, allora creane uno.
Concedi il ruolo Lettore di 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 API
cloud-platform.VM di Compute Engine
Artifact Registry recupera automaticamente le credenziali del account di servizio della VM. Se il repository si trova in un progetto diverso dalla VM, devi concedere il ruolo Lettore di Artifact Registry al service account della 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
Altre VM
Concedi il ruolo Lettore di Artifact Registry al service account della 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 di 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 relativi all'helper delle credenziali
Viene visualizzato il seguente messaggio di errore quando la VM non riesce a trovare l'helper delle credenziali di 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
Viene visualizzato il seguente messaggio di errore 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 confermare le dipendenze, verificare 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
Artefatti caricati di recente mancanti
Se il client Apt o Yum non trova un pacchetto caricato o importato di recente nel repository, è possibile che la procedura di rigenerazione dell'indice dei pacchetti Apt o Yum non sia ancora stata completata.
Per i repository di piccole dimensioni, la rigenerazione del file di indice Apt o Yum può richiedere alcuni 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 oltre il periodo di scadenza non andranno a buon fine. I token scadono 60 minuti dopo averli 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 se puoi aggiungere il pacchetto singolarmente anziché in un'importazione batch.
- Se più pacchetti non sono stati caricati, importali o caricali in batch più piccoli in modo che l'operazione non superi il periodo di scadenza del token.