Ich verwende ein Docker-Image als Basis für meine eigene Entwicklung, die das jessie-Backports-Repository in ihre Docker-Datei hinzufügt und damit eine Abhängigkeit installiert. Dieses Image verwendet den folgenden Befehl, um das Repository hinzuzufügen:
echo "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list
Das Problem besteht darin, dass das Abrufen von Paketen aus dem Backports-Repository jetzt mit dem folgenden Fehler fehlschlägt (früher funktionierte dies):
W: Failed to fetch
http://ftp.debian.org/debian/dists/jessie-backports/main/binary-amd64/Packages
404 Not Found
W: Failed to fetch
http://deb.debian.org/debian/dists/jessie-updates/main/binary-amd64/Packages
404 Not Found
Ich habe auf diesem Server gesucht, und diese Pfade sind dort in der Tat nicht vorhanden.
Ich habe versucht, auf der Debian-Backports-Site herauszufinden, ob dieses spezielle Repository noch verfügbar sein sollte, und ich habe keinen Hinweis darauf gefunden, dass dies veraltet ist oder so.
Ist dies ein vorübergehendes Problem mit dem Repository oder ist das jessie-backports-Repository nicht mehr verfügbar? Und wenn dies kein vorübergehendes Problem ist, welche Möglichkeiten habe ich, um dieses oder ein gleichwertiges Repository zu verwenden, ohne auf die neuere stabile Debian-Version zu aktualisieren?
quelle
Antworten:
Wheezy und Jessie wurden kürzlich aus dem Spiegelnetzwerk entfernt. Wenn Sie also weiterhin Jessie-Backports abrufen möchten, müssen Sie
archive.debian.org
stattdessen Folgendes verwenden :(Die Gültigkeitsprüfung muss deaktiviert werden, da das Repository nicht mehr aktualisiert wird. Jessie's
apt
unterstützt dascheck-valid-until
Flag nicht. Weitere Informationen finden Sie in der Antwort von inostia und in der Konfigurationszusammenfassung weiter unten in dieser Antwort.)Das
jessie-updates
Repository wurde entfernt: Alle Aktualisierungen wurden mit dem Hauptrepository zusammengeführt, und es werden keine weiteren nicht sicherheitsrelevanten Aktualisierungen vorgenommen. Verweise aufjessie-updates
insources.list
odersources.list.d
Dateien müssen daher entfernt werden. Sicherheitsupdates werden auf LTS-unterstützten Architekturen weiterhin bis zum 30. Juni 2020 im Sicherheitsrepository bereitgestellt .Da Sie ein Container-Image erstellen, empfehle ich dringend , es stattdessen auf Debian 9 (Stretch) zu basieren. Um auf Debian 8 (Jessie) zu bleiben, sollten Ihre Repositories am Ende so aussehen
(ohne das
jessie-updates
Repository).Sie müssen auch die Gültigkeitsprüfung deaktivieren
/etc/apt/apt.conf
(dies gilt für alle Repositorys):quelle
jessie-updates
gibt es nicht mehr, also solltest du das komplett löschen, und die Jessie-Sicherheitsupdates sind immer noch aktivsecurity.debian.org
.security.debian.org
, nicht über Backports oder Updates. Es wird keine nicht-LTS-stabilen Updates mehr geben, daherjessie-updates
ist dies im Hauptspiegelnetzwerk nicht mehr nützlich, und es werden auch keine Backports mehr vorhanden seinjessie-backports
.apt
Befehle ebenfalls-o Acquire::Check-Valid-Until=false
(per unix.stackexchange.com/a/45973/186565 ) erforderlich zu sein scheinen , um den Ablauffehler zu vermeiden.apt.conf
sollte auch funktionieren (siehe mein update).Nachdem ich die von @inostia und @Stephen Kitt vorgeschlagenen Lösungen ausprobiert hatte, wurde immer noch der folgende Fehler angezeigt:
Ich fand heraus, dass es gelöst werden kann, indem man die Linie
deb http://deb.debian.org/debian jessie-updates main
von entfernt/etc/apt/sources.list
.In meinem Dockerfile habe ich den folgenden Ausschnitt gefunden:
quelle
sed
Befehls, die den Trick für michsed -i '/deb http:\/\/\(deb\|httpredir\).debian.org\/debian jessie.* main/d' /etc/apt/sources.list
Dies geschah mit der Bereitstellung einer Vagrant-Box, die Debian "Jessie" verwendete.
Der Antwort von Stephen Kitt folgend , funktionierte der Wechsel zu archive.debian.org für mich, aber ich musste ihn
/etc/apt/sources.list.d/jessie-backports.list
eher hinzufügen als hinzufügen/etc/apt/sources.list
.Ich habe folgende Zeile hinzugefügt
provision.sh
:Ich habe dann auch einen Sicherheitsfehler ausgeführt
apt-get update
.Das folgende Verfahren zum Umgehen des Problems "Release file expired" (Datei ist abgelaufen) auf einem lokalen Spiegel behebt diesen Fehler:
Alternativ können Sie die Prüfungen auch dauerhaft deaktivieren, indem Sie Folgendes hinzufügen
provision.sh
:Dann können Sie alle
apt
Befehle ohne-o
Flag ausführen .quelle
Für Benutzer von NodeJS mit älteren Docker-Image-Grundlagen. Ich hatte einige eingefrorene Bilder, die diese älteren Quellen für die Kompilierung zusätzlicher Bibliotheken hatten.
Kontext: Wenn Sie Python während eines Docker-Builds installieren wollten, trat dieses Problem während eines Builds des Images (innerhalb der letzten 24 Stunden) auf, da es während eines Docker-Builds keine Quellabhängigkeiten gab.
Ich habe die Archivpfadempfehlungen in diesem Beitrag ausprobiert, kam aber nicht über die 404-Werte hinaus. (Ab heute auch von archive.debian.org)
Lösung: Am Ende habe ich auf die neueste Containerversion des Knotens gewechselt (auf dem bereits Python-Bibliotheken installiert sind), und durch das Aktualisieren einiger Bibliotheken im Paket json (die jetzt auch Binär-Bibliotheken enthalten, die früher Pythyon wollten) wurde das Problem hinfällig .
Am Ende schien die Aktualisierung des Basis-Images für den Container-Stack (Knoten: Aktuell) der direkteste Weg zur Auflösung zu sein.
Seien Sie vorsichtig bei veralteten Image-Stacks mit eingeschlossenen binären Abhängigkeiten. Es wird wahrscheinlich eine Weile dauern, bis die Kernbetriebssystemschicht aktualisiert ist.
quelle
-stretch
Images verwenden:node:<version>-stretch