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.
Para informações sobre como resolver problemas com repositórios remotos do Artifact Registry para pacotes do SO, consulte Resolver problemas de repositórios remotos.
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 com autenticação ou permissões.
Exemplos de erros do 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.
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.gserviceaccount.com
.Para alterar ou anexar uma conta de serviço 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, você precisa ter uma conta de serviço para agir em nome dela.
Crie uma conta de serviço se você não tiver uma.
Conceda o papel de leitor do Artifact Registry (
roles.artifactregistry.reader
) durante a criação da conta de serviço para que não seja necessário configurar permissões em uma etapa separada.
Verifique se a conta de serviço da VM tem permissões de leitura no 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. A configuração necessária depende de você estar usando a conta de serviço padrão ou uma conta serviço gerenciado pelo usuário.
- Conta padrão de serviço
Se a VM usar a conta de serviço padrão, ela terá o papel Editor por padrão, que inclui permissões de leitura para repositórios no mesmo projeto. Se o repositório estiver em um projeto diferente da VM, conceda o papel de leitor do Artifact Registry à conta de serviço da VM.
Além disso, essa conta padrão não tem todos os escopos de acesso de API necessários.
Para definir o escopo de acesso
cloud-platform
,Interrompa 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
- Conta serviço gerenciado pelo usuário
- Se a VM usar uma conta serviço gerenciado pelo usuário, conceda o
papel de leitor do Artifact Registry à conta de serviço da VM.
As contas de serviço gerenciado pelo usuário têm o escopo de acesso
cloud-platform
.
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 o Yum para acessar o repositório.
Se você estiver se conectando a um repositório Apt por uma VM do Compute Engine, verifique se o URL do repositório inclui o prefixo
ar+
.
Problemas no 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 usando 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.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add -
Substitua
LOCATION
pelo local do repositório.VM do Ubuntu
Instale as chaves de assinatura do repositório do Apt usando o seguinte 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 -
Substitua
LOCATION
pelo local do repositório.Repita as etapas de preparação da VM.
Problemas com o plug-in de autenticação
A mensagem de erro a seguir aparece quando há um problema com o plug-in de autenticação do Yum ou 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 se há problemas do Python ou revelar outros problemas possíveis.
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 Linux. Por exemplo, o Enterprise Linux 8 inclui o Python 3.6.Você pode listar os arquivos no pacote do 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 estão faltando
Se o cliente Apt ou Yum não encontrar um pacote que foi carregado ou importado recentemente para o repositório, talvez o processo para gerar novamente o índice de pacotes do Apt ou Yum ainda não esteja completo.
No caso de repositórios pequenos, gerar novamente o arquivo de índice do Apt ou do Yum pode levar vários segundos. No caso de 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 corretamente para o repositório
us-central1-apt.pkg.dev\apt-project\apt-repo
com o comando:
gcloud artifacts files list \
--package=python-gflags \
--project=apt-project \
--repository=apt-repo \
--location=us-central1
Se o upload do pacote for concluído, o arquivo aparecerá 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/us-central1/repositories/apt-repo/packages/python3-gflags/versions/1.5.1-5
Erro de autenticação de alguns pacotes enviados ou importados
Se o tempo para importar ou fazer upload de arquivos exceder o período de expiração do token de autenticação, os uploads além do período de expiração falharão. Os tokens expiram 60 minutos após serem recebidos. Um erro semelhante ao exemplo a seguir aparecerá 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 o pacote específico apenas para verificar se é possível adicioná-lo 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.