Resolva problemas de pacotes do SO

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:

  1. Verifique se a VM tem uma conta de serviço associada.

    VM do Compute Engine

    1. Aceda à página Instâncias de VM.
    2. 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.

    1. Se não tiver uma conta de serviço, crie uma.

    2. 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.

  2. 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:

    1. Pare a instância de VM, substituindo INSTANCE pelo nome da instância de VM.

      gcloud compute instances stop INSTANCE
      
    2. Defina o âmbito de acesso:

      gcloud compute instances set-service-account INSTANCE \
          --scopes=cloud-platform
      
    3. 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.

  3. 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.

  4. 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:

  1. 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.

  2. 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:

  1. Experimente carregar ou importar apenas o pacote específico para verificar se consegue adicioná-lo individualmente em vez de numa importação em lote.
  2. 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.