Saiba mais sobre as etapas de solução de problemas que podem ser úteis se você tiver problemas ao gerenciar pacotes de SO no Artifact Registry.
Problemas de autenticação e permissões
Não é possível se conectar a um repositório para ações como instalar um pacote.
A saída do gerenciador de pacotes inclui um erro 401 ou 403, que indica problemas de 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 APIs e identidades.
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.Dependendo da configuração da política da organização, a conta de serviço padrão pode receber automaticamente o papel de Editor no projeto. É altamente recomendável desativar a concessão automática de papéis aplicando a restrição da política da organização
iam.automaticIamGrantsForDefaultServiceAccounts. Se você criou a organização após 3 de maio de 2024, essa restrição será aplicada por padrão.Se você desativar a concessão automática de papéis, precisará decidir quais papéis conceder às contas de serviço padrão e, em seguida, conceder esses papéis por conta própria.
Se a conta de serviço padrão já tiver o papel de Editor, recomendamos que você o substitua por papéis menos permissivos.
Para mudar a conta de serviço ou anexar uma conta de serviço a uma VM, consulte o Como mudar 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) ao criar a conta de serviço para não precisar configurar 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 à 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, então você deve conceder o papel de leitor do Artifact Registry à conta de serviço da VM. Também é necessário garantir que a VM tenha o escopo de acesso
cloud-platform.Para definir o escopo de acesso
cloud-platform:Pare a instância da VM, substituindo
INSTANCEpelo nome da instância da VM.gcloud compute instances stop INSTANCEDefina o escopo de acesso:
gcloud compute instances set-service-account INSTANCE \ --scopes=cloud-platformReinicie 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 gerenciado 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 Yum para acessar o repositório.
Se você estiver se conectando a um repositório do Apt de uma VM do Compute Engine, verifique se o URL do repositório inclui o prefixo
ar+.
Problemas do ajudante de credenciais
A seguinte mensagem de erro aparece quando a VM não consegue localizar o ajudante de credenciais 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 do 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
LOCATIONpelo 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
LOCATIONpelo local regional do repositório.Repita as etapas de preparação da VM.
Problemas do 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 acontecer 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 do Yum:
python /usr/lib/yum-plugins/artifact-registry.pyPara o plug-in do DNF:
python3 /usr/lib/pythonVERSION-NUMBER/site-packages/dnf-plugins/artifact-registry.pySubstitua
VERSION-NUMBERpela 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 do Python.
rpm -ql dnf-plugin-artifact-registry|grep artifact-registry.py
Artefatos enviados recentemente ausentes
Se o cliente do Apt ou do Yum não encontrar um pacote que foi enviado ou importado recentemente para o repositório, talvez seja porque o processo de regeneração do índice de pacotes do Apt ou do Yum ainda não foi 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 Google Cloud CLI para listar os arquivos no pacote. Execute o comando:
gcloud artifacts files list \
--package=PACKAGE \
--project=PROJECT-ID \
--repository=REPOSITORY \
--location=LOCATION
Por exemplo, é possível verificar se o pacote python-gflags chamado
python3-gflags_1.5.1-5_all.deb foi enviado com sucesso para o 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 pacote foi enviado com sucesso, o arquivo aparece na saída com um identificador exclusivo no nome do arquivo, semelhante ao exemplo a seguir:
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 além do período de validade vão falhar. Os tokens expiram 60 minutos após serem recebidos. 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 upload ou importar apenas o pacote específico para verificar se é possível adicionar o pacote individualmente em vez de em uma importação em lote.
- Se vários pacotes falharem, importe ou faça upload em lotes menores para que a operação não exceda o período de validade do token.