Obtén información sobre los pasos para solucionar problemas que pueden servirte si tienes dificultades para administrar paquetes de SO en Artifact Registry.
Para obtener información sobre cómo resolver problemas con los repositorios remotos de Artifact Registry para paquetes de SO, consulta Soluciona problemas de repositorios remotos.Problemas de autenticación y permisos
No puedes conectarte a un repositorio para realizar acciones como instalar un paquete.
El resultado del administrador de paquetes incluye un error 401 o 403, que indica problemas con la autenticación o los permisos.
Ejemplos de errores de 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.
Ejemplo de error de Yum:
/repodata/repomd.xml: [Errno 14] HTTPS Error 403 - Forbidden
Estos errores pueden deberse a varios motivos. Asegúrate de que tu VM cumpla con los siguientes requisitos:
Verifica que la VM tenga una cuenta de servicio asociada.
VM de Compute Engine
- Ve a la página Instancias de VM.
En la lista de VMs, haz clic en el nombre de tu VM.
En la pestaña Detalles, la cuenta de servicio y los permisos de acceso aparecen en Administración de identidades y APIs.
De forma predeterminada, las VMs de Compute Engine usan la cuenta de servicio predeterminada de Compute Engine y tienen un conjunto limitado de permisos de acceso. La dirección de correo electrónico de la cuenta de servicio predeterminada tiene el formato
PROJECT_NUMBER-compute@developer.gserviceaccount.com.Según la configuración de la política de la organización, es posible que a la cuenta de servicio predeterminada se le otorgue automáticamente el rol de editor en tu proyecto. Te recomendamos inhabilitar la concesión automática de roles; para ello, aplica la restricción de la política de la organización
iam.automaticIamGrantsForDefaultServiceAccounts. Si creaste tu organización después del 3 de mayo de 2024, esta restricción se aplica de forma predeterminada.Si inhabilitas la concesión automática de roles, debes decidir qué roles se deben otorgar a las cuentas de servicio predeterminadas y, luego, otorgar estos roles a ti mismo.
Si la cuenta de servicio predeterminada ya tiene el rol de editor, te recomendamos que reemplaces el rol de editor por roles menos permisivos.Para modificar de forma segura los roles de la cuenta de servicio, usa Policy Simulator para ver el impacto del cambio y, luego, otorga y revoca los roles adecuados.
Para cambiar la cuenta de servicio o adjuntar una cuenta de servicio a una VM, consulta Cambia la cuenta de servicio y los permisos de acceso para una instancia.
Otra VM
En el caso de otras VMs, debes tener una cuenta de servicio para actuar en nombre de la VM.
Si no tienes una cuenta de servicio, crea una.
Otorga el rol de lector de Artifact Registry (
roles.artifactregistry.reader) mientras creas la cuenta de servicio para que no tengas que configurar los permisos en un paso aparte.
Asegúrate de que la cuenta de servicio de la VM tenga permisos de lectura para el repositorio y el permiso de acceso a la API de
cloud-platform.VM de Compute Engine
Artifact Registry recupera automáticamente las credenciales de la cuenta de servicio de la VM. Si el repositorio está en un proyecto diferente al de la VM, debes otorgar el rol de Lector de Artifact Registry a la cuenta de servicio de la VM. También debes asegurarte de que la VM tenga el permiso de acceso
cloud-platform.Para establecer el permiso de acceso
cloud-platform, haz lo siguiente:Detén la instancia de VM y reemplaza
INSTANCEpor el nombre de la instancia de VM.gcloud compute instances stop INSTANCEEstablece el permiso de acceso:
gcloud compute instances set-service-account INSTANCE \ --scopes=cloud-platformReinicia la instancia de VM.
gcloud compute instances start INSTANCE
Otra VM
Otorga el rol de lector de Artifact Registry a la cuenta de servicio de la VM. De forma predeterminada, las cuentas de servicio administradas por el usuario tienen el permiso de acceso
cloud-platform.Verifica que hayas seguido los pasos para preparar la VM para acceder al repositorio. Consulta las instrucciones de preparación de Apt o Yum.
Verifica que configuraste correctamente Apt o Yum para acceder al repositorio.
Si te conectas a un repositorio de Apt desde una VM de Compute Engine, asegúrate de que la URL del repositorio incluya el prefijo
ar+.
Problemas con los auxiliares de credenciales
Aparece el siguiente mensaje de error cuando la VM no puede ubicar el asistente de credenciales de Apt:
E: Unable to locate package apt-transport-artifact-registry
El error se produce cuando intentas instalar el paquete apt-transport-artifact-registry en una VM que se creó a partir de una imagen que no incluye la clave de firma del repositorio de Apt.
Para solucionar este problema, haz lo siguiente:
Instala la clave de firma en la VM:
VM de Debian
Instala las claves de firma del repositorio de Apt con el siguiente comando:
curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add -Reemplaza
LOCATIONpor la ubicación regional o multirregional del repositorio.VM de Ubuntu
Instala las claves de firma del repositorio de Apt con el siguiente 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 -Reemplaza
LOCATIONpor la ubicación regional o multirregional del repositorio.Vuelve a intentar los pasos de preparación de la VM.
Problemas con el complemento de autenticación
Aparece el siguiente mensaje de error cuando hay un problema con el complemento de autenticación de Yum o DNF:
Plugin "artifact-registry" can't be imported
Este error se puede generar por varios motivos. Para resolver el error, intenta ejecutar el complemento directamente para confirmar las dependencias, verificar si hay problemas de Python o revelar otros posibles problemas subyacentes.
Para ejecutar el complemento directamente, usa uno de los siguientes comandos:
Para el complemento Yum, haz lo siguiente:
python /usr/lib/yum-plugins/artifact-registry.pyPara el complemento de DNF, haz lo siguiente:
python3 /usr/lib/pythonVERSION-NUMBER/site-packages/dnf-plugins/artifact-registry.pyReemplaza
VERSION-NUMBERpor la versión predeterminada de Python para la distribución de Linux. Por ejemplo, Enterprise Linux 8 incluye Python 3.6.Puedes enumerar los archivos en el paquete de complementos instalado para verificar el nombre del directorio de la biblioteca de Python.
rpm -ql dnf-plugin-artifact-registry|grep artifact-registry.py
Faltan artefactos subidos recientemente
Si tu cliente de Apt o Yum no encuentra un paquete que se subió o importó recientemente a tu repositorio, es posible que el proceso para regenerar el índice de paquetes de Apt o Yum aún no se haya completado.
En el caso de los repositorios pequeños, la regeneración del archivo de índice de Apt o Yum puede tardar varios segundos. En el caso de los repositorios más grandes, la reindexación puede tardar varios minutos o más.
Para verificar que un paquete se haya agregado correctamente al repositorio, usa Google Cloud CLI para enumerar los archivos del paquete. Ejecuta el siguiente comando:
gcloud artifacts files list \
--package=PACKAGE \
--project=PROJECT-ID \
--repository=REPOSITORY \
--location=LOCATION
Por ejemplo, puedes verificar que el paquete python-gflags llamado python3-gflags_1.5.1-5_all.deb se subió correctamente al repositorio us-west1-apt.pkg.dev\apt-project\apt-repo con el siguiente comando:
gcloud artifacts files list \
--package=python-gflags \
--project=apt-project \
--repository=apt-repo \
--location=us-west1
Si el paquete se subió correctamente, el archivo aparecerá en el resultado con un identificador único en el nombre del archivo, similar al siguiente ejemplo:
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
Error de autenticación para algunos paquetes subidos o importados
Si el tiempo para importar o subir archivos supera el período de vencimiento del token de autenticación, fallarán las cargas que se realicen después de ese período. Los tokens vencen 60 minutos después de que los obtienes. Si el token venció, aparecerá un error similar al siguiente ejemplo en el resultado del comando de importación.
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
Para solucionar este problema, haz lo siguiente:
- Intenta subir o importar el paquete específico solo para verificar que puedes agregarlo de forma individual en lugar de en una importación por lotes.
- Si fallaron varios paquetes, importa o sube lotes más pequeños para que la operación no exceda el período de vencimiento del token.