Warum erhalte ich Fehler, wenn ich yum auf meiner EC2-Instance verwende, auf der Amazon Linux 1, Amazon Linux 2 oder Amazon Linux 2023 ausgeführt wird?

Lesedauer: 6 Minute
0

Ich erhalte Fehler, wenn ich yum auf meiner Amazon Elastic Compute Cloud (Amazon EC2)-Instance verwende, auf der Amazon Linux 1, Amazon Linux 2 oder Amazon Linux 2023 ausgeführt wird.

Kurzbeschreibung

Verwende die Ausgabemeldungen des yum-Befehls, um festzustellen, welcher Fehler aufgetreten ist. Möglicherweise erhältst du eine der folgenden Fehlermeldungen:

  • „Connection timed out ABCD milliseconds“
  • „HTTP Error 403 – Forbidden“
  • „Could not resolve host: abcdexyz.$awsregion.$awsdomain“
  • „HTTP Error 407 – Proxy Authentication Required“
  • „Resolving timed out after 5000 milliseconds“

Lösung

Zeitüberschreitung bei der Verbindung, ABCD Millisekunden

Um dieses Problem zu beheben, stelle sicher, dass die an die Instance angefügte Sicherheitsgruppe ausgehenden HTTP- oder HTTPS-Datenverkehr zulässt. Stelle außerdem sicher, dass die Netzwerk-Zugriffssteuerungslisten (Netzwerk-ACLs), die dem Subnetz der Instance zugeordnet sind, ausgehenden HTTP- oder HTTPS-Datenverkehr zulassen.

Das folgende Beispiel zeigt eine benutzerdefinierte Netzwerk-ACL, die ausgehenden Datenverkehr über Port 80 und 443 zulässt:

Inbound rules
Rule#    Type                    Protocol    Port Range    Source        Allow/Deny
100      Custom TCP Rule         TCP (6)     1024-65535    0.0.0.0/0     ALLOW
101      Custom TCP Rule         TCP (6)     1024-65535    ::/0          ALLOW
*        ALL Traffic             ALL         ALL           ::/0          DENY
*        ALL Traffic             ALL         ALL           0.0.0.0/0     DENY
Outbound rules
Rule #    Type                   Protocol    Port Range    Source       Allow/Deny
100       HTTP (80)              TCP (6)     80            0.0.0.0/0    ALLOW
101       HTTPS (443)            TCP (6)     443           0.0.0.0/0    ALLOW
102       HTTP (80)              TCP (6)     80            ::/0         ALLOW
103       HTTPS (443)            TCP (6)     443           ::/0         ALLOW
*         ALL Traffic            ALL         ALL           ::/0         DENY
*         ALL Traffic            ALL         ALL           0.0.0.0/0    DENY

Um auf Amazon Linux-Repositorys zuzugreifen, muss die Instance je nach der Konfiguration eine der folgenden Internetzugriffseinstellungen verwenden:

  • Verwende für eine Instance in einem öffentlichen Subnetz ein Internet-Gateway.
  • Verwende für eine Instance in einem privaten Subnetz ein NAT-Gateway oder eine NAT-Instance.
  • Verwende für eine Instance in einem öffentlichen oder privaten Subnetz einen Virtual Private Cloud (VPC)-Endpunkt von Amazon Simple Storage Service (Amazon S3).
  • Füge für eine Instance in einem privaten Subnetz mit einem Proxy die folgenden Parameter zur Konfigurationsdatei hinzu, um yum für die Verwendung eines Proxys zu konfigurieren:
    proxy=http://proxy-server-IP-address:proxy_port
    proxy_username=proxy-user-name
    proxy_password=proxy-password
    Hinweis: Wenn du den Proxy bereits konfiguriert hast und dieselbe Konfigurationsdatei verwendest, ist das Proxy-Passwort in der Datei im Klartext sichtbar. Ersetze proxy-port durch den Port, den der Proxy verwendet, proxy-user-name durch deinen Proxy-Benutzernamen und proxy-password durch dein Proxy-Passwort. Weitere Informationen findest du unter Using yum with a proxy server (yum mit einem Proxy-Server verwenden) auf der Fedora Project-Website. Ändere für Amazon Linux 1 und Amazon Linux 2 die Datei /etc/yum.conf. Ändere für Amazon Linux 2023 die Datei /etc/dnf/dnf.conf.

Nachdem du die Instance konfiguriert hast, führe den folgenden curl-Befehl aus, um sicherzustellen, dass die Instance auf das Repository zugreifen kann.

Amazon Linux 2023:

curl -I al2023-repos-us-east-1-de612dc2.s3.dualstack.us-east-1.amazonaws.com

Amazon Linux 1:

curl -I repo.us-east-1.amazonaws.com

Amazon Linux 2:

curl -I amazonlinux.us-east-1.amazonaws.com

Hinweis: Ersetze in den vorherigen Befehlen us-east-1 durch die AWS-Region deiner Instance.

Der Befehl curl ist auf allen Amazon Machine Images (AMIs) vorinstalliert. Du kannst jedoch ohne Anmeldeinformationen nicht auf die Amazon Linux-Repositorys zugreifen, und der Befehl curl kann die Anmeldeinformationen eines yum-Repositorys nicht annehmen. Wenn du den curl-Befehl ausführst, erhältst du eine Fehlermeldung über den verweigerten Zugriff, die dem folgenden Beispiel ähnelt:

$ curl -I amazonlinux.us-east-1.amazonaws.com
HTTP/1.1 403 Forbidden
x-amz-bucket-region: us-east-1
x-amz-request-id: xxxxxxxx
x-amz-id-2: xxxxxxxxxxxxx=
Content-Type: application/xml
Date: Thu, 17 Nov 2022 16:59:59 GMT
Server: AmazonS3

Teste mit dem curl-Befehl, ob das Timeout-Problem weiterhin auftritt. Die Beispielfehlermeldung zeigt, dass das Netzwerk erreichbar ist und das Timeout-Problem nicht mehr auftritt.

HTTP Error 403 – Forbidden

Du verwendest einen VPC-Endpunkt

Wenn du einen Amazon S3-VPC-Endpunkt verwendest, stelle sicher, dass die angefügte Richtlinie den API-Aufruf s3:GetObject basierend auf der Linux-Version zulässt.

Amazon Linux 2023: arn:aws:s3:::al2023-repos-region-de612dc2/*

Amazon Linux 1: arn:aws:s3:::packages.region.amazonaws.com/* und arn:aws:s3:::repo.region.amazonaws.com/*

Amazon Linux 2: arn:aws:s3:::amazonlinux.region.amazonaws.com/ und arn:aws:s3:::amazonlinux-2-repos-region/

Hinweis: Ersetze in den vorherigen Ressourcen die region durch die Region deiner Instance.

Weitere Informationen findest du unter Gateway-Endpunkte für Amazon S3.

Du verwendest einen Proxy

Wenn du einen Proxy für den Zugriff auf Amazon Linux-Repositorys verwendest, stelle sicher, dass die Subdomain .amazonaws.com in der Proxy-Konfiguration auf der Allowliste steht.

Du verwendest ein nicht unterstütztes Repository

Möglicherweise wird die folgende Fehlermeldung angezeigt: „Error: Failed to download metadata for repo 'amazonlinux': GPG verification is activated, but GPG signature is not available. This may be an error or the repository does not support GPG verification“. Dies ist ein bekanntes Problem, das auftritt, wenn du repo_gpgcheck in den Repository-Dateien im Verzeichnis /etc/yum.repos.d/ aktivierst, zum Beispiel in den Dateien repository.repo oder /etc/yum.conf. Bei Amazon Linux 2023-Repositorys ist die Metadatensignierung nicht aktiviert. Wenn du diese Konfiguration auch für nicht unterstützte Repositorys verwendest, schlagen Paketinstallationen oder Betriebssystem (OS)-Updates möglicherweise fehl. Um das Problem zu umgehen, öffne die Repository-Repo-Datei und setze den Wert von repo_gpgcheck für das Repository auf 0. Setze den Wert beispielsweise auf repo_gpgcheck=0.

Weitere Informationen zu dieser Situation findest du unter [Bug] - not able to install/upgrade packages after activating repo_gpgcheck auf der GitHub-Website.

Host: abcdexyz.$awsregion.$awsdomain konnte nicht aufgelöst werden

Das Verzeichnis /etc/yum/vars muss die Variablen awsdomain und awsregion enthalten. Um zu überprüfen, ob das Verzeichnis /etc/yum/vars die benutzerdefinierten yum-Variablen definiert, führe die folgenden Befehle aus:

$ cat /etc/yum/vars/awsregion
us-east-1

$ cat /etc/yum/vars/awsdomain
amazonaws.com

Hinweis: Ersetze us-east-1 durch die Region deiner Instance.

Die Instance muss den Domain-Namen der Amazon Linux-Repositorys ermitteln. Führe die folgenden Befehle aus, um die DNS-Auflösung der Instance zu überprüfen:

$ dig amazonlinux.us-east-1.amazonaws.com

$ dig repo.us-east-1.amazonaws.com

$ dig al2023-repos-us-east-1-de612dc2

Hinweis: Ersetze us-east-1 durch die Region deiner Instance.

Beachte, dass Abfragen an den von Amazon bereitgestellten DNS-Server unter der IPv4-Adresse 169.254.169.253 und der IPv6-Adresse fd00:ec2::253 erfolgreich sind. Abfragen an den von Amazon bereitgestellten DNS-Server an der reservierten IP-Adresse an der Basis des VPC-IPv4-Netzwerkbereichs plus zwei sind ebenfalls erfolgreich. Auf die IPv6-Adresse kann nur auf Nitro-gesteuerten EC2-Instances zugegriffen werden.

HTTP Error 407 – Proxy Authentication Required

Dieses Problem tritt auf, wenn der Proxy die Anforderung nicht abschließen kann, weil yum oder dnf nicht über die richtigen Authentifizierungsdaten für den Proxy-Server verfügen. Um yum oder dnf für die Verwendung eines Proxys zu konfigurieren, ändere die Konfigurationsdatei mit den folgenden Parametern:

proxy=http://proxy-server-IP-address:proxy_port
proxy_username=proxy-user-name
proxy_password=proxy-password

Hinweis: Wenn du den Proxy bereits konfiguriert hast und dieselbe Konfigurationsdatei verwendest, ist das Proxy-Passwort in der Datei im Klartext sichtbar. Ersetze proxy-port durch den Port, den der Proxy verwendet, proxy-user-name durch deinen Proxy-Benutzernamen und proxy-password durch dein Proxy-Passwort. Ändere für Amazon Linux 1 und Amazon Linux 2 die Datei /etc/yum.conf. Ändere für Amazon Linux 2023 die Datei /etc/dnf/dnf.conf.

Probleme mit Zeitüberschreitung

Führe den folgenden Befehl aus, um zu überprüfen, ob die Datei /etc/resolv.conf die richtige IP-Adresse für den DNS-Server hat:

cat /etc/resolv.conf
nameserver YourDNSIP

Um den Standard-Timeout-Zeitraum von 5000 ms zu ändern, ändere den timeout-Wert in der yum-Konfigurationsdatei. Weitere Informationen findest du unter yum.conf auf der die.net-Website. Ändere für Amazon Linux 2023 den Wert metadata_expire in /etc/yum.repos.d/amazonlinux.repo, um den Timeout-Zeitraum zu ändern.

Führe den folgenden Befehl aus, um die Abfragezeit mit einem dig-Befehl zu überprüfen:

$ dig repo.us-east-1.amazonaws.com | grep time

Hinweis: Ersetze us-east-1 durch die Region deiner Instance.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 4 Monaten