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
Sie können keine Verbindung zu einem Repository herstellen, um z. B. ein Paket zu installieren.
Die Ausgabe des Paketmanagers enthält einen 401
- oder 403
-Fehler, der auf Probleme mit der Authentifizierung oder Berechtigungen hinweist.
Beispiele für Apt-Fehler:
Err:1 ar+https://us-west1-apt.pkg.dev/projects/my-project my-package Release Error downloading: code 401
E: Failed to fetch https://us-west1-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. Ihre VM muss die folgenden Anforderungen erfüllen:
Prüfen Sie, ob die VM mit einem Dienstkonto verknüpft ist.
Compute Engine-VM
- Rufen Sie die Seite VM-Instanzen auf.
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 das Compute Engine-Standarddienstkonto und haben nur eine begrenzte Anzahl von Zugriffsbereichen. 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 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 handeln kann.
Wenn Sie noch kein Dienstkonto haben, erstellen Sie eins.
Weisen Sie die Rolle „Artifact Registry-Leser“ (
roles.artifactregistry.reader
) zu, während Sie das Dienstkonto erstellen, damit Sie die Berechtigungen nicht in einem separaten Schritt konfigurieren müssen.
Das VM-Dienstkonto muss Lesezugriff auf das Repository und den
cloud-platform
API-Zugriffsbereich haben.Compute Engine-VM
Artifact Registry ruft automatisch Anmeldedaten für das VM-Dienstkonto ab. Wenn sich das Repository in einem anderen Projekt als die VM befindet, müssen Sie dem VM-Dienstkonto die Rolle „Artifact Registry Reader“ gewähren. Außerdem muss die VM den Zugriffsbereich
cloud-platform
haben.So legen Sie den Zugriffsbereich für
cloud-platform
fest:Beenden Sie die VM-Instanz und ersetzen Sie
INSTANCE
durch den Namen der VM-Instanz.gcloud compute instances stop INSTANCE
Legen Sie den Zugriffsbereich fest:
gcloud compute instances set-service-account INSTANCE \ --scopes=cloud-platform
Starten Sie die VM-Instanz neu.
gcloud compute instances start INSTANCE
Andere VM
Weisen Sie dem VM-Dienstkonto die Rolle „Artifact Registry-Leser“ zu. Nutzerverwaltete Dienstkonten haben standardmäßig den Zugriffsbereich
cloud-platform
.Prüfen Sie, ob Sie die Schritte zur Vorbereitung der VM für den Zugriff auf das Repository ausgeführt haben. Weitere Informationen finden Sie in der Apt- oder Yum-Vorbereitungsanleitung.
Prüfen Sie, ob Sie Apt oder Yum richtig für den Zugriff auf das Repository konfiguriert haben.
Wenn Sie eine Verbindung von einer Compute Engine-VM zu einem Apt-Repository herstellen, muss die Repository-URL das Präfix
ar+
enthalten.
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 Sie versuchen, das apt-transport-artifact-registry
-Paket auf einer VM zu installieren, die aus einem Image erstellt wurde, das nicht den Signaturschlüssel des Apt-Repositories enthält.
So beheben Sie das Problem:
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 regionalen oder multiregionalen Speicherort des Repositorys.Ubuntu-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 - && curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Ersetzen Sie
LOCATION
durch den regionalen oder multiregionalen Speicherort des Repositorys.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, können Sie versuchen, das Plug-in direkt auszuführen, um Abhängigkeiten zu bestätigen, nach Python-Problemen zu suchen oder andere mögliche zugrunde liegende Probleme aufzudecken.
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 Standard-Python-Version 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 überprü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 vor Kurzem in Ihr Repository hochgeladen oder importiert wurde, nicht findet, ist der Vorgang zum Generieren des Apt- oder Yum-Paketindexes möglicherweise noch nicht abgeschlossen.
Bei kleinen Repositories kann das Generieren der Apt- oder Yum-Indexdatei einige Sekunden dauern. Bei größeren Repositories kann das Neuindexieren einige Minuten oder länger dauern.
Um zu prüfen, ob ein Paket dem Repository erfolgreich 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
So können Sie beispielsweise mit dem Befehl prüfen, ob das python-gflags
-Paket mit dem Namen python3-gflags_1.5.1-5_all.deb
erfolgreich in das Repository us-west1-apt.pkg.dev\apt-project\apt-repo
hochgeladen wurde:
gcloud artifacts files list \
--package=python-gflags \
--project=apt-project \
--repository=apt-repo \
--location=us-west1
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-west1/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. Wenn das Token abgelaufen ist, wird in der Ausgabe des Befehls „import“ ein Fehler ähnlich dem folgenden Beispiel angezeigt.
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:
- 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.
- Wenn mehrere Pakete fehlgeschlagen sind, importieren oder laden Sie sie in kleineren Batches hoch, damit der Vorgang nicht die Gültigkeitsdauer des Tokens überschreitet.