Saiba mais sobre as etapas de solução de problemas que podem ser úteis se você tiver problemas ao gerenciar pacotes do SO no Artifact Registry.
Problemas de autenticação e permissões
Não é possível se conectar a um repositório para realizar ações como instalar um pacote.
A saída do gerenciador de pacotes inclui um erro 401
ou 403
, que
indica problemas com autenticação ou permissões.
Exemplos de erros do Apt:
Err:1 ar+https://u-france-east1-apt.s3nsregistry.fr/projects/my-project my-package Release Error downloading: code 401
E: Failed to fetch https://u-france-east1-apt.s3nsregistry.fr/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.
Exemplo de erro do Yum:
/repodata/repomd.xml: [Errno 14] HTTPS Error 403 - Forbidden
Há várias causas possíveis para esses erros. Verifique se a VM atende aos seguintes requisitos:
Verifique se a VM tem uma conta de serviço associada.
VM do Compute Engine
- Acesse a página Instâncias da VM.
Na lista de VMs, clique no nome da sua VM.
Na guia Detalhes, a conta de serviço e os escopos de acesso aparecem em Gerenciamento de API e identidade.
Por padrão, as VMs do Compute Engine usam a conta de serviço padrão do Compute Engine e têm um conjunto limitado de escopos de acesso. O endereço de e-mail da conta de serviço padrão está no formato
PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com
.Para mudar a conta de serviço ou anexá-la a uma VM, consulte Como alterar a conta de serviço e os escopos de acesso de uma instância.
Outra VM
Para outras VMs, é necessário ter uma conta de serviço para agir em nome da VM.
Se você não tiver uma conta de serviço, crie uma.
Conceda o papel de leitor do Artifact Registry (
roles.artifactregistry.reader
) enquanto você cria a conta de serviço para não precisar configurar as permissões em uma etapa separada.
Verifique se a conta de serviço da VM tem permissões de leitura para o repositório, bem como o escopo de acesso da API
cloud-platform
.VM do Compute Engine
O Artifact Registry recupera automaticamente as credenciais da conta de serviço da VM. Se o repositório estiver em um projeto diferente da VM, será necessário conceder o papel de leitor do Artifact Registry à conta de serviço da VM. Você também precisa garantir que a VM tenha o escopo de acesso
cloud-platform
.Para definir o escopo de acesso
cloud-platform
,Pare a instância de VM, substituindo
INSTANCE
pelo nome da instância de VM.gcloud compute instances stop INSTANCE
Defina o escopo de acesso:
gcloud compute instances set-service-account INSTANCE \ --scopes=cloud-platform
Reinicie a instância de VM.
gcloud compute instances start INSTANCE
Outra VM
Conceda o papel de leitor do Artifact Registry à conta de serviço da VM. Por padrão, as contas de serviço gerenciadas pelo usuário têm o escopo de acesso
cloud-platform
.Verifique se você seguiu as etapas para preparar a VM para acessar o repositório. Consulte as instruções de preparação do Apt ou do Yum.
Verifique se você configurou corretamente o Apt ou o Yum para acessar o repositório.
Se você estiver se conectando a um repositório do Apt usando uma VM do Compute Engine, verifique se o URL do repositório inclui o prefixo
ar+
.
Problemas com o auxiliar de credenciais
A mensagem de erro a seguir aparece quando a VM não consegue localizar o auxiliar de credencial do Apt:
E: Unable to locate package apt-transport-artifact-registry
O erro ocorre quando você tenta instalar o pacote apt-transport-artifact-registry
em uma VM criada a partir de uma imagem que não inclui a chave de assinatura
do repositório Apt.
Para resolver esse problema, faça o seguinte:
Instale a chave de assinatura na VM:
VM do Debian
Instale as chaves de assinatura do repositório do Apt usando o seguinte comando:
curl https://LOCATION-apt.s3nsregistry.fr/doc/repo-signing-key.gpg | sudo apt-key add -
Substitua
LOCATION
pelo local regional do repositório.VM do Ubuntu
Instale as chaves de assinatura do repositório do Apt usando o seguinte comando:
curl https://LOCATION-apt.s3nsregistry.fr/doc/repo-signing-key.gpg | sudo apt-key add - && curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Substitua
LOCATION
pelo local regional do repositório.Tente novamente as etapas de preparação da VM.
Problemas com o plug-in de autenticação
A seguinte mensagem de erro aparece quando há um problema com o plug-in de autenticação do Yum ou do DNF:
Plugin "artifact-registry" can't be imported
Esse erro pode ocorrer por vários motivos. Para resolver o erro, tente executar o plug-in diretamente para confirmar dependências, verificar problemas do Python ou revelar outros possíveis problemas subjacentes.
Para executar o plug-in diretamente, use um dos seguintes comandos:
Para o plug-in Yum:
python /usr/lib/yum-plugins/artifact-registry.py
Para o plug-in DNF:
python3 /usr/lib/pythonVERSION-NUMBER/site-packages/dnf-plugins/artifact-registry.py
Substitua
VERSION-NUMBER
pela versão padrão do Python para a distribuição do Linux. Por exemplo, o Enterprise Linux 8 inclui o Python 3.6.É possível listar os arquivos no pacote de plug-in instalado para verificar o nome do diretório da biblioteca Python.
rpm -ql dnf-plugin-artifact-registry|grep artifact-registry.py
Artefatos enviados recentemente estão faltando
Se o cliente Apt ou Yum não encontrar um pacote que foi enviado ou importado recentemente para o repositório, talvez o processo de regeneração do índice de pacotes do Apt ou Yum ainda não tenha sido concluído.
Para repositórios pequenos, a regeneração do arquivo de índice do Apt ou do Yum pode levar vários segundos. Para repositórios maiores, a reindexação pode levar vários minutos ou mais.
Para verificar se um pacote foi adicionado ao repositório, use a CLI do Google Cloud para listar os arquivos no pacote. Execute o comando:
gcloud artifacts files list \
--package=PACKAGE \
--project=PROJECT-ID \
--repository=REPOSITORY \
--location=LOCATION
Por exemplo, você pode verificar se o pacote python-gflags
chamado
python3-gflags_1.5.1-5_all.deb
foi enviado ao repositório
u-france-east1-apt.s3nsregistry.fr\apt-project\apt-repo
com o comando:
gcloud artifacts files list \
--package=python-gflags \
--project=apt-project \
--repository=apt-repo \
--location=u-france-east1
Se o upload do pacote for bem-sucedido, o arquivo vai aparecer na saída com um identificador exclusivo no nome do arquivo, semelhante ao exemplo abaixo:
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/u-france-east1/repositories/apt-repo/packages/python3-gflags/versions/1.5.1-5
Erro de autenticação para alguns pacotes enviados ou importados
Se o tempo para importar ou fazer upload de arquivos exceder o período de validade do token de autenticação, os uploads após o período de validade vão falhar. Os tokens expiram 60 minutos após a obtenção. Um erro semelhante ao exemplo a seguir aparece na saída do comando de importação se o token tiver expirado.
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 resolver esse problema:
- Tente fazer o upload ou importar o pacote específico apenas para verificar se é possível adicionar o pacote individualmente em vez de uma importação em lote.
- Se vários pacotes falharem, importe ou faça o upload em lotes menores para que a operação não exceda o período de validade do token.