Jak mogę naprawić błąd 404 podczas korzystania z PPA lub aktualizacji list pakietów?

266

PPA wydaje się być stale offline. Ilekroć używam sudo apt-get update, ten błąd jest wyświetlany:

W: Failed to fetch http://ppa.launchpad.net/ 404  Not Found

Jak naprawić te błędy?

Pedro
źródło
Ponieważ wydaje się, że jest to jedna z głównych odpowiedzi „Nie udało się pobrać”, chcę tutaj jedynie zaznaczyć, że może się to zdarzyć również w przypadku adresów URL „partnerów” Ubuntu w pliku sources.list; sprawdź swoje błędy, aby sprawdzić, czy to są one, i spróbuj je skomentować. Natknąłem się na ten problem (i rozwiązanie) podczas aktualizacji z Quetzal.
joseph_morris

Odpowiedzi:

305

Zautomatyzowane usuwanie

przejdź do dolnej części tej odpowiedzi, aby uzyskać skryptowy sposób usunięcia szkodliwych źródeł oprogramowania dla wszystkich wersji Ubuntu przed Ubuntu 15.04

Co to są błędy 404

Komunikat o błędzie 404 lub „Nie znaleziono” to standardowy kod odpowiedzi HTTP wskazujący, że klient był w stanie komunikować się z serwerem, ale serwer nie mógł znaleźć żądanego żądania.

Serwer hostujący witrynę sieci Web zazwyczaj generuje stronę „404 - Nie znaleziono strony”, gdy użytkownicy próbują użyć uszkodzonego lub martwego łącza.

Jakie są przyczyny tych błędów w menedżerze aktualizacji

Zazwyczaj trzy główne obszary powodują te błędy update-manager

  1. Użytkownik właśnie zaktualizował i ponownie włączył źródło oprogramowania PPA, które już nie istnieje wprowadź opis zdjęcia tutaj
  2. Użytkownik ręcznie wpisał nowe źródło oprogramowania niepoprawnie wprowadź opis zdjęcia tutaj
  3. Dodano PPA, ale opiekun następnie usunął część / całość PPA

gdzie są te źródła oprogramowania

Umowy PPA są zwykle zapisywane w jednej z dwóch lokalizacji

  1. /etc/apt/sources.list
  2. w odpowiednio nazwanym pliku z rozszerzeniem .list, /etc/apt/sources.list.d/na przykładwebupd8team-jupiter-natty.list

Ten plik listy zazwyczaj zawiera:

deb http://ppa.launchpad.net/webupd8team/jupiter/ubuntu oneiric main
# deb-src http://ppa.launchpad.net/webupd8team/jupiter/ubuntu oneiric main

Uwaga: #na początku wiersza tekstu oznacza, że ​​jest on zakomentowany i nie jest sprawdzany przez menedżera pakietów.

Jak wyeliminować te błędy

Zazwyczaj po uruchomieniu sudo apt-get updatez terminala lub kliknięciu przycisku szczegółów w Menedżerze aktualizacji po naciśnięciu przycisku odświeżania zobaczysz błędy, takie jak:

wprowadź opis zdjęcia tutaj

Jeśli błąd wynika z umowy PPA - zwykle odznaczenie PPA o podobnej nazwie z adresem URL pokazanym w komunikacie o błędzie rozwiązuje ten problem.

wprowadź opis zdjęcia tutaj

Jeśli błąd 404 był spowodowany dodaniem dodatkowego repozytorium, /etc/apt/sources.listłatwiej jest dodać #znak na początku wiersza, aby skomentować represyjne repozytorium, tj.

gksu gedit /etc/apt/sources.list

wprowadź opis zdjęcia tutaj

Więcej informacji

Oto raport o błędzie dotyczący menedżera aktualizacji, aby rozwiązać ten problem:

Jeśli występują te problemy bez umów PPA, sprawdź to pytanie:

fossfreedom
źródło
Dziękuję bardzo.
Andrews B Anthony
51

Automatyczne usuwanie 404 Nie znaleziono PPA poprzez skrypt

Jest to skrypt, który automatycznie usuwa wszystkie 404 PPA Nie znaleziono PPA. Skopiuj poniższy kod i wklej go do pliku i nadaj mu nazwę ppa-remove.

#!/bin/bash
sudo rm /tmp/update.txt; tput setaf 6; echo "Initializing.. Please Wait" 
sudo apt-get update >> /tmp/update.txt 2>&1; awk '( /W:/ && /launchpad/ && /404/ ) { print substr($5,26) }' /tmp/update.txt > /tmp/awk.txt; awk -F '/' '{ print $1"/"$2 }' /tmp/awk.txt > /tmp/awk1.txt; sort -u /tmp/awk1.txt > /tmp/awk2.txt
tput sgr0
if [ -s /tmp/awk2.txt ]
then
  tput setaf 1
  printf "PPA's going to be removed\n%s\n" "$(cat /tmp/awk2.txt)"
  tput sgr0
  while read -r line; do echo "sudo add-apt-repository -r ppa:$line"; done < /tmp/awk2.txt > out
  bash out
else
  tput setaf 1
  echo "No PPA's to be removed"
  tput sgr0
fi

Udziel uprawnienia do wykonywania skryptu

sudo chmod +x ppa-remove

Skopiuj i wklej ppa-removeplik do /usr/binkatalogu, aby uzyskać do niego dostęp z dowolnego miejsca.

Stosowanie

sudo ppa-remove

Opis skryptu

[ -f /tmp/update.txt ] && sudo rm /tmp/update.txt; tput setaf 6; echo "Initializing.. Please Wait" || echo "No update file"

tput setaf 6 polecenie zamienia kolor tekstu terminala na zielony, a następnie wyświetla „Inicjowanie .. Proszę czekać” w kolorze zielonym.

sudo apt-get update >> /tmp/update.txt 2>&1; awk '( /W:/ && /launchpad/ && /404/ ) { print substr($5,26) }' /tmp/update.txt > /tmp/awk.txt; awk -F '/' '{ print $1"/"$2 }' /tmp/awk.txt > /tmp/awk1.txt; uniq /tmp/awk1.txt > /tmp/awk2.txt
  1. sudo apt-get update >> /tmp/update.txt 2>&1;

    Zarówno stdout, jak i stderr polecenia sudo apt-get updatesą zapisywane w pliku/tmp/update.txt

  2. awk '( /W:/ && /launchpad/ && /404/ ) { print substr($5,26) }' /tmp/update.txt > /tmp/awk.txt; awk -F '/' '{ print $1"/"$2 }' /tmp/awk.txt > /tmp/awk1.txt;

Awk wyszukuje dla linii, która składa się z W:, launchpad, 404w /tmp/update.txtfile.If okazało się, że to w tym wierszu wyświetla (stdout) wszystkie litery począwszy od 26. miejscu w column5.This standardowe wyjście zostało przekierowanych (pisemne) do /tmp/awk.txtpliku.

Na przykład:

W: Failed to fetch http://ppa.launchpad.net/pitti/postgresql/ubuntu/dists/saucy/main/binary-i386/Packages  404  Not Found

5. kolor - http://ppa.launchpad.net/pitti/postgresql/ubuntu/dists/saucy/main/binary-i386/Packages

w tej piątej kolumnie zaczynamy od 26 znaku pitti/postgresql/ubuntu/dists/saucy/main/binary-i386/Packages

Ta powyższa linia została zapisana w /tmp/awk.txtpliku. Teraz następne polecenie,

awk -F '/' '{ print $1"/"$2 }' /tmp/awk.txt > /tmp/awk1.txt;  

awk znajduje kolumnę 1 i kolumnę 2 za pomocą separatora, w /którym kolumna 1 i kolumna 2 są łączone /z /tmp/awk.txtpliku, a następnie przekierowuje (zapisuje) standardowe wyjście do /tmp/awk1.txtpliku.

Teraz /tmp/awk1.txtplik zawiera pitti/postgresqllinię.

uniq /tmp/awk1.txt > /tmp/awk2.txt

Jeśli są dwa takie same wiersze, uniquepolecenie wyświetla tylko (standardowe wyjście) tylko jeden wiersz. Ten pojedynczy wiersz został zapisany w /tmp/awk2.txt końcu /tmp/awk2.txtskłada się z unikalnych nazw PPA.

tput sgr0

To polecenie zmienia kolor tekstu terminala na biały.

W końcu ifzostaną wykonane instrukcje warunkowe. if [ -s /tmp/awk2.txt ]sprawdź, czy zawartość pliku /tmp/awk2.txt jest wyświetlana, czy nie. Jeśli tak, pobiera pierwszy wiersz /tmp/awk2.txti wykonuje sudo add-apt-repository -r ppa:$linepolecenie. Kontynuuje aż do ostatniego wiersza.

Jeśli nie, oznacza to, że nie ma treści, więc mówi „Żadnych umów PPA do usunięcia”.

Zrzuty ekranu

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Avinash Raj
źródło
/ usr / bin / ppa-remove: line 32: błąd składniowy: nieoczekiwany koniec pliku
Shravan40
21

Otrzymujesz te błędy, ponieważ Twoje repozytoria PPA nie zapewniają pakietów dla twojej dystrybucji Ubuntu (tj; quantal).

Spójrz na następujące zrzuty ekranu:

ppa: petrakis / wdt-main Logo Launchpad

wdt-main

ppa: screenlets / ppa Logo Launchpad

screenlety

Możesz zobaczyć, że quantalbrakuje katalogu dla, a więc dostajesz 404 Not Found Error Messages.

Aby pozbyć się tych wiadomości, musisz usunąć te repozytoria PPA ze swojego systemu. Wykonaj następujące pytanie, jak usunąć PPA:


Jak to zbadać i dojść do takiego wniosku?

Oto komunikaty o błędach otrzymane w przypadku wdt-mainPPA:

W:Failed to fetch http://ppa.launchpad.net/petrakis/wdt-main/ubuntu/dists/quantal/main/source/Sources  404  Not Found
, W:Failed to fetch http://ppa.launchpad.net/petrakis/wdt-main/ubuntu/dists/quantal/main/binary-amd64/Packages  404  Not Found
, W:Failed to fetch http://ppa.launchpad.net/petrakis/wdt-main/ubuntu/dists/quantal/main/binary-i386/Packages  404  Not Found

Otwórz kartę przeglądarki i otwórz link, który podaje błędy 404 nie znaleziono. W takim przypadku http://ppa.launchpad.net/petrakis/idź głębiej jak na link, który daje błędy. Będziesz mógł zobaczyć, jaki jest rzeczywisty problem.

Aditya
źródło
17

Najbardziej prawdopodobne jest to, że umowa PPA nie jest już utrzymywana i należy ją usunąć. Możesz to zrobić, używając:

sudo rm /etc/apt/sources.list.d/ppaname-ppa-$(lsb_release -sc).list*
Braiam
źródło
3
to po prostu uratowało zduplikowane pytanie przed opublikowaniem. Miałem już gotową treść mojego Q i kiedy zacząłem pisać tytuł, znalazłem link .. dlaczego nie przechowują całej listy w jednym miejscu! jest kilka wymienionych w /etc/apt/sources.listmiejscu, w którym sprawdziłem, ale nie wiedziałem, że muszę też zajrzeć /etc/apt/sources.list.d/... dzięki ..
dokładnie
to, a następnie dodanie odpowiedniego nowego PPA okazało się dla mnie najlepszym (działającym) rozwiązaniem.
markus-tharkun
4

Wybierz Starsze repozytorium

Jeśli naprawdę potrzebujesz pakietów z tego repozytorium, możesz użyć kopii lustrzanych ze starszej wersji.

Należy jednak pamiętać, że nie wszystkie starsze wersje są kompatybilne wstecz ; niektóre z nich powodują konflikty z głównym repozytorium pakietów.

Jedyne, co możesz zrobić w przypadku konfliktu, to albo zbudować ze źródła, albo poczekać, aż dostawca zwolni repozytorium dla twojej wersji Ubuntu. Nie wiemy dokładnie, kiedy dostawcy pakietów udostępnią pakiet dla naszej wersji, więc to ty jesteś odpowiedzialny za sprawdzenie ich repozytorium pod kątem wydania.

Można tego używać z dowolnym repozytorium opartym na Debianie. Nie ma jednak gwarancji, że to się powiedzie.

Kroki

  1. Zrób to zwykle sudo apt updatepo dodaniu PPA / repozytorium. Podczas aktualizacji można zauważyć błędy 404; zignoruj ​​to. Błąd 404
  2. Otwórz katalog repozytorium, który powoduje błąd 404 w przeglądarce; w tym przypadku tak jest https://dl.winehq.org/wine-builds/ubuntu. Zwykle dostępne wersje znajdują się w dists/. Lustra
  3. Po zlokalizowaniu otwórz oprogramowanie i aktualizacje i zastąp nazwę wydania dostępną wersją; najlepiej najnowszy lub LTS. Zamień sekcję „Dystrybucja” w lustrach binarnych i źródłowych. W tym przypadku, mam wymianie bionicz artful. wprowadź opis zdjęcia tutaj
  4. Zrób to sudo apt updatejeszcze raz.
  5. Jesteś skończony! Teraz nie ma więcej błędów 404 podczas aktualizowania list pakietów. wprowadź opis zdjęcia tutaj
  6. Po wydaniu pakietów dla wersji Ubuntu powtórz krok 3 i 4, zastępując sekcję „Dystrybucja” swoją nazwą dystrybucji.
Aryo Adhi
źródło
2

Zauważ, że już mi się to przydarzyło i nie znalazłem się w takich sytuacjach. I działało to również dla mojego przyjaciela. Nawet nie będąc w stanie wyjaśnić, dlaczego istnieje coś, co rozwiązało ten problem:

  1. Wyłącz wszystkie umowy PPA;
  2. Uruchom sudo apt-get updatez terminala;
  3. Włącz ponownie umowy PPA;
  4. Uruchom sudo apt-get update;

I nagle zadziałało. Nie pytaj mnie dlaczego.

Danilo
źródło
Nie miało dla mnie znaczenia. Nadal 404.
kwoxer
Wyłączyłem niektóre niechciane umowy PPA i próbowałem sudo apt-get updatei zadziałało idealnie.
Shashanth
1

Jeśli otrzymujesz błąd 404 podczas próby uzyskania bezpieczeństwa lub plików systemowych z oficjalnego repozytorium (nie PPA), możesz wybrać inne dublowanie, aby rozwiązać ten problem.

Możesz albo:

A) określ jedną ręcznie, przeglądając tę listę i wybierając najnowszą kopię lustrzaną. (możesz wziąć pod uwagę inne czynniki, takie jak odległość i przepustowość) lub

B) Wybierz jeden automatycznie.

Tak czy inaczej możesz zacząć od aplikacji Oprogramowanie i aktualizacje, jak pokazano poniżej: Następnie wybierz Pobierz z, a następnie Inne. Następnie możesz albo ręcznie wybrać z listy kopię lustrzaną, albo kliknąć przycisk Wybierz najlepszy serwer, który uruchomi niektóre testy i wybrać najlepszy serwer dla ciebie w zależności od aktualnych warunków.

SnU

Starszy Geek
źródło