Probleme mit Betriebssystempaketen beheben

Hier finden Sie hilfreiche Informationen über die schrittweise Fehlerbehebung bei Problemen mit der Verwaltung von Betriebssystempaketen in Artifact Registry.

Informationen zum Beheben von Problemen mit Remote-Repositories von Artifact Registry für Betriebssystempakete finden Sie unter Fehlerbehebung bei Remote-Repositories.

Probleme mit Authentifizierung und Berechtigungen

Für Aktionen wie das Installieren eines Pakets können Sie keine Verbindung zu einem Repository herstellen. Die Ausgabe des Paketmanagers enthält den Fehler 401 oder 403, der auf Probleme mit der Authentifizierung oder Berechtigungen hinweist.

Beispiele für Apt-Fehler:

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.

Beispiel für einen Yum-Fehler:

/repodata/repomd.xml: [Errno 14] HTTPS Error 403 - Forbidden

Für diese Fehler gibt es eine Reihe möglicher Ursachen. Prüfen Sie, ob Ihre VM die folgenden Anforderungen erfüllt:

  1. Prüfen Sie, ob der VM ein Dienstkonto zugeordnet ist.

    Compute Engine-VM

    1. Rufen Sie die Seite VM-Instanzen auf.
    2. Klicken Sie in der Liste der VMs auf den Namen Ihrer VM.

      Auf dem Tab Details werden das Dienstkonto und die Zugriffsbereiche unter API- und Identitätsverwaltung angezeigt.

    Compute Engine-VMs verwenden standardmäßig das Compute Engine-Standarddienstkonto und haben eine begrenzte Anzahl von Zugriffsbereichen. Die Standard-E-Mail-Adresse des Dienstkontos hat das Format PROJECT_NUMBER-compute@developer.gserviceaccount.com.

    Informationen zum Ändern des Dienstkontos oder zum Anhängen eines Dienstkontos an eine VM finden Sie unter Dienstkonto und Zugriffsbereiche für eine Instanz ändern.

    Andere VM

    Für andere VMs benötigen Sie ein Dienstkonto, das im Namen der VM agiert.

    1. Erstellen Sie ein Dienstkonto, falls Sie noch keines haben.

    2. Erteilen Sie beim Erstellen des Dienstkontos die Rolle „Artifact Registry-Leser“ (roles.artifactregistry.reader), damit Sie Berechtigungen nicht in einem separaten Schritt konfigurieren müssen.

  2. Prüfen Sie, ob das VM-Dienstkonto Leseberechtigungen für das Repository und den API-Zugriffsbereich cloud-platform hat.

    Compute Engine-VM

    Artifact Registry ruft automatisch die Anmeldedaten für das VM-Dienstkonto ab. Die erforderliche Konfiguration hängt davon ab, ob Sie das Standarddienstkonto oder ein vom Nutzer verwaltetes Dienstkonto verwenden.

    Standarddienstkonto

    Wenn die VM das Standarddienstkonto verwendet, hat dieses Dienstkonto standardmäßig die Rolle „Bearbeiter“, die Leseberechtigungen für Repositories im selben Projekt umfasst. Wenn sich das Repository in einem anderen Projekt als die VM befindet, weisen Sie dem VM-Dienstkonto die Rolle „Artifact Registry-Leser“ zu.

    Außerdem hat das Standarddienstkonto nicht alle erforderlichen API-Zugriffsbereiche.

    So legen Sie den Zugriffsbereich cloud-platform fest:

    1. Beenden Sie die VM-Instanz und ersetzen Sie INSTANCE durch den Namen der VM-Instanz.

      gcloud compute instances stop INSTANCE
      
    2. Legen Sie den Zugriffsbereich fest:

      gcloud compute instances set-service-account INSTANCE \
          --scopes=cloud-platform
      
    3. Starten Sie die VM-Instanz neu.

      gcloud compute instances start INSTANCE
      
    Nutzerverwaltetes Dienstkonto
    Wenn die VM ein nutzerverwaltetes Dienstkonto verwendet, weisen Sie dem VM-Dienstkonto die Rolle „Artifact Registry-Leser“ zu. Nutzerverwaltete Dienstkonten haben den Zugriffsbereich cloud-platform.

    Andere VM

    Gewähren Sie dem VM-Dienstkonto die Rolle „Artifact Registry-Leser“. Standardmäßig haben nutzerverwaltete Dienstkonten den Zugriffsbereich cloud-platform.

  3. Prüfen Sie, ob Sie die Schritte zur Vorbereitung der VM für den Zugriff auf das Repository ausgeführt haben. Weitere Informationen findest du in der Anleitung für die Vorbereitung von Apt oder Yum.

  4. Prüfen Sie, ob Apt oder Yum richtig für den Zugriff auf das Repository konfiguriert ist.

    Wenn Sie von einer Compute Engine-VM aus eine Verbindung zu einem Apt-Repository herstellen, achten Sie darauf, dass die Repository-URL das Präfix ar+ enthält.

Probleme mit Credential Helper

Die folgende Fehlermeldung wird angezeigt, wenn die VM den Credential Helper für Apt nicht finden kann:

E: Unable to locate package apt-transport-artifact-registry

Der Fehler tritt auf, wenn Sie versuchen, das Paket apt-transport-artifact-registry auf einer VM zu installieren, die aus einem Image erstellt wurde, das den Signaturschlüssel des Apt-Repositorys nicht enthält.

So beheben Sie das Problem:

  1. Installieren Sie den Signaturschlüssel auf der VM:

    Debian VM

    Installieren Sie die Signaturschlüssel des Apt-Repositorys mit dem folgenden Befehl:

    curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add -
    

    Ersetzen Sie LOCATION durch den Speicherort des Repositorys.

    Ubuntu-VM

    Installieren Sie die Signaturschlüssel des Apt-Repositorys mit dem folgenden Befehl:

    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 -
    

    Ersetzen Sie LOCATION durch den Speicherort des Repositorys.

  2. Führen Sie die VM-Vorbereitungsschritte noch einmal durch.

Probleme mit dem Authentifizierungs-Plug-in

Die folgende Fehlermeldung wird bei einem Problem mit dem Yum- oder DNF-Authentifizierungs-Plug-in angezeigt:

Plugin "artifact-registry" can't be imported

Dieser Fehler kann aus verschiedenen Gründen auftreten. Um den Fehler zu beheben, können Sie das Plug-in direkt ausführen, um Abhängigkeiten zu prüfen, nach Python-Problemen zu suchen oder andere mögliche zugrunde liegende Probleme aufzudecken.

Um das Plug-in direkt auszuführen, verwenden Sie einen der folgenden Befehle:

  • Für das Yum-Plug-in:

    python /usr/lib/yum-plugins/artifact-registry.py
    
  • Für das DNF-Plug-in:

    python3 /usr/lib/pythonVERSION-NUMBER/site-packages/dnf-plugins/artifact-registry.py
    

    Ersetzen Sie VERSION-NUMBER durch die Python-Standardversion für die Linux-Distribution. Enterprise Linux 8 enthält beispielsweise Python 3.6.

    Sie können die Dateien im installierten Plug-in-Paket auflisten, um den Namen des Python-Bibliotheksverzeichnisses zu prüfen.

    rpm -ql dnf-plugin-artifact-registry|grep artifact-registry.py
    

Kürzlich hochgeladene Artefakte fehlen

Wenn Ihr Apt- oder Yum-Client ein Paket, das kürzlich hochgeladen oder in Ihr Repository importiert wurde, nicht findet, liegt dies möglicherweise daran, dass der Prozess zur Neugenerierung des Apt- oder Yum-Paketindex noch nicht abgeschlossen ist.

Bei kleinen Repositories kann die Neugenerierung der Apt- oder Yum-Indexdatei einige Sekunden dauern. Bei größeren Repositories kann die Neuindexierung einige Minuten oder länger dauern.

Wenn Sie prüfen möchten, ob ein Paket dem Repository erfolgreich hinzugefügt wurde, listen Sie die Dateien im Paket über die Google Cloud CLI auf. Führen Sie diesen Befehl aus:

gcloud artifacts files list \
    --package=PACKAGE \
    --project=PROJECT-ID \
    --repository=REPOSITORY \
    --location=LOCATION

Mit dem folgenden Befehl können Sie beispielsweise prüfen, ob das python-gflags-Paket python3-gflags_1.5.1-5_all.deb erfolgreich in das Repository us-central1-apt.pkg.dev\apt-project\apt-repo hochgeladen wurde:

gcloud artifacts files list \
    --package=python-gflags \
    --project=apt-project \
    --repository=apt-repo \
    --location=us-central1

Wenn das Paket erfolgreich hochgeladen wurde, wird die Datei in der Ausgabe mit einer eindeutigen Kennung im Dateinamen angezeigt, wie im folgenden Beispiel:

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

Authentifizierungsfehler bei einigen hochgeladenen oder importierten Paketen

Wenn die Zeit für den Import oder Upload von Dateien die Gültigkeitsdauer des Authentifizierungstokens überschreitet, schlagen Uploads darüber hinaus fehl. Tokens laufen 60 Minuten nach Erhalt ab. Wenn das Token abgelaufen ist, wird beim Importbefehl ein Fehler wie im folgenden Beispiel ausgegeben.

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

So beheben Sie das Problem:

  1. Versuchen Sie, das spezifische Paket hochzuladen oder zu importieren, um zu prüfen, ob Sie das Paket einzeln anstatt in einem Batch-Import hinzufügen können.
  2. Wenn mehrere Pakete fehlgeschlagen sind, importieren oder laden Sie sie in kleineren Batches hoch, damit der Vorgang die Ablaufzeit des Tokens nicht überschreitet.