Falha ao buscar o repositório de backports de jessie

158

Estou usando uma imagem do docker como base para o meu próprio desenvolvimento que adiciona o repositório jessie backports em seu Dockerfile e o usa para instalar uma dependência. Esta imagem usa o seguinte comando para adicionar o repositório:

echo "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list

O problema é que a busca de pacotes do repositório de backports agora falha com o seguinte erro (isso costumava funcionar anteriormente):

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

Eu olhei nesse servidor e esses caminhos realmente não estão presentes lá.

Eu tentei descobrir no site de backports da Debian se esse repositório em particular ainda deveria estar disponível, e não encontrei nenhuma indicação de que isso foi descontinuado ou algo parecido.

Esse é um problema temporário com o repositório ou o repositório jessie-backports não está mais disponível? E se este não é um problema temporário, que opções eu tenho para usar este repositório ou um equivalente, sem precisar atualizar para a versão estável mais recente do Debian?

user12345
fonte
2
Veja também unix.stackexchange.com/questions/2544/…
user343761
Esta é essencialmente a mesma pergunta que o apt-get update está falhando no debian no Super Usuário .
um CVn 27/03

Respostas:

183

Wheezy e Jessie foram removidos recentemente da rede de espelhos . Portanto, se você quiser continuar buscando backports de Jessie, precisará usar archive.debian.org:

deb [check-valid-until=no] http://archive.debian.org/debian jessie-backports main

(As verificações de validade precisam ser desativadas, pois o repositório não está mais sendo atualizado. Jessie's aptnão suporta o check-valid-untilsinalizador, consulte a resposta da inostia para obter detalhes e o resumo da configuração mais abaixo nesta resposta.)

O jessie-updatesrepositório foi removido: todas as atualizações foram mescladas com o repositório principal e não haverá mais atualizações que não sejam de segurança. Portanto, qualquer referência a jessie-updatesin sources.listou sources.list.darquivos precisa ser removida. As atualizações de segurança continuarão sendo fornecidas , nas arquiteturas suportadas pelo LTS, no repositório de segurança, até 30 de junho de 2020.

Desde que você está construindo uma imagem de recipiente, eu altamente recomendo baseando-se no Debian 9 (estiramento) em vez. Para permanecer no Debian 8 (Jessie), seus repositórios devem acabar parecendo

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

(sem o jessie-updatesrepositório).

Você também precisará desativar as verificações de validade /etc/apt/apt.conf(que serão aplicadas a todos os repositórios):

Acquire::Check-Valid-Until "false";
Stephen Kitt
fonte
1
Desculpe, minha resposta talvez não tenha sido tão clara; a linha que dei foi apenas para backports. jessie-updatesnão existe mais, portanto, você deve excluí-lo completamente, e as atualizações de segurança de Jessie ainda estão ativadas security.debian.org.
Stephen Kitt
2
@ Não, as atualizações de segurança são fornecidas security.debian.org, não através de backports ou atualizações. Não haverá mais atualizações estáveis ​​que não sejam LTS; portanto, jessie-updatesnão será mais útil na rede principal de espelhos e também não haverá mais backports, portanto, o mesmo vale jessie-backports.
Stephen Kitt
5
Não está funcionando para mim: `` E: O arquivo de lançamento para archive.debian.org/debian/dists/jessie-backports/InRelease expirou (inválido desde 34d 20h 7min 12s). As atualizações para este repositório não serão aplicadas. ``
Avi Kivity 26/03
2
Verificou que os aptcomandos subseqüentes também parecem exigir -o Acquire::Check-Valid-Until=false(por unix.stackexchange.com/a/45973/186565 ) para evitar o erro de expiração.
sumitsu 26/03
2
@ sumitsu obrigado, definindo que apt.conftambém deve funcionar (consulte a minha atualização).
Stephen Kitt
43

Depois de tentar soluções sugeridas por @inostia e @Stephen Kitt, ainda estava recebendo o seguinte erro:

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.

Eu descobri que isso pode ser resolvido removendo a linha deb http://deb.debian.org/debian jessie-updates mainde /etc/apt/sources.list.

Acabei com o seguinte trecho no meu 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
henadzit
fonte
1
Eu tive o mesmo problema que você e seu snippet funcionou para mim!
cafemike 27/03
1
Eu tive que tecer parte como no meu caso, a imagem do docker (postgres) estava usando o activationpredir.debian.org em vez do deb.debian.org.
harrybvp 27/03
1
Obrigado!!! Estou lutando há dois dias para consertar meu Dockerfile após a mudança de Debian Jessie, colei seu snippet e tudo está funcionando novamente.
wpjmurray 28/03
desculpe, mas ainda o mesmo problema ....
user1722245 28/03
5
Aqui está uma versão atualizada do seu sedcomando que fez o truque para mim:sed -i '/deb http:\/\/\(deb\|httpredir\).debian.org\/debian jessie.* main/d' /etc/apt/sources.list
speedplane
26

Isso aconteceu comigo provisionando uma caixa do Vagrant que estava usando o Debian "Jessie".

Seguindo a resposta de Stephen Kitt , mudar para archive.debian.org funcionou para mim, mas eu tive que adicioná-lo ao /etc/apt/sources.list.d/jessie-backports.listinvés de fazê-lo /etc/apt/sources.list.

Eu adicionei a seguinte linha a provision.sh:

echo "deb http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/jessie-backports.list

Eu também recebi um erro de segurança em execução apt-get update.

A seguir, Como solucionar o problema "Liberar arquivo expirado" em um espelho local , isso corrigiu o erro:

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

Como alternativa, para desativar as verificações permanentemente, adicione isso a provision.sh:

echo "Acquire::Check-Valid-Until \"false\";" > /etc/apt/apt.conf.d/100disablechecks

Então você pode executar todos os aptcomandos sem o -osinalizador.

inostia
fonte
1
Não é perigoso desativar as verificações de validade que serão aplicadas a todos os repositórios?
Maxime Lafarie
4

Para aqueles que usam o NodeJS com fundações mais antigas de imagem do docker. Eu tinha algumas imagens congeladas que tinham essas fontes mais antigas para a compilação de bibliotecas extras.

Contexto: se você queria instalar o python durante uma construção do docker, você se deparou com esse problema durante a construção da imagem (nas últimas 24 horas), pois ele falhou ao originar dependências durante a construção do docker.

Eu tentei as recomendações de caminho de arquivo neste post, mas não consegui passar dos 404. (também vindo do local archive.debian.org até hoje)

Solução: acabei alternando para a versão mais recente do contêiner do nó (que já possui bibliotecas python pré-instaladas) que, e atualizando algumas bibliotecas no pacote json (que agora também incluem bibliotecas binárias que costumavam querer pythyon) tornaram o problema obsoleto .

No final, atualizar a imagem de fundação da pilha de contêineres (nó: mais recente) parecia ser o caminho mais direto para a resolução.

Desconfie de pilhas de imagens obsoletas com dependências binárias incluídas, elas provavelmente levarão um tempo para atualizar a camada principal do sistema operacional.

Glen C.
fonte
Oi Glen, obrigado por postar. Acho que estou enfrentando o mesmo problema no dockerfile, pois tenho "RUN apt-get update -y &&& apt-get install supervisor python python-dev curl -y --force-yes". Estou usando o nó FROM: 6.11.2, o que devo fazer para superar isso?
Aaron
1
Para imagens do Docker Node, uma alternativa é usar as -stretchimagens:node:<version>-stretch
lukeaus