45 votes

Obtenir "La version n'est pas encore valide" lors de la mise à jour du conteneur Docker Ubuntu

Je tente de mettre à jour un conteneur ubuntu avec un dockerfile.

RUN apt-get update -y

Mais je reçois l'erreur suivante.

E: Le fichier de publication pour http://security.ubuntu.com/ubuntu/dists/bionic-security/InRelease n'est pas encore valide (invalide pour encore 9h 14min 10s). Les mises à jour pour ce dépôt ne seront pas appliquées.
E: Le fichier de publication pour http://archive.ubuntu.com/ubuntu/dists/bionic-updates/InRelease n'est pas encore valide (invalide pour encore 9h 14min 16s). Les mises à jour pour ce dépôt ne seront pas appliquées.
E: Le fichier de publication pour http://archive.ubuntu.com/ubuntu/dists/bionic-backports/InRelease n'est pas encore valide (invalide pour encore 9h 14min 35s). Les mises à jour pour ce dépôt ne seront pas appliquées.

J'ai vérifié quelques autres solutions au même problème comme ajouter Acquire::Check-Valid-Until=false à apt-get comme ci-dessous

RUN apt-get -o Acquire::Check-Valid-Until="false" update -y

Le code ci-dessus échoue également.

70voto

Dennis Points 801

Redémarrez docker (ou votre ordinateur pour être sûr) car l'horloge système est désynchronisée.

J'ai passé quelques heures à essayer de comprendre ce qui se passait et le redémarrage l'a immédiatement réglé.

31voto

guiverc Points 23598

Corrigez l'horloge de votre système. (dans les commentaires, j'ai également suggéré de vérifier s'il y a un décalage entre l'horloge et votre fuseau horaire)

Consultez Quelle est l'instruction en ligne de commande pour changer l'heure système ? pour définir l'heure du système (je suggère d'aller à la réponse de timedatectl si vous utilisez une version d'Ubuntu "moderne"), ou http://manpages.ubuntu.com/manpages/xenial/man8/hwclock.8.html (si vous voulez régler l'horloge matérielle directement ; mais n'oubliez pas de l'associer à votre configuration de fuseau horaire)

19voto

Ruben Faelens Points 191

Si vous utilisez Docker, un bogue a été récemment introduit dans la version 2.2.0 qui provoque un décalage de temps lorsque l'ordinateur hôte passe en veille. Cela désynchronise tous les conteneurs Docker en cours d'exécution, entraînant des erreurs telles que celle-ci.

Voir https://github.com/docker/for-win/issues/5593 pour suivre la solution et les contournements proposés.

Cette question a été posée en 2018, lorsque ce bogue n'était pas encore présent dans Docker. Maintenant, ce bogue est présent, donc ce bogue peut être le problème pour les personnes qui trouvent ce message aujourd'hui.

16voto

0x8BADF00D Points 546

J'ai résolu mon problème avec la mise à jour de l'heure :

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
sudo apt update

7voto

user2824140 Points 171

Cela n'a pas fonctionné pour moi :

apt-get -o Acquire::Check-Valid-Until="false" update

mais ceci a fonctionné :

apt-get -o Acquire::Max-FutureTime=86400 update

86400 est le nombre de secondes dans une journée. Si votre horloge est décalée de plus que cela, vous devrez augmenter la valeur.

Attention : Les guillemets peuvent l'amener à considérer le nombre comme une chaîne de caractères. Le shell normalement éliminera une paire de guillemets, mais -o 'Acquire::Max-FutureTime="86400"' aurait uniquement les guillemets simples éliminés par le shell, et apt-get verrait les guillemets doubles autour du nombre.

J'ai essayé ceci car GetNotBefore() dans acquire-item.cc renvoie d->NotBefore qui semble seulement être affecté par Acquire::Max-FutureTime.

https://github.com/Debian/apt/blob/master/apt-pkg/acquire-item.cc#L1758-L1775 https://github.com/Debian/apt/blob/master/apt-pkg/deb/debmetaindex.cc#L543-L555

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X