Probleme mit Betriebssystempaketen beheben

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

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

Authentifizierungs- und Berechtigungsprobleme

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 weist auf Probleme mit der Authentifizierung oder Berechtigungen hin.

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. VM muss die folgenden Anforderungen erfüllen: die folgenden Anforderungen erfüllen:

  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.

    Standardmäßig verwenden Compute Engine-VMs die Compute Engine Standarddienstkonto mit einer begrenzten Anzahl von Zugriffsbereiche. Die E-Mail-Adresse des Standarddienstkontos 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 in der Dienstkonto und Zugriffsbereiche für eine Instanz ändern

    Andere VM

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

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

    2. Artifact Registry-Leser gewähren (roles.artifactregistry.reader) Rolle beim Erstellen des Dienstkontos, damit Sie keine die Berechtigungen in einem separaten Schritt konfigurieren.

  2. Achten Sie darauf, dass das VM-Dienstkonto Leseberechtigungen für das Repository als und den API-Zugriffsbereich cloud-platform.

    Compute Engine-VM

    Artifact Registry ruft automatisch Anmeldedaten für das VM-Dienstkonto ab. Die erforderliche Konfiguration hängt davon ab, ob Sie das Standarddienstkonto oder ein nutzerverwaltetes 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, gewähren Sie dem VM-Dienstkonto die Rolle „Artifact Registry Reader“.

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

    So legen Sie den Zugriffsbereich für cloud-platform fest:

    1. Beenden Sie die VM-Instanz und ersetzen Sie dabei INSTANCE durch den Name 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 vom Nutzer verwaltetes Dienstkonto verwendet, gewähren Sie die Berechtigung Rolle „Artifact Registry-Leser“ für das VM-Dienstkonto. Nutzerverwaltete Dienstkonten haben den Zugriffsbereich cloud-platform.

    Andere VM

    Weisen Sie dem VM-Dienstkonto die Rolle „Artifact Registry-Leser“ zu. Nutzerverwaltete Dienstkonten haben standardmäßig den Zugriffsbereich cloud-platform.

  3. Prüfen Sie, ob Sie die Schritte zur Vorbereitung der VM für den Zugriff auf den zu erstellen. Weitere Informationen finden Sie in der Apt- oder Yum-Vorbereitungsanleitung.

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

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

Probleme mit Credential Helper

Die folgende Fehlermeldung wird angezeigt, wenn die VM den Apt-Anmeldedaten-Helfer nicht finden kann:

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

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

So beheben Sie das Problem:

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

    Debian-VM

    Installieren Sie die Signaturschlüssel für das Apt-Repository 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 zu erstellen.

    Ubuntu-VM

    Installieren Sie die Apt-Repository-Signaturschlüssel 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 von des Repositorys.

  2. Wiederholen Sie die Schritte zur VM-Vorbereitung.

Probleme mit dem Authentifizierungs-Plug-in

Die folgende Fehlermeldung wird angezeigt, wenn ein Problem mit dem Yum- oder DNF-Authentifizierungs-Plug-in vorliegt:

Plugin "artifact-registry" can't be imported

Dieser Fehler kann aus verschiedenen Gründen auftreten. Um den Fehler zu beheben, versuchen Sie, den um Abhängigkeiten zu bestätigen, nach Python-Problemen zu suchen oder mögliche zugrunde liegende Probleme.

Verwenden Sie einen der folgenden Befehle, um das Plug-in direkt auszuführen:

  • 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 der 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 der Python-Bibliotheksverzeichnis.

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

Kürzlich hochgeladene Artefakte fehlen

Wenn Ihr Apt- oder Yum-Client kein kürzlich hochgeladenes Paket findet oder in Ihr Repository importiert haben, kann dies daran liegen, Der Index des Apt- oder Yum-Pakets ist noch nicht vollständig.

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

Um zu prüfen, ob ein Paket dem Repository hinzugefügt wurde, können Sie mit der Google Cloud CLI die Dateien im Paket auflisten. Führen Sie diesen Befehl aus:

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

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

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, ähnlich 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 der Import oder Upload von Dateien länger als die Gültigkeitsdauer des Authentifizierungstokens dauert, schlagen Uploads nach Ablauf der Gültigkeitsdauer fehl. Tokens laufen 60 Minuten nach dem Erhalt ab. In der Tabelle wird ein Fehler wie im folgenden Beispiel angezeigt: Ausgabe des Importbefehls, wenn das Token abgelaufen ist.

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, nur das betreffende Paket hochzuladen oder zu importieren, um zu prüfen, ob Sie es einzeln und nicht im Batch-Import hinzufügen können.
  2. Wenn mehrere Pakete fehlgeschlagen sind, importieren oder laden Sie sie in kleineren Batches hoch, damit der Vorgang nicht die Gültigkeitsdauer des Tokens überschreitet.