Descubre soluciones que pueden resultarte útiles si tienes algún problema al gestionar 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 el artículo Solucionar problemas de repositorios remotos.Problemas de autenticación y permisos
No puedes conectarte a un repositorio para realizar acciones como instalar un paquete.
La salida del gestor de paquetes incluye un error 401 o 403, lo que indica que hay 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 máquina virtual cumpla los siguientes requisitos:
Verifica que la máquina virtual tenga una cuenta de servicio asociada.
VM de Compute Engine
- Ve a la página Instancias de VM.
En la lista de máquinas virtuales, haz clic en el nombre de la máquina virtual.
En la pestaña Detalles, la cuenta de servicio y los ámbitos de acceso aparecen en Gestión de APIs e identidades.
De forma predeterminada, las VMs de Compute Engine usan la cuenta de servicio predeterminada de Compute Engine y tienen un conjunto limitado de ámbitos de acceso. La dirección de correo de la cuenta de servicio predeterminada tiene el formato
PROJECT_NUMBER-compute@developer.gserviceaccount.com.En función de la configuración de la política de tu organización, es posible que se conceda automáticamente el rol Editor a la cuenta de servicio predeterminada de tu proyecto. Te recomendamos que inhabilites la asignación automática de roles aplicando la restricción de la política de organización
iam.automaticIamGrantsForDefaultServiceAccounts. Si has creado tu organización después del 3 de mayo del 2024, esta restricción se aplica de forma predeterminada.Si inhabilitas la concesión automática de roles, debes decidir qué roles quieres conceder a las cuentas de servicio predeterminadas y, a continuación, concederlos tú mismo.
Si la cuenta de servicio predeterminada ya tiene el rol Editor, te recomendamos que lo sustituyas por roles con menos permisos.Para modificar los roles de la cuenta de servicio de forma segura, usa Simulador de políticas para ver el impacto del cambio y, a continuación, asigna y revoca los roles adecuados.
Para cambiar la cuenta de servicio o adjuntar una cuenta de servicio a una VM, consulta el artículo Cambiar la cuenta de servicio y los ámbitos de acceso de 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.
Asigna el rol Lector de Artifact Registry (
roles.artifactregistry.reader) mientras creas la cuenta de servicio para no tener que configurar los permisos en otro paso.
Asegúrate de que la cuenta de servicio de la VM tenga permisos de lectura en el repositorio, así como el
cloud-platformámbito de acceso a la API.VM de Compute Engine
Artifact Registry obtiene automáticamente las credenciales de la cuenta de servicio de la VM. Si el repositorio está en un proyecto distinto al de la VM, debes conceder el rol Lector de Artifact Registry a la cuenta de servicio de la VM. También debes asegurarte de que la VM tenga el
cloud-platformámbito de acceso.Para definir el alcance del acceso
cloud-platform, sigue estos pasos:Detén la instancia de VM y sustituye
INSTANCEpor el nombre de la instancia de VM.gcloud compute instances stop INSTANCEDefine el ámbito de acceso:
gcloud compute instances set-service-account INSTANCE \ --scopes=cloud-platformReinicia la instancia de VM.
gcloud compute instances start INSTANCE
Otra VM
Concede el rol Lector de Artifact Registry a la cuenta de servicio de la VM. De forma predeterminada, las cuentas de servicio gestionadas por los usuarios tienen el permiso de acceso
cloud-platform.Comprueba que has seguido los pasos para preparar la VM para acceder al repositorio. Consulta las instrucciones de preparación de Apt o Yum.
Verifica que has configurado 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 el asistente de credenciales
Aparece el siguiente mensaje de error cuando la VM no puede encontrar el elemento auxiliar 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 máquina virtual que se ha creado a partir de una imagen que no incluye la clave de firma del repositorio Apt.
Para solucionar este problema, sigue estos pasos:
Instala la clave de firma en la máquina virtual:
VM de Debian
Instala las claves de firma del repositorio Apt con el siguiente comando:
curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add -Sustituye
LOCATIONpor la ubicación regional o multirregional del repositorio.VM de Ubuntu
Instala las claves de firma del repositorio 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 -Sustituye
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 puede deberse a varios motivos. Para resolver el error, prueba a ejecutar el complemento directamente para confirmar las dependencias, comprobar si hay problemas con Python o detectar otros posibles problemas subyacentes.
Para ejecutar el complemento directamente, usa uno de los siguientes comandos:
En el complemento Yum:
python /usr/lib/yum-plugins/artifact-registry.pyPara el complemento DNF:
python3 /usr/lib/pythonVERSION-NUMBER/site-packages/dnf-plugins/artifact-registry.pySustituye
VERSION-NUMBERpor la versión predeterminada de Python de la distribución de Linux. Por ejemplo, Enterprise Linux 8 incluye Python 3.6.Puedes enumerar los archivos del 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 Apt o Yum no encuentra un paquete que se haya subido o importado recientemente a tu repositorio, puede deberse a que el proceso para regenerar el índice de paquetes Apt o Yum aún no se ha completado.
En el caso de los repositorios pequeños, la regeneración del archivo de índice 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 ha añadido correctamente al repositorio, usa la CLI de Google Cloud para enumerar los archivos del paquete. Ejecuta el comando:
gcloud artifacts files list \
--package=PACKAGE \
--project=PROJECT-ID \
--repository=REPOSITORY \
--location=LOCATION
Por ejemplo, puede comprobar que el paquete python-gflags llamado python3-gflags_1.5.1-5_all.deb se ha subido 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 ha subido correctamente, el archivo aparecerá en la salida con un identificador único en el nombre de archivo, como en el 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 en algunos paquetes subidos o importados
Si el tiempo necesario para importar o subir archivos supera el periodo de validez del token de autenticación, las subidas que se realicen después de ese periodo fallarán. Los tokens caducan 60 minutos después de obtenerlos. Si el token ha caducado, aparecerá un error similar al del siguiente ejemplo en la salida 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, sigue estos pasos:
- Prueba a subir o importar solo el paquete específico para verificar que puedes añadirlo de forma individual en lugar de en una importación por lotes.
- Si se produce un error en varios paquetes, importa o sube los datos en lotes más pequeños para que la operación no supere el periodo de vencimiento del token.