Hier finden Sie nützliche Informationen über die schrittweise Fehlerbehebung bei Problemen mit der Verwaltung von Betriebssystempaketen in Artifact Registry.
Informationen zum Beheben von Problemen mit Artifact Registry-Remote-Repositories für Betriebssystempakete finden Sie unter Fehlerbehebung bei Remote-Repositories.Probleme mit der Authentifizierung und den Berechtigungen
Sie können keine Verbindung zu einem Repository für Aktionen wie die Installation eines Pakets herstellen.
Die Ausgabe des Paketmanagers enthält einen 401- oder 403-Fehler, der auf Probleme mit der Authentifizierung oder den 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 eine begrenzte Anzahl von Zugriffsbereichen. Die E-Mail-Adresse des Standarddienstkontos hat das Format
PROJECT_NUMBER-compute@developer.gserviceaccount.com.Abhängig von der Konfiguration Ihrer Organisationsrichtlinie kann dem Standarddienstkonto für Ihr Projekt automatisch die Rolle "Bearbeiter" zugewiesen werden. Wir empfehlen dringend, die automatische Rollenzuweisung zu deaktivieren, indem Sie die Einschränkung der Organisationsrichtlinien
iam.automaticIamGrantsForDefaultServiceAccountserzwingen. Wenn Sie Ihre Organisation nach dem 3. Mai 2024 erstellt haben, wird diese Einschränkung standardmäßig erzwungen.Wenn Sie die automatische Rollenzuweisung deaktivieren, müssen Sie entscheiden, welche Rollen den Standarddienstkonten zugeteilt werden sollen, und diese Rollen dann selbst zuweisen.
Wenn das Standarddienstkonto bereits die Rolle „Bearbeiter“ hat, sollten Sie die Rolle „Bearbeiter“ durch weniger strikte Rollen ersetzen.Verwenden Sie zum sicheren Ändern der Rollen des Dienstkontos Policy Simulator, um die Auswirkungen der Änderung zu sehen, und weisen Sie die entsprechenden Rollen zu und widerrufen Sie sie.
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, um im Namen der VM zu agieren.
Wenn Sie kein Dienstkonto haben, erstellen Sie eins.
Weisen Sie die Rolle „Artifact Registry-Leser“ (
roles.artifactregistry.reader) beim Erstellen des Dienstkontos zu, damit Sie die Berechtigungen nicht in einem separaten Schritt konfigurieren müssen.
Das VM-Dienstkonto muss Leseberechtigungen für das Repository sowie den API-Zugriffsbereich
cloud-platformhaben.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-Leser“ gewähren. Außerdem muss die VM den Zugriffsbereich
cloud-platformhaben.So legen Sie den Zugriffsbereich
cloud-platformfest:Beenden Sie die VM-Instanz und ersetzen Sie
INSTANCEdurch den Namen der VM-Instanz.gcloud compute instances stop INSTANCELegen Sie den Zugriffsbereich fest:
gcloud compute instances set-service-account INSTANCE \ --scopes=cloud-platformStarten Sie die VM-Instanz neu.
gcloud compute instances start INSTANCE
Andere VM
Weisen Sie dem Dienstkonto der VM die Rolle „Artifact Registry-Leser“ zu. Standardmäßig haben nutzerverwaltete Dienstkonten 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 für den Zugriff auf das Repository richtig konfiguriert haben.
Wenn Sie von einer Compute Engine-VM aus eine Verbindung 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-Helper 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 für das Apt-Repository nicht enthält.
So beheben Sie das Problem:
Installieren Sie den Signierschlü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
LOCATIONdurch 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
LOCATIONdurch den regionalen oder multiregionalen Speicherort des Repositorys.Wiederholen Sie die Schritte zur Vorbereitung der VM.
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 das Plug-in direkt ausfü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.pyFür das DNF-Plug-in:
python3 /usr/lib/pythonVERSION-NUMBER/site-packages/dnf-plugins/artifact-registry.pyErsetzen Sie
VERSION-NUMBERdurch die standardmäßige 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 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 vor Kurzem in Ihr Repository hochgeladen oder importiert wurde, nicht findet, liegt das möglicherweise daran, dass die Aktualisierung des Apt- oder Yum-Paketindex noch nicht abgeschlossen ist.
Bei kleinen Repositories kann das Regenerieren der Apt- oder Yum-Indexdatei einige Sekunden dauern. Bei größeren Repositories kann die Neuindexierung mehrere Minuten oder länger dauern.
Um zu prüfen, ob ein Paket erfolgreich dem Repository hinzugefügt wurde, verwenden Sie die Google Cloud CLI, um die Dateien im Paket aufzulisten. 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 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 dem 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 die Zeit zum Importieren oder Hochladen von Dateien den Ablaufzeitraum des Authentifizierungstokens überschreitet, schlagen Uploads nach dem Ablaufzeitraum fehl. Tokens laufen 60 Minuten nach dem Abrufen ab. Wenn das Token abgelaufen ist, wird in der Ausgabe des Importbefehls ein Fehler wie im 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:
- Laden Sie das jeweilige Paket hoch oder importieren Sie es, um zu prüfen, ob Sie es einzeln hinzufügen können.
- Wenn mehrere Pakete fehlgeschlagen sind, importieren oder laden Sie sie in kleineren Batches hoch, damit der Vorgang den Ablaufzeitraum des Tokens nicht überschreitet.