Saiba mais sobre os passos de resolução de problemas que podem ser úteis se tiver problemas na gestão de pacotes de SO no Artifact Registry.
Problemas de autenticação e autorizações
Não pode estabelecer ligação a um repositório para ações como instalar um pacote.
O resultado do gestor de pacotes inclui um erro 401
ou 403
, que indica problemas com a autenticação ou as autorizações.
Exemplos de erros de 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
Existem várias causas possíveis para estes erros. Certifique-se de que a VM cumpre os seguintes requisitos:
Verifique se a VM tem uma conta de serviço associada.
VM do Compute Engine
- Aceda à página Instâncias de VM.
Na lista de VMs, clique no nome da sua VM.
No separador Detalhes, a conta de serviço e os âmbitos de acesso aparecem em Gestão de identidade e de APIs.
Por predefinição, as VMs do Compute Engine usam a conta de serviço predefinida do Compute Engine e têm um conjunto limitado de âmbitos de acesso. O endereço de email da conta de serviço predefinido está no formato
PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com
.Para alterar a conta de serviço ou anexar uma conta de serviço a uma VM, consulte o artigo Alterar a conta de serviço e os âmbitos de acesso de uma instância.
Outra VM
Para outras VMs, tem de ter uma conta de serviço para agir em nome da VM.
Se não tiver uma conta de serviço, crie uma.
Conceda a função Leitor do Artifact Registry (
roles.artifactregistry.reader
) enquanto cria a conta de serviço para não ter de configurar autorizações num passo separado.
Certifique-se de que a conta de serviço da VM tem autorizações de leitura para o repositório, bem como o âmbito de acesso à API
cloud-platform
.VM do Compute Engine
O Artifact Registry obtém automaticamente as credenciais da conta de serviço da VM. Se o repositório estiver num projeto diferente da VM, tem de conceder a função de leitor do Artifact Registry à conta de serviço da VM. Também tem de garantir que a VM tem o âmbito de acesso
cloud-platform
.Para definir o âmbito 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 âmbito 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 a função de leitor do Artifact Registry à conta de serviço da VM. Por predefinição, as contas de serviço geridas pelo utilizador têm o
cloud-platform
âmbito de acesso.Verifique se seguiu os passos para preparar a VM para aceder ao repositório. Consulte as instruções de preparação do Apt ou Yum.
Verifique se configurou corretamente o Apt ou o Yum para aceder ao repositório.
Se estiver a estabelecer ligação a um repositório Apt a partir de uma VM do Compute Engine, certifique-se de que o URL do repositório inclui o prefixo
ar+
.
Problemas com o auxiliar de credenciais
A seguinte mensagem de erro é apresentada quando a VM não consegue localizar o auxiliar de credenciais do Apt:
E: Unable to locate package apt-transport-artifact-registry
O erro ocorre quando tenta instalar o pacote apt-transport-artifact-registry
numa VM criada a partir de uma imagem que não inclui a chave de assinatura do repositório Apt.
Para resolver este problema, faça o seguinte:
Instale a chave de assinatura na VM:
VM do Debian
Instale as chaves de assinatura do repositório Apt através do seguinte comando:
curl https://LOCATION-apt.s3nsregistry.fr/doc/repo-signing-key.gpg | sudo apt-key add -
Substitua
LOCATION
pela localização regional do repositório.VM do Ubuntu
Instale as chaves de assinatura do repositório Apt através do 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
pela localização regional do repositório.Volte a tentar os passos de preparação da VM.
Problemas com o plug-in de autenticação
A seguinte mensagem de erro é apresentada quando existe um problema com o plugin de autenticação Yum ou DNF:
Plugin "artifact-registry" can't be imported
Este erro pode ocorrer por vários motivos. Para resolver o erro, experimente executar o plug-in diretamente para confirmar as dependências, verificar se existem problemas com o Python ou revelar outros possíveis problemas subjacentes.
Para executar o plug-in diretamente, use um dos seguintes comandos:
Para o plugin Yum:
python /usr/lib/yum-plugins/artifact-registry.py
Para o plugin DNF:
python3 /usr/lib/pythonVERSION-NUMBER/site-packages/dnf-plugins/artifact-registry.py
Substitua
VERSION-NUMBER
pela versão predefinida do Python para a distribuição do Linux. Por exemplo, o Enterprise Linux 8 inclui o Python 3.6.Pode listar os ficheiros no pacote de plug-ins instalado para verificar o nome do diretório da biblioteca Python.
rpm -ql dnf-plugin-artifact-registry|grep artifact-registry.py
Artefactos carregados recentemente em falta
Se o seu cliente Apt ou Yum não encontrar um pacote que tenha sido carregado ou importado recentemente para o seu repositório, pode dever-se ao facto de o processo de regeneração do índice de pacotes Apt ou Yum ainda não estar concluído.
Para repositórios pequenos, a regeneração do ficheiro de índice Apt ou Yum pode demorar vários segundos. Para repositórios maiores, a reindexação pode demorar vários minutos ou mais tempo.
Para verificar se um pacote foi adicionado com êxito ao repositório, use a CLI do Google Cloud para listar os ficheiros no pacote. Execute o comando:
gcloud artifacts files list \
--package=PACKAGE \
--project=PROJECT-ID \
--repository=REPOSITORY \
--location=LOCATION
Por exemplo, pode verificar se o pacote python-gflags
com o nome python3-gflags_1.5.1-5_all.deb
foi carregado com êxito 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 tiver sido carregado com êxito, o ficheiro aparece no resultado com um identificador exclusivo no nome do ficheiro, semelhante ao seguinte exemplo:
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 carregados ou importados
Se o tempo para importar ou carregar ficheiros exceder o período de validade do token de autenticação, os carregamentos após o período de validade falham. Os tokens expiram 60 minutos após a obtenção. Se o token tiver expirado, é apresentado um erro semelhante ao exemplo seguinte no resultado do comando de importação.
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 este problema:
- Experimente carregar ou importar apenas o pacote específico para verificar se consegue adicioná-lo individualmente em vez de numa importação em lote.
- Se falharem vários pacotes, importe ou carregue em lotes mais pequenos para que a operação não exceda o período de validade do token.