Come posso correggere un errore 404 quando utilizzo un PPA o aggiorno i miei elenchi di pacchetti?


266

PPA sembra essere costantemente offline. Ogni volta che utilizzo sudo apt-get update, viene visualizzato questo errore:

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

Come posso correggere questi errori?


Dal momento che questa sembra essere una delle principali risposte "Impossibile recuperare", voglio solo sottolineare che ciò può accadere anche con gli URL "partner" di Ubuntu nella lista di fonti; controlla i tuoi errori per vedere se quelli sono quelli e prova a commentarli. Ho riscontrato quel problema (e la soluzione) di aggiornamento da Quetzal.
joseph_morris

Risposte:


305

Rimozione automatizzata

vai alla fine di questa risposta per un modo con script per rimuovere fonti di software offensive per tutte le versioni di Ubuntu precedenti a Ubuntu 15.04

Quali sono gli errori 404

Il messaggio di errore 404 o Non trovato è un codice di risposta standard HTTP che indica che il client era in grado di comunicare con il server, ma il server non è riuscito a trovare ciò che è stato richiesto.

Il server di hosting del sito Web genererà in genere la pagina Web "404 - Pagina non trovata", quando gli utenti tentano di seguire un collegamento non funzionante o interrotto.

Quali sono le cause di questi errori in Update Manager

In genere, tre aree principali causano questi errori update-manager

  1. Un utente ha appena effettuato l'aggiornamento e ha riattivato una sorgente software PPA che non esiste più inserisci qui la descrizione dell'immagine
  2. Un utente ha inserito manualmente una nuova sorgente software in modo errato inserisci qui la descrizione dell'immagine
  3. È stato aggiunto un PPA, ma il manutentore ha successivamente eliminato parte / tutto il PPA

dove sono queste fonti di software

I PPA vengono generalmente salvati in una delle due posizioni

  1. /etc/apt/sources.list
  2. in un file di nome appropriato con un .list di file-estensione /etc/apt/sources.list.d/, ad esempiowebupd8team-jupiter-natty.list

Questo file elenco in genere contiene:

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

Nota a #all'inizio di una riga di testo significa che è commentato e non controllato dal gestore pacchetti.

Come eliminare questi errori

In genere, se si esegue sudo apt-get updateda un terminale o si fa clic sul pulsante Dettagli in Update Manager dopo aver premuto il pulsante di aggiornamento, verranno visualizzati errori quali:

inserisci qui la descrizione dell'immagine

Se l'errore è dovuto a un PPA, in genere deselezionando PPA con lo stesso nome con l'URL mostrato nel messaggio di errore, questo verrà risolto.

inserisci qui la descrizione dell'immagine

Se l'errore 404 era dovuto a un repository aggiuntivo che è stato aggiunto, è /etc/apt/sources.listpiù facile aggiungere #carattere all'inizio della riga per commentare il repository offensivo, ad es.

gksu gedit /etc/apt/sources.list

inserisci qui la descrizione dell'immagine

Ulteriori informazioni

Ecco una segnalazione di bug sul gestore aggiornamenti per risolvere questo problema:

Se riscontri questi problemi senza PPA, dai un'occhiata a questa domanda:


Grazie mille.
Andrews B Anthony,

51

Rimozione automatica di 404 PPA non trovati tramite script

Questo è uno script per rimuovere automaticamente tutti i 404 PPA non trovati. Copia il codice seguente e incollalo in un file e chiamalo come 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

Autorizza l'esecuzione dello script

sudo chmod +x ppa-remove

Copia e incolla il ppa-removefile nella /usr/bindirectory, in modo che tu possa accedervi da qualsiasi luogo.

uso

sudo ppa-remove

Descrizione dello script

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

tput setaf 6 Il comando trasforma il colore del testo del terminale in verde, quindi visualizza "Inizializzazione .. Attendere" in colore verde.

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;

    Sia stdout che stderr del comando sudo apt-get updatesono scritti nel file/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 cerca la linea che consiste W:, launchpad, 404nel /tmp/update.txtfile.If ha trovato che poi in quella linea visualizza (stdout) tutte le lettere a partire dalla posizione 26 in column5.This standard output è stato reindirizzato (scritto) per il /tmp/awk.txtfile.

Per esempio:

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

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

in quella 5a colonna inizia dal 26 ° carattere- pitti/postgresql/ubuntu/dists/saucy/main/binary-i386/Packages

Questa riga sopra è stata memorizzata nel file. /tmp/awk.txtOra il prossimo comando,

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

awk scopre la colonna1 e la colonna2 con il delimitatore in /cui la colonna1 e la colonna2 sono concatenate /dal /tmp/awk.txtfile e quindi reindirizza (scritto) lo stdout sul /tmp/awk1.txtfile.

Ora il /tmp/awk1.txtfile contiene una pitti/postgresqlriga.

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

Se ci sono due stesse linee, il uniquecomando visualizza (stdout) solo una riga singola. Quella singola riga è stata scritta in /tmp/awk2.txt Infine è /tmp/awk2.txtcostituita da nomi PPA univoci.

tput sgr0

Questo comando cambia il colore del testo del terminale in bianco.

ifVerranno infine eseguite le istruzioni condizionali. if [ -s /tmp/awk2.txt ]controlla il contenuto del file /tmp/awk2.txt presente o meno. In caso affermativo, prende la prima riga da /tmp/awk2.txted esegue il sudo add-apt-repository -r ppa:$linecomando. Continua fino all'ultima riga.

Se no, significa che non ci sono contenuti, quindi dice "Nessun PPA da rimuovere".

Screenshots

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


/ usr / bin / ppa-remove: riga 32: errore di sintassi: fine imprevista del file
Shravan40

21

Stai ricevendo questi errori perché i tuoi repository PPA non forniscono pacchetti per la tua distribuzione di Ubuntu (ie; quantal).

Guarda i seguenti screenshot:

ppa: Petrakis / WDT-principale Logo del launchpad

WDT-principale

PPA: Screenlets / ppa Logo del launchpad

screenlets

Puoi vedere che quantalmanca la directory per e quindi stai ottenendo 404 Not Found Error Messages.

Per sbarazzarsi di questi messaggi è necessario rimuovere questi repository PPA dal sistema. Segui questa domanda su come rimuovere i PPA:


Come indagare su questo e giungere a questa conclusione?

Questi sono i messaggi di errore che ricevi per 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

Apri la scheda del browser e apri il link che fornisce 404 errori non trovati. In questo caso http://ppa.launchpad.net/petrakis/e andare più in profondità secondo il collegamento che fornisce errori. Saresti in grado di vedere qual è il problema reale.


17

Il più probabile che stia accadendo è che il PPA non è più mantenuto e deve essere rimosso. Puoi farlo semplicemente usando:

sudo rm /etc/apt/sources.list.d/ppaname-ppa-$(lsb_release -sc).list*

3
questo ha appena salvato una domanda duplicata dall'essere pubblicato .. Avevo il corpo della mia Q pronto e proprio mentre ho iniziato a digitare il mio titolo ho trovato il link .. perché non tengono tutta la lista in un posto! ce ne sono alcuni in /etc/apt/sources.listcui ho controllato ma non sapevo che dovevo cercare /etc/apt/sources.list.d/anche io .. grazie ..
preciso il

questo e quindi l'aggiunta del nuovo PPA adeguato si è rivelata la migliore (unica soluzione) per me.
markus-tharkun,

4

Scegli Repository precedente

Se hai davvero bisogno dei pacchetti da quel repository, puoi usare i mirror della versione precedente.

Tuttavia, si noti che non tutte le versioni precedenti sono compatibili con le versioni precedenti ; alcuni di essi causano conflitti con il repository dei pacchetti principale.

L'unica cosa che puoi fare quando è in conflitto è costruire dalla fonte o aspettare fino a quando il provider rilascia il repository per la tua versione di Ubuntu. Non sappiamo esattamente quando i fornitori di pacchetti rilasceranno il loro pacchetto per la nostra versione, quindi sei tu il responsabile a controllare il loro repository per la tua versione.

Questo può essere usato con qualsiasi repository basato su Debian. Tuttavia, non vi è alcuna garanzia che ciò abbia successo.

passi

  1. Fare di solito sudo apt updatedopo aver aggiunto PPA / repository. Si può notare che ci sono 404 errori durante l'aggiornamento; basta ignorarlo. 404 Errore
  2. Aprire la directory del repository che causa l'errore 404 con il browser; in questo caso lo è https://dl.winehq.org/wine-builds/ubuntu. Di solito, le versioni disponibili si trovano in dists/. specchi
  3. Dopo averlo individuato, apri Software e aggiornamenti e sostituisci il nome della tua versione con la versione disponibile; preferibilmente l'ultimo o LTS. Sostituisci la sezione "Distribuzione" nei mirror binari e del codice sorgente. In questo caso, sto sostituendo bioniccon artful. inserisci qui la descrizione dell'immagine
  4. Fallo di sudo apt updatenuovo.
  5. Hai finito! Ora non hai più errori 404 durante l'aggiornamento degli elenchi di pacchetti. inserisci qui la descrizione dell'immagine
  6. Quando vengono rilasciati i pacchetti per la versione di Ubuntu, ripetere i passaggi 3 e 4 sostituendo la sezione "Distribuzione" con il nome della distribuzione.

2

Nota che è già successo a me ed ero fuori da queste situazioni. E ha funzionato anche per un mio amico. Pur non potendo spiegare perché, c'è qualcosa che ha risolto quel problema:

  1. Disabilita tutti i tuoi PPA;
  2. Esegui sudo apt-get updatedal terminale;
  3. Riattiva nuovamente i tuoi PPA;
  4. Corri sudo apt-get update;

E improvvisamente ha funzionato. Non chiedermi perchè.


Non ha fatto differenza per me. Ancora 404s.
Kwoxer,

Ho disabilitato alcuni dei PPA indesiderati e ci ho provato sudo apt-get updatee ha funzionato perfettamente.
Shashanth,

1

Se si verifica un errore 404 durante il tentativo di ottenere file di sicurezza o di sistema da un repository ufficiale (non un PPA), è possibile scegliere un mirror diverso per risolvere questo problema.

Puoi:

A) determinane uno manualmente rivedendo questo elenco e scegliendo il mirror più recente. (potresti prendere in considerazione altri fattori come la distanza e la larghezza di banda) o

B) Scegline uno automaticamente.

In entrambi i casi è possibile iniziare con l'applicazione Software e aggiornamenti come mostrato di seguito: Quindi selezionare Scarica da seguito da Altro. Quindi puoi scegliere manualmente il mirror di tua scelta dall'elenco o fare clic sul pulsante Seleziona il server migliore che eseguirà alcuni test e scegli il server migliore per te in base alle condizioni attuali.

SNU


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.