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:
Prüfen Sie, ob der VM ein Dienstkonto zugeordnet 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 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.
Erstellen Sie ein Dienstkonto, falls Sie noch keines haben.
Artifact Registry-Leser gewähren (
roles.artifactregistry.reader
) Rolle beim Erstellen des Dienstkontos, damit Sie keine die Berechtigungen in einem separaten Schritt konfigurieren.
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:Beenden Sie die VM-Instanz und ersetzen Sie dabei
INSTANCE
durch den Name 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
- 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
.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.
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:
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.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:
- 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.