Nie udało się pobrać repozytorium backportów jessie

155

Używam obrazu dokera jako podstawy dla mojego własnego rozwoju, który dodaje repozytorium backportów jessie do swojego pliku Docker i używa go do zainstalowania zależności. Ten obraz używa następującego polecenia, aby dodać repozytorium:

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

Problem polega na tym, że pobieranie pakietów z repozytorium backports kończy się teraz niepowodzeniem i pojawia się następujący błąd (poprzednio działał):

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

Spojrzałem na ten serwer, a tych ścieżek rzeczywiście tam nie ma.

Próbowałem dowiedzieć się na stronie backports Debiana, czy to konkretne repozytorium powinno być nadal dostępne, i nie znalazłem żadnych oznak, że to było przestarzałe lub coś w tym rodzaju.

Czy to tymczasowy problem z repozytorium, czy też repozytorium jessie-backports nie jest już dostępne? A jeśli to nie jest tymczasowy problem, jakie opcje muszę użyć tego lub równoważnego repozytorium bez aktualizacji do nowszej stabilnej wersji Debiana?

użytkownik12345
źródło
2
Zobacz także unix.stackexchange.com/questions/2544/…
user343761
To jest zasadniczo to samo pytanie, ponieważ aktualizacja apt-get kończy się niepowodzeniem w debianie na Super User .
CVn

Odpowiedzi:

180

Wheezy i Jessie zostały niedawno usunięte z sieci kopii dystrybucyjnych , więc jeśli chcesz kontynuować pobieranie backportów Jessie, musisz archive.debian.orgzamiast tego użyć :

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

(Sprawdzanie poprawności należy wyłączyć, ponieważ repozytorium nie jest już aktualizowane. Jessie aptnie obsługuje check-valid-untilflagi, szczegółowe informacje znajdują się w odpowiedzi Inostii i podsumowaniu konfiguracji w dalszej części tej odpowiedzi).

jessie-updatesRepozytorium został usunięty: wszystkie aktualizacje zostały połączone z głównym repozytorium i nie będzie żadnych dalszych aktualizacje niezwiązane z zabezpieczeniami. Więc wszelkie odniesienia do jessie-updatesw sources.listlub sources.list.dpliki muszą zostać usunięte. Aktualizacje zabezpieczeń będą nadal udostępniane , w architekturach obsługiwanych przez LTS, w repozytorium zabezpieczeń do 30 czerwca 2020 r.

Ponieważ budujesz obraz kontenera, zdecydowanie zalecam oparcie go na Debian 9 (Stretch). Aby pozostać na Debian 8 (Jessie), twoje repozytoria powinny wyglądać tak

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

(bez jessie-updatesrepozytorium).

Musisz także wyłączyć sprawdzanie ważności w /etc/apt/apt.conf(które będzie obowiązywać dla wszystkich repozytoriów):

Acquire::Check-Valid-Until "false";
Stephen Kitt
źródło
1
Przepraszam, moja odpowiedź może nie była aż tak jasna; linia, którą podałem, dotyczyła tylko backportów. jessie-updatesjuż nie istnieje, więc powinieneś je całkowicie usunąć, a aktualizacje zabezpieczeń Jessie są nadal włączone security.debian.org.
Stephen Kitt
2
@Nie, nie, aktualizacje zabezpieczeń są dostarczane security.debian.org, a nie za pośrednictwem backportów lub aktualizacji. Nie będzie więcej stabilnych aktualizacji innych niż LTS, więc jessie-updatesnie jest już przydatny w głównej sieci kopii dystrybucyjnych i nie będzie już więcej backportów, więc to samo dotyczy jessie-backports.
Stephen Kitt
4
Nie działa dla mnie: `` E: Wydanie pliku dla archive.debian.org/debian/dists/jessie-backports/InRelease wygasło (nieważne od 34d 20h 7min 12s). Aktualizacje tego repozytorium nie zostaną zastosowane. ``
Avi Kivity
2
Odkryłem, że kolejne aptpolecenia wydają się również wymagać -o Acquire::Check-Valid-Until=false(na unix.stackexchange.com/a/45973/186565 ), aby uniknąć błędu wygaśnięcia.
sumitsu
2
@sumitsu dziękuję, ustawienie to też apt.confpowinno działać (zobacz moją aktualizację).
Stephen Kitt
42

Po wypróbowaniu rozwiązań sugerowanych przez @inostia i @Stephen Kitt wciąż otrzymywałem następujący błąd:

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.

Doszedłem do wniosku, że można to rozwiązać, usuwając linię deb http://deb.debian.org/debian jessie-updates mainz /etc/apt/sources.list.

Skończyłem z następującym fragmentem kodu w moim pliku Docker:

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
źródło
1
Miałem ten sam problem, co ty, a Twój fragment działał dla mnie!
kawiarnia
1
Musiałem teak te część, ponieważ w moim przypadku obraz dokera (postgres) używał httpredir.debian.org zamiast deb.debian.org.
harrybvp
1
Dziękuję Ci!!! Przez dwa dni walczyłem o naprawienie mojego pliku Docker po zmianie jessie Debiana, wkleiłem twój fragment i wszystko znów działa.
wpjmurray
przepraszam, ale wciąż ten sam problem ....
user1722245
5
Oto zaktualizowana wersja twojego sedpolecenia, która sed -i '/deb http:\/\/\(deb\|httpredir\).debian.org\/debian jessie.* main/d' /etc/apt/sources.list
załatwiła sprawę
26

Zdarzyło mi się to, że udostępniłem Vagrant box, który używał Debiana „Jessie”.

Po odpowiedzi Stephena Kittta przejście na archive.debian.org działało dla mnie, ale musiałem to dodać /etc/apt/sources.list.d/jessie-backports.list, zamiast do /etc/apt/sources.list.

Dodałem następujący wiersz do provision.sh:

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

Wtedy też wystąpił błąd bezpieczeństwa apt-get update.

W związku z tym, jak obejść problem „Plik Release wygasł” na lokalnym serwerze lustrzanym , naprawiono ten błąd:

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

Alternatywnie, aby trwale wyłączyć kontrole, dodaj to do provision.sh:

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

Następnie możesz uruchomić wszystkie aptpolecenia bez -oflagi.

inostia
źródło
1
Czy nie jest niebezpieczne wyłączanie kontroli ważności, które będą miały zastosowanie do wszystkich repozytoriów?
Maxime Lafarie
4

Dla osób używających NodeJS ze starszymi podstawami obrazu dokera. Miałem kilka zamrożonych obrazów, które miały te starsze źródła do kompilacji dodatkowych bibliotek.

Kontekst: jeśli chciałeś zainstalować Pythona podczas kompilacji okna dokowanego, napotkałeś ten problem podczas kompilacji obrazu (w ciągu ostatnich 24 godzin), ponieważ nie udało mu się uzyskać zależności źródłowych podczas kompilacji okna dokowanego.

Wypróbowałem rekomendacje ścieżki archiwum w tym poście, ale nie mogłem przejść dalej niż 404. (również pochodzący z lokalizacji archive.debian.org na dzień dzisiejszy)

Rozwiązanie: Skończyłem z przejściem do najnowszej wersji kontenera węzła (która ma już wstępnie zainstalowane biblioteki Python Lib) i zaktualizowanie niektórych bibliotek Lib w pakiecie json (które teraz obejmują również biblioteki binarne, które kiedyś chciały Pythyona) sprawiły, że problem stał się przestarzały .

Ostatecznie aktualizacja obrazu podstawowego stosu kontenerów (węzeł: najnowszy) wydaje się być najprostszą ścieżką do rozwiązania.

Uważaj na nieaktualne stosy obrazów z uwzględnionymi zależnościami binarnymi, prawdopodobnie zaktualizowanie podstawowej warstwy systemu operacyjnego zajmie trochę czasu.

Glen C.
źródło
Cześć Glen, dzięki za wysłanie wiadomości. Myślę, że mam ten sam problem w pliku dokującym, ponieważ mam „RUN apt-get update -y && apt-get install superwizor python-dev curl -y --force-yes”. Korzystam z węzła FROM: 6.11.2, co muszę zrobić, aby to ominąć?
Aaron
1
W przypadku obrazów Docker Node alternatywą jest użycie tych -stretchobrazów:node:<version>-stretch
lukeaus