J'utilise une image docker comme base pour mon propre développement qui ajoute le référentiel jessie backports dans son Dockerfile et l'utilise pour installer une dépendance. Cette image utilise la commande suivante pour ajouter le référentiel:
echo "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list
Le problème est que la récupération des packages à partir du référentiel backports échoue maintenant avec l'erreur suivante (cela fonctionnait auparavant):
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
J'ai regardé sur ce serveur, et ces chemins n'y sont en effet pas présents.
J'ai essayé de comprendre sur le site de rétroportages Debian si ce référentiel particulier devait toujours être disponible, et je n'ai trouvé aucune indication que cela était obsolète ou quelque chose comme ça.
Est-ce un problème temporaire avec le référentiel ou le référentiel jessie-backports n'est-il plus disponible? Et s'il ne s'agit pas d'un problème temporaire, quelles options dois-je utiliser pour utiliser ceci ou un référentiel équivalent sans passer à la nouvelle version stable de Debian?
Wheezy et Jessie ont récemment été supprimés du réseau miroir , donc si vous souhaitez continuer à récupérer les rétroportages de Jessie, vous devez utiliser archive.debian.org
au lieu:
deb [check-valid-until=no] http://archive.debian.org/debian jessie-backports main
(Les vérifications de validité doivent être désactivées car le référentiel n'est plus mis à jour. apt
de Jessie ne prend pas en charge le check-valid-until
flag, voir réponse inostia pour plus de détails et le résumé de la configuration plus bas dans cette réponse.)
Le jessie-updates
le référentiel a été supprimé: toutes les mises à jour ont été fusionnées avec le référentiel principal et il n'y aura plus de mises à jour non liées à la sécurité. Donc, toute référence à jessie-updates
dans sources.list
ou sources.list.d
les fichiers doivent être supprimés. Mises à jour de sécurité continueront d'être fournies , sur les architectures prises en charge par LTS, dans le référentiel de sécurité, jusqu'au 30 juin 2020.
Puisque vous construisez une image de conteneur, je fortement recommande plutôt de la baser sur Debian 9 (Stretch). Pour rester sur Debian 8 (Jessie), vos référentiels devraient finir par ressembler à
deb http://cdn-fastly.deb.debian.org/debian/ jessie main
deb-src http://cdn-fastly.deb.debian.org/debian/ jessie main
deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main
deb http://archive.debian.org/debian jessie-backports main
deb-src http://archive.debian.org/debian jessie-backports main
(sans le jessie-updates
référentiel).
Vous devrez également désactiver les contrôles de validité dans /etc/apt/apt.conf
(qui s'appliquera à tous les référentiels):
Acquire::Check-Valid-Until "false";
Après avoir essayé les solutions suggérées par @inostia et @Stephen Kitt, j'obtenais toujours l'erreur suivante:
W: Failed to fetch http://deb.debian.org/debian/dists/jessie-updates/main/binary-AMD64/Packages 404 Not Found
E: Some index files failed to download. They have been ignored, or old ones used instead.
J'ai compris qu'il peut être résolu en supprimant la ligne deb http://deb.debian.org/debian jessie-updates main
de /etc/apt/sources.list
.
Je me suis retrouvé avec l'extrait de code suivant dans mon Dockerfile:
RUN echo "deb [check-valid-until=no] http://cdn-fastly.deb.debian.org/debian jessie main" > /etc/apt/sources.list.d/jessie.list
RUN echo "deb [check-valid-until=no] http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/jessie-backports.list
RUN sed -i '/deb http:\/\/deb.debian.org\/debian jessie-updates main/d' /etc/apt/sources.list
RUN apt-get -o Acquire::Check-Valid-Until=false update
Cela m'est arrivé en approvisionnant une boîte Vagrant qui utilisait Debian "Jessie".
Après réponse de Stephen Kitt , le passage à archive.debian.org a fonctionné pour moi, mais j'ai dû l'ajouter à /etc/apt/sources.list.d/jessie-backports.list
, plutôt que /etc/apt/sources.list
.
J'ai ajouté la ligne suivante à provision.sh
:
echo "deb http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/jessie-backports.list
J'ai également eu une erreur de sécurité en cours d'exécution apt-get update
.
Suivant Comment contourner le problème "Le fichier de sortie a expiré" sur un miroir local , cela a corrigé cette erreur:
apt-get -o Acquire::Check-Valid-Until=false update
Alternativement, pour désactiver définitivement les vérifications, ajoutez ceci à provision.sh
:
echo "Acquire::Check-Valid-Until \"false\";" > /etc/apt/apt.conf.d/100disablechecks
Ensuite, vous pouvez exécuter toutes les commandes apt
sans -o
drapeau.
Pour ceux qui utilisent NodeJS avec d'anciennes fondations d'images Docker. J'avais des images figées qui avaient ces anciennes sources pour la compilation de bibliothèques supplémentaires.
Contexte: si vous vouliez installer python lors d'une génération de docker, vous avez rencontré ce problème lors de la génération de l'image (au cours des dernières 24 heures) car il n'a pas réussi à générer des dépendances lors d'une génération de docker.
J'ai essayé les recommandations de chemin d'archivage dans ce post, mais je n'ai pas pu dépasser les 404. (provenant également de l'emplacement archive.debian.org à partir d'aujourd'hui)
Solution: j'ai fini par passer à la dernière version de conteneur de node (qui a python libs déjà préinstallées)) et à mettre à jour certaines librairies dans le paquet json (qui inclut maintenant aussi des libs binaires qui avait l'habitude de vouloir pythyon) a rendu le problème obsolète.
En fin de compte, la mise à jour de l'image de base de la pile de conteneurs (nœud: dernier) semblait être le chemin le plus simple vers la résolution.
Méfiez-vous des piles d'images périmées avec les dépendances binaires incluses, elles mettront probablement un certain temps à mettre à jour la couche centrale du système d'exploitation.
Si rien ne fonctionne plus, avec un panel de ces erreurs:
Unable to correct missing packages.
WARNING: The following packages cannot be authenticated!
W: GPG error
W: An error occurred during the signature verification.
Updates for this repository will not be applied.
E: Failed to fetch
E: Aborting install
Envisagez une mise à niveau complète de la distribution et un nettoyage de la liste des sources pour enregistrer votre machine. Cela ne prendra que quelques minutes avec ces notes, mais c'est le pire.
Première visite /etc/apt/sources.list.d/
, et supprimez tout. ( Faites des sauvegardes ).
Éditer /etc/apt/sources.list
, ne laissez que cette ligne:
deb http://ftp.us.debian.org/debian stable main contrib
Ensuite, en tant que root, exécutez:
aptitude update
aptitude full-upgrade
Confirmez les différents messages. Alors essaye:
Sudo apt update
Ne devrait soulever aucune erreur, confirmant simplement:
Reading package lists... Done
Certains packages différents peuvent provoquer des conflits , dans ces cas, à utiliser une seule fois, cela résoudra les différents conflits:
Sudo aptitude -y install packagename otherpackagename
Autre erreur possible:
W: There is no public key available for the following key IDs:
*648ACFXXXXX2FAB138*
Pour résoudre, importez les clés publiques comme spécifié:
Sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFXXXXX2FAB138
Vous pourriez toucher un message très rare!
A reboot is required to replace the running dbus-daemon.
Please reboot the system when convenient.
Vous pourriez rencontrer un problème avec les anciens noyaux et libc:
Kernel must be upgraded
This version of the GNU libc requires kernel version 3.2 or later. Please upgrade your kernel
N'appliquez pas ces notes aux serveurs publics. Optez toujours pour le dernier LTS.
https://www.debian.org/doc/manuals/debian-faq/ch-uptodate.fr.html