Beispiel: Stellen Sie sich vor, eine SLES-Administratorin namens Maya führt sudo zypper refreshnach einem routinemäßigen Wartungsfenster einen Workaround durch. Ein Repository gibt die Fehlermeldung „500: Interner Serverfehler“ zurück, während die anderen aktualisiert werden. Mayas Beispiel ist hypothetisch, verdeutlicht aber den entscheidenden Diagnosepunkt: HTTP 500 ist eine Antwort eines Servers oder eines Vermittlers wie eines Proxys und kein Beweis dafür, dass der lokale Metadaten-Cache von Zypper beschädigt ist.
Um einen Fehler bei der Aktualisierung eines Zypper-Repositorys unter SUSE Linux Enterprise Server (SLES) zu beheben, identifizieren Sie zunächst das genaue Repository und die URL, die den Fehler verursachen. Ermitteln Sie anschließend, ob die Antwort vom SUSE Customer Center (SCC), einem internen Repository Mirroring Tool (RMT)-Server oder einem Netzwerkproxy stammt. Führen Sie eine erzwungene Metadatenaktualisierung erst nach Überprüfung des Endpunkts durch. Das erneute Registrieren des Rechners oder das Löschen der Repository-Konfiguration ohne entsprechende Hinweise kann die Fehlerdiagnose erschweren.
Was ein HTTP-500-Fehler beim Aktualisieren aussagt
Wenn Zypper ein Repository aktualisiert, lädt es die Repository-Metadaten von der konfigurierten URI herunter. Eine HTTP-500-Antwort bedeutet, dass der HTTP-Server, der die Anfrage verarbeitet, einen internen Fehler meldet. Dieser Server kann der Repository-Host, ein Spiegelserver der Organisation oder ein Proxy zwischen dem SLES-Rechner und dem Repository sein. Der Code allein gibt nicht an, welcher Server den Fehler verursacht hat, und er stellt auch nicht fest, ob der SUSE-Dienst ausgefallen ist.
Die aktuellen SUSE-Administrationsrichtlinien beschreiben zypper refreshdie übliche Vorgehensweise zum Abrufen von Repository-Änderungen und empfehlen diese, zypper refresh -fdbwenn eine Aktualisierung ein Problem mit den Repository-Metadaten nicht behebt. Letztere erzwingt eine vollständige Aktualisierung und erstellt die Paketdatenbank neu, einschließlich eines erzwungenen Downloads der Rohmetadaten. Dadurch können veraltete lokale Metadaten repariert werden, jedoch kein Server, der weiterhin HTTP 500 zurückgibt. Siehe SUSE SLES 15 SP7 Administration Guide .
1. Identifizieren Sie das Repository und erfassen Sie den genauen Fehler.
Im Beispiel von Maya nennt die Aktualisierungsausgabe einen Repository-Alias, bevor der Fehler gemeldet wird. Wiederholen Sie den Befehl zunächst einmal und notieren Sie sich den Alias, die angeforderte URL und ob andere Repositories erfolgreich waren:
sudo zypper refresh
Anschließend werden die Repository-Aliase und ihre konfigurierten URLs aufgelistet:
zypper lr -u
Vergleichen Sie den fehlgeschlagenen Alias in der Aktualisierungsausgabe mit seiner URI in dieser Liste. Eine URI, die auf dem RMT einer Organisation oder einem anderen privaten Spiegelserver gehostet wird, sollte mit dem Administrator dieses Servers untersucht werden. Eine URI, die auf einen öffentlichen SUSE-Dienst verweist, sollte vom betroffenen Netzwerk und, wenn möglich, von einem zweiten Netzwerk oder einem anderen SLES-Client aus überprüft werden.
Repository-URLs können Zugangsdaten oder signierte Abfrageparameter enthalten. Veröffentlichen Sie keine ungeschwärzten Befehlsausgaben, Support-Bundles oder URLs in einem öffentlichen Forum. Bewahren Sie den Repository-Alias, Hostnamen, Zeitstempel, SLES-Service-Pack und Antwortcode auf; schwärzen Sie Anmeldeinformationen und Token.
2. Prüfen Sie, ob der Fehler lokal, gemeinsam genutzt oder vorgelagert ist.
Führen Sie einen einfachen Vergleich durch, bevor Sie die Konfiguration ändern. Wenn nur ein Repository auf einem Server nicht funktioniert, überprüfen Sie die URL und den zugehörigen Dienst. Wenn dasselbe Repository auf mehreren Clients im selben Netzwerk nicht funktioniert, untersuchen Sie einen gemeinsam genutzten Proxy, eine Firewall oder einen Mirror. Wenn viele Clients in verschiedenen Netzwerken beim Zugriff auf denselben SUSE-Endpunkt scheitern, ist ein vorübergehendes Problem im Upstream-System wahrscheinlicher. Diese Muster sind Hinweise, aber kein Beweis. Wenden Sie sich zur Bestätigung an den Dienstverantwortlichen oder den Support Ihrer Organisation.
Für einen Endpunkt, den Sie abfragen dürfen, kann ein HTTP-Client die Antwortheader und den endgültigen Status anzeigen. Verwenden Sie nach Möglichkeit die exakte Repository-Metadaten-URL, anstatt anzunehmen, dass das Repository-Stammverzeichnis dieselbe Antwort liefert. Zum Beispiel:
curl -sS -L -D - -o /dev/null 'https://repository.example.invalid/path/to/metadata'
Ersetzen Sie die Beispiel-URL durch den betroffenen Endpunkt. Geben Sie in einem Befehl, den Sie weitergeben, keine eingebetteten Anmeldeinformationen oder Token an. Eine vom Proxy generierte Fehlerseite kann weiterhin HTTP 500 anzeigen. Vergleichen Sie daher die Antwort von einem autorisierten direkten Pfad oder einem anderen Client nur dann, wenn Ihre Netzwerkrichtlinie dies zulässt. Vermeiden Sie es, einen erforderlichen Unternehmensproxy oder ein Sicherheitsgateway ohne Autorisierung zu umgehen.
Handelt es sich bei dem fehlerhaften Repository um ein benutzerdefiniertes Repository, bitten Sie dessen Verantwortlichen, die Serverprotokolle, die Speicherkapazität, den Backend-Status und die Veröffentlichung der Repository-Metadaten zu überprüfen. Verweist die URL auf RMT, beheben Sie das Problem bei RMT, anstatt wiederholt den Client zu wechseln. Der RMT-Leitfaden von SUSE erklärt, dass RMT Repository-Produktdaten von SCC synchronisiert und Repository-Pakete nach einem eigenen Zeitplan spiegelt.
3. Überprüfen Sie die Proxy- und Netzwerkkonfiguration.
Ein Gateway oder Proxy kann eine eigene 500-Fehlermeldung zurückgeben, wenn der Upstream-Dienst nicht verfügbar ist, eine Upstream-Antwort nicht verarbeitet werden kann oder der Proxy falsch konfiguriert ist. Vergleichen Sie den Netzwerkpfad des fehlerhaften Rechners mit dem eines funktionierenden SLES-Hosts. Überprüfen Sie die für das Betriebssystem und Zypper konfigurierten Proxy-Einstellungen, insbesondere ob der Hostname des Repositorys unerwartet über einen Proxy geleitet oder davon ausgeschlossen wird.
Veröffentlichen Sie keine Proxy-Konfigurationen, die Benutzernamen, Passwörter oder interne Hostnamen enthalten. Wenn Sie den Proxy verwalten, bitten Sie dessen Administrator, den Zeitstempel der Anfrage mit den Proxy-Protokollen abzugleichen und zu bestätigen, ob der Fehler 500 vom Proxy oder vom Upstream-Server verursacht wurde. Ist der direkte Zugriff untersagt, beschränken Sie die Untersuchung auf den genehmigten Proxy-Pfad.
Mayas Beispiel zeigt nun einen klaren Zweig: Ihre anderen Repositories funktionieren, nur der Spiegelserver der Organisation schlägt auf mehreren Servern fehl. Dieses Muster deutet zunächst auf das Team des gemeinsam genutzten Spiegelservers oder Proxys hin, nicht auf ein systemweites SLES-Registrierungsproblem.
4. Überprüfen Sie die SLES-Registrierungs- und Repository-URLs.
Bei Repositories, die über die SUSE-Registrierung bereitgestellt werden, überprüfen Sie die registrierten Produkte und Module des Systems:
SUSEConnect -s
zypper lr -u
SUSE-Dokumente SUSEConnect -szur Überprüfung lokal installierter Produkte und deren Status sowie zypper lr -uzur Auflistung von Repositories mit ihren Quell-URIs. Vergleichen Sie die Ausgabe mit der SLES-Version und den Modulen, die auf diesem System verwendet werden sollen. Eine falsche oder veraltete URI kann zu einem Fehler durch einen nicht mehr unterstützten, nicht übereinstimmenden oder falsch konfigurierten Endpunkt führen.
Falls die Registrierung fehlt oder ein erforderliches Modul nicht registriert ist, befolgen Sie die entsprechende Produktregistrierungsprozedur für Ihre SLES-Version und Ihr Abonnement. Die Registrierungsanleitung von SUSE beschreibt die Registrierung von SLES sowie die Verwaltung von Modulen und Erweiterungen. Registrieren Sie eine Produktionsmaschine nicht als erste Reaktion auf einen HTTP-500-Fehler ab oder erneut: SUSE weist darauf hin, dass durch die Abmeldung die Produkt-Repositories entfernt werden und Registrierungsänderungen mit dem Systemverantwortlichen abgestimmt werden sollten.
Bei einem selbstverwalteten Repository überprüfen Sie, ob die konfigurierte Basis-URL den aktuellen Anweisungen des Repository-Anbieters sowie der installierten SLES-Version und -Architektur entspricht. Ändern Sie den Pfad nicht anhand der Service-Pack-Nummer. Wenn Sie eine URI korrigieren, notieren Sie den ursprünglichen Wert und ändern Sie nur das betroffene Repository über Ihren üblichen Konfigurationsverwaltungsprozess.
5. Nach Wiederherstellung des fehlerfreien Endpunkts einen erneuten Versuch mit erzwungener Aktualisierung unternehmen.
Sobald der Server- oder Proxy-Betreiber bestätigt hat, dass der Endpunkt normal reagiert – oder sobald Sie ein verifiziertes URL-Problem behoben haben –, versuchen Sie die Aktualisierung des Repositorys erneut. Beginnen Sie mit einer normalen Aktualisierung:
sudo zypper refresh
Falls die Metadaten weiterhin veraltet oder unvollständig erscheinen, verwenden Sie die von SUSE dokumentierte vollständige Aktualisierung:
sudo zypper refresh -fdb
Dies zwingt Zypper, die Rohmetadaten herunterzuladen und seine lokale Datenbank neu aufzubauen. Dies ist ein sinnvoller Wiederherstellungsschritt, nachdem der Remote-Endpunkt wieder funktioniert. Falls derselbe HTTP-500-Fehler zurückgegeben wird, sollte der Befehl nicht wiederholt werden, sondern die Untersuchung des Endpunkts, Proxys oder Spiegelservers fortgesetzt werden; ein lokaler Cache-Neuaufbau kann einen serverseitigen Fehler nicht beheben.
6. Sicherer Umgang mit einem defekten optionalen Repository
Wenn ein einzelnes Drittanbieter-Repository nachweislich nicht verfügbar ist und Sie Wartungsarbeiten durchführen müssen, konsultieren Sie den Repository-Inhaber und Ihre Änderungsrichtlinien, bevor Sie es deaktivieren. Zypper kann ein Repository über einen Alias deaktivieren:
sudo zypper modifyrepo --disable REPOSITORY_ALIAS
Verwenden Sie den exakten Alias von zypper lr, und dokumentieren Sie die Änderung. Das Deaktivieren eines Repositorys kann verhindern, dass Software, die darüber installiert wurde, aktualisiert wird. Deaktivieren Sie die zentralen SLES-Update-Repositories nicht pauschal und entfernen Sie keine Repository-Definitionen, nur um einen Fehler zu unterdrücken. Aktivieren Sie ein vorübergehend deaktiviertes Repository wieder, nachdem dessen Verantwortlicher die Wiederherstellung bestätigt hat.
sudo zypper modifyrepo --enable REPOSITORY_ALIAS
Die SLES-Administrationsanleitung beschreibt das Aktivieren und Deaktivieren von Repositories zypper modifyrepo. Das Verhalten der Repositories und die verfügbaren Optionen können je nach installierter Zypper-Version variieren; prüfen Sie zypper help modifyrepoauf dem Host, ob die Optionssyntax abweicht.
Überprüfen Sie die Reparatur.
Schließen Sie mit einer vollständigen Aktualisierung ab und überprüfen Sie, welche Repositories aktiviert und zur Aktualisierung geplant sind:
sudo zypper refresh
zypper lr -u
Ein erfolgreiches Ergebnis bedeutet, dass das zuvor fehlerhafte Repository die Metadatenaktualisierung ohne HTTP-500-Fehler abschließt und die erwarteten Repositories weiterhin mit den korrekten URLs aktiviert bleiben. Wenn die Aktualisierung erst nach Deaktivierung eines Repositorys erfolgreich ist, betrachten Sie dies als temporäre Lösung und nicht als dauerhafte Behebung: Pakete aus dieser Quelle erhalten möglicherweise keine Aktualisierungen mehr.
Im Beispiel von Maya behebt der Mirror-Administrator die serverseitige Antwort. Anschließend führt Maya die normale Aktualisierung durch, prüft -fdbnur, ob die lokalen Metadaten noch neu erstellt werden müssen, und bestätigt, dass der Mirror-Alias nun aktualisiert wird. Dieses Ergebnis ist ein Beispiel für die Diagnosesequenz und kein Bericht über einen realen Test.
Wann sollte man eskalieren?
Wenden Sie sich an das Mirror- oder Proxy-Team, wenn mehrere Clients dieselbe Antwort von einem internen Endpunkt erhalten. Kontaktieren Sie den Repository-Inhaber oder den SUSE-Support, wenn der Fehler nach Überprüfung des lokalen Netzwerkpfads und der Registrierung an einem offiziellen SUSE-Endpunkt reproduzierbar ist. Geben Sie dabei die SLES-Version und das Service Pack, den Repository-Alias, den Hostnamen (sensible Pfaddetails müssen geschwärzt sein), den Zeitstempel und die Zeitzone, ob andere Repositories aktualisiert werden, sowie den HTTP-Status oder einen anonymisierten Fehlerausschnitt an. Diese Informationen helfen dem Dienstinhaber, die fehlerhafte Anfrage nachzuverfolgen, ohne Registrierungscodes oder Anmeldeinformationen preiszugeben.