Obtén información sobre los pasos para solucionar problemas que pueden servirte si tienes dificultades para administrar paquetes del SO en Artifact Registry.
Para obtener información sobre cómo resolver problemas con el control remoto de Artifact Registry repositorios 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-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.
Ejemplo de error de Yum:
/repodata/repomd.xml: [Errno 14] HTTPS Error 403 - Forbidden
Estos errores pueden deberse a varias causas. Asegúrate de que tu VM cumpla con 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
.Para cambiar la cuenta de servicio o conectar una a una VM, consulta la Cambia la cuenta de servicio y los permisos de acceso de una instancia.
Otra VM
Para otras VMs, debes tener una cuenta de servicio para actuar en nombre de la VM.
Crea una cuenta de servicio si no tienes una.
Otorga el lector de Artifact Registry (
roles.artifactregistry.reader
) mientras creas la cuenta de servicio, para que no necesites para configurar los permisos en otro paso.
Asegúrate de que la cuenta de servicio de la VM tenga permisos de lectura en el repositorio, como así como 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. El que se requiera depende de si usas la configuración de servicio administrada por un usuario.
- Cuenta de servicio predeterminada
Si la VM usa la cuenta de servicio predeterminada, este servicio tiene el rol de editor de forma predeterminada, que incluye permisos de lectura a los repositorios del mismo proyecto. Si el repositorio se encuentra en un proyecto que la VM, otorga el lector de Artifact Registry rol a la cuenta de servicio de la VM.
Además, la cuenta de servicio predeterminada no tiene todos permisos de acceso a la API.
Para configurar el permiso de acceso de
cloud-platform
, haz lo siguiente:Detén la instancia de VM y reemplaza
INSTANCE
por Nombre de la instancia de VM.gcloud compute instances stop INSTANCE
Configura el permiso de acceso:
gcloud compute instances set-service-account INSTANCE \ --scopes=cloud-platform
Reinicia la instancia de VM.
gcloud compute instances start INSTANCE
- Cuenta de servicio administrada por el usuario
- Si la VM usa una cuenta de servicio administrada por el usuario, otorga la
Rol de lector de Artifact Registry en la cuenta de servicio de VM
Las cuentas de servicio administradas por el usuario tienen el permiso de acceso
cloud-platform
.
Otra VM
Otorga el rol de Lector de Artifact Registry al servicio de VM de servicio predeterminada. De forma predeterminada, las cuentas de servicio administradas por el usuario tienen el
cloud-platform
permiso de acceso.Verifica si seguiste los pasos para preparar la VM para acceder a la en un repositorio de confianza. Consulta la preparación para el apto o Yum instrucciones.
Verifica que hayas 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 auxiliar de credenciales
Se muestra el siguiente mensaje de error cuando la VM no puede encontrar la credencial de Apt auxiliar:
E: Unable to locate package apt-transport-artifact-registry
El error se produce cuando intentas instalar apt-transport-artifact-registry
.
paquete en una VM que se creó a partir de una imagen que no incluye el ID
clave de firma del repositorio.
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
LOCATION
por la ubicación 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
LOCATION
por la ubicación de del repositorio.Vuelve a probar la Pasos para preparar la VM.
Problemas con el complemento de autenticación
Cuando ocurre un problema con la función Yum o DNF, aparece el siguiente mensaje de error Complemento de autenticación:
Plugin "artifact-registry" can't be imported
Este error se puede generar por varios motivos. Para resolver el error, intenta ejecutar para confirmar dependencias, buscar problemas de Python o revelar otros posibles problemas subyacentes.
Para ejecutar el complemento directamente, usa uno de los siguientes comandos:
Para el complemento de Yum:
python /usr/lib/yum-plugins/artifact-registry.py
Para el complemento DNF:
python3 /usr/lib/pythonVERSION-NUMBER/site-packages/dnf-plugins/artifact-registry.py
Reemplaza
VERSION-NUMBER
por la versión predeterminada de Python para la distribución de Linux. Por ejemplo, Enterprise Linux 8 incluye Python 3.6.Puedes ver una lista de los archivos del paquete del complemento instalado para verificar el nombre del directorio de bibliotecas 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ó recientemente o importados a tu repositorio, podría deberse a que el proceso de regeneración El índice del paquete Apt o Yum aún no está completo.
Para repositorios pequeños, volver a generar el archivo de índice Apt o Yum puede tomar varias segundos. Para repositorios más grandes, la reindexación puede tardar varios minutos. por más tiempo.
Para verificar que un paquete se agregó correctamente al repositorio, usa Google Cloud CLI para enumerar los archivos en el 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-central1-apt.pkg.dev\apt-project\apt-repo
con el comando:
gcloud artifacts files list \
--package=python-gflags \
--project=apt-project \
--repository=apt-repo \
--location=us-central1
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-central1/repositories/apt-repo/packages/python3-gflags/versions/1.5.1-5
Error de autenticación para algunos paquetes subidos o importados
Si el tiempo de importación o carga de archivos supera el período de vencimiento del token de autenticación, las cargas posteriores fallarán. Los tokens vencen a los 60 minutos después de obtenerlos. En el siguiente ejemplo, aparece un error similar al el resultado del comando de importación si el token expiró.
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:
- Intenta subir o importar el paquete específico solo para verificar que puedes agregarlo de forma individual en lugar de hacerlo en una importación masiva.
- Si fallan varios paquetes, impórtalos o súbelos en lotes más pequeños para que la operación no exceda el período de vencimiento del token.