¿Cómo puedo corregir un error 404 cuando uso un PPA o actualizo mis listas de paquetes?

266

PPA parece estar constantemente fuera de línea. Cada vez que uso sudo apt-get update, se muestra este error:

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

¿Cómo soluciono estos errores?

Pedro
fuente
Dado que esta parece ser una de las principales respuestas de "Error al buscar", solo quiero señalar aquí que esto también puede suceder con las URL de "socios" de Ubuntu en sources.list; revise sus errores para ver si esos son los mismos e intente comentarlos. Me encontré con ese problema (y solución) al actualizar desde Quetzal.
joseph_morris

Respuestas:

305

Eliminación automatizada

salte al final de esta respuesta para obtener una forma programada de eliminar las fuentes de software ofensivas para todas las versiones de ubuntu anteriores a Ubuntu 15.04

¿Qué son los errores 404?

El mensaje de error 404 o No encontrado es un código de respuesta estándar HTTP que indica que el cliente pudo comunicarse con el servidor, pero el servidor no pudo encontrar lo que se solicitó.

El servidor de alojamiento del sitio web generalmente generará la página web "404 - Página no encontrada", cuando los usuarios intenten seguir un enlace roto o inactivo.

¿Cuáles son las causas de estos errores en el administrador de actualizaciones?

Típicamente, tres áreas principales causan estos errores en update-manager

  1. Un usuario acaba de actualizar y ha vuelto a habilitar una fuente de software PPA que ya no existe ingrese la descripción de la imagen aquí
  2. Un usuario ha ingresado manualmente una nueva fuente de software incorrectamente ingrese la descripción de la imagen aquí
  3. Se agregó un PPA, pero el responsable de mantenimiento posteriormente eliminó algunos / todos los PPA

¿Dónde están estas fuentes de software?

Los PPA generalmente se guardan en una de dos ubicaciones

  1. /etc/apt/sources.list
  2. en un archivo con el nombre apropiado con una extensión de archivo .list, /etc/apt/sources.list.d/por ejemplowebupd8team-jupiter-natty.list

Este archivo de lista generalmente contiene:

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

Tenga #en cuenta que a al frente de una línea de texto significa que está comentado y no está marcado por el administrador de paquetes.

Cómo eliminar estos errores.

Por lo general, si ejecuta sudo apt-get updatedesde un terminal o hace clic en el botón Detalles en el Administrador de actualizaciones después de presionar el botón Actualizar, verá errores como:

ingrese la descripción de la imagen aquí

Si el error se debe a un PPA, por lo general, desmarcar el PPA de nombre similar con la URL que se muestra en el mensaje de error resolverá esto.

ingrese la descripción de la imagen aquí

Si el error 404 se debió a un repositorio adicional que se ha agregado, /etc/apt/sources.listentonces es más fácil agregar #caracteres al comienzo de la línea para comentar el repositorio ofensivo, es decir

gksu gedit /etc/apt/sources.list

ingrese la descripción de la imagen aquí

Más información

Aquí hay un informe de error en el administrador de actualizaciones para resolver este problema:

Si tiene estos problemas sin PPA, consulte esta pregunta:

fossfreedom
fuente
Muchas gracias.
Andrews B Anthony
51

Eliminación automática de 404 PPA no encontrados mediante script

Este es un script para eliminar automáticamente todos los PPA 404 No encontrados. Copie el código siguiente y péguelo en un archivo y asígnele el nombre 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

Dar permiso de ejecución al script

sudo chmod +x ppa-remove

Copie y pegue el ppa-removearchivo en el /usr/bindirectorio para poder acceder a él desde cualquier lugar.

Uso

sudo ppa-remove

Descripción del guión

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

tput setaf 6 el comando convierte el color del texto del terminal en verde. Y luego muestra "Inicializando ... Espere" en color 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;

    Tanto stdout como stderr del comando sudo apt-get updatese escriben en el archivo/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 busca la línea que consiste en W:, launchpad, 404en el /tmp/update.txtfile.If se encontró que a continuación, en esa línea se muestra (stdout) todas las letras a partir de la ubicación 26 en column5.This se redirigió la salida estándar (por escrito) al /tmp/awk.txtarchivo.

Por ejemplo:

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

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

en esa quinta columna comienza desde el 26 ° personaje pitti/postgresql/ubuntu/dists/saucy/main/binary-i386/Packages

Esta línea anterior se almacenó en un /tmp/awk.txtarchivo. Ahora, el siguiente comando,

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

awk descubre la columna1 y la columna2 con el delimitador /donde la columna1 y la columna2 se concatenan /desde el /tmp/awk.txtarchivo y luego redirige (escribe) la salida /tmp/awk1.txtestándar al archivo.

Ahora el /tmp/awk1.txtarchivo contiene pitti/postgresqllínea.

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

Si hay dos mismas líneas, el uniquecomando muestra (stdout) una sola línea. Esa sola línea se escribió en /tmp/awk2.txt Finalmente /tmp/awk2.txtconsiste en nombres únicos de PPA.

tput sgr0

Este comando cambia el color del texto del terminal a blanco.

Finalmente ifse ejecutarán declaraciones condicionales. if [ -s /tmp/awk2.txt ]compruebe el contenido del archivo /tmp/awk2.txt presente o no. Si es así, toma la primera línea /tmp/awk2.txty ejecuta el sudo add-apt-repository -r ppa:$linecomando. Continúa hasta la última línea.

Si no, significa que no hay contenido, por lo que dice "No se deben eliminar los PPA".

Capturas de pantalla

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Avinash Raj
fuente
/ usr / bin / ppa-remove: línea 32: error de sintaxis: final inesperado del archivo
Shravan40
21

Obtiene estos errores porque sus repositorios PPA no proporcionan paquetes para su distribución de Ubuntu (es decir, quantal).

Mira las siguientes capturas de pantalla:

ppa: petrakis / wdt-main Logotipo de Launchpad

wdt-main

ppa: screenlets / ppa Logotipo de Launchpad

Screenlets

Puede ver que quantalfalta el directorio para y, por lo tanto, está obteniendo 404 Not Found Error Messages.

Para deshacerse de estos mensajes, debe eliminar estos repositorios PPA de su sistema. Siga esta pregunta sobre cómo eliminar los PPA:


¿Cómo investigar esto y llegar a esta conclusión?

Estos son los mensajes de error que recibe para 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

Abra la pestaña de su navegador y abra el enlace que proporciona 404 errores no encontrados. En este caso http://ppa.launchpad.net/petrakis/e ir más profundo según el enlace que da errores. Podrías ver cuál es el problema real.

Aditya
fuente
17

Lo más probable es que esté sucediendo que el PPA ya no se mantiene y debe eliminarse. Puedes hacer esto simplemente usando:

sudo rm /etc/apt/sources.list.d/ppaname-ppa-$(lsb_release -sc).list*
Braiam
fuente
3
esto solo salvó una pregunta duplicada de ser publicada ... Tenía el cuerpo de mi Q listo y justo cuando comencé a escribir mi título encontré el enlace ... ¡ por qué no guardan toda la lista en un lugar! hay algunos listados en los /etc/apt/sources.listque verifiqué, pero no sabía que tenía que buscar /etc/apt/sources.list.d/también ... gracias ...
preciso
esto y luego agregar el nuevo PPA adecuado resultó ser la mejor solución (solo funciona) para mí.
markus-tharkun
4

Elija un repositorio más antiguo

Si realmente necesita los paquetes de ese repositorio, puede usar los espejos de versiones anteriores.

Sin embargo, tenga en cuenta que no todas las versiones anteriores son compatibles con versiones anteriores ; algunos de ellos causan conflictos con su repositorio principal de paquetes.

Lo único que puede hacer cuando entra en conflicto es construir desde la fuente o esperar hasta que el proveedor publique el repositorio para su versión de Ubuntu. No sabemos exactamente cuándo los proveedores de paquetes lanzarán su paquete para nuestra versión, por lo que usted es el responsable de verificar su repositorio para su lanzamiento.

Esto se puede usar con cualquier repositorio basado en Debian. Sin embargo, no hay garantía de que esto sea exitoso.

Pasos

  1. Haga lo habitual sudo apt updatedespués de agregar PPA / repositorio. Puede notar que hay errores 404 durante la actualización; solo ignora esto. error 404
  2. Abra el directorio del repositorio que causa un error 404 con su navegador; en este caso lo es https://dl.winehq.org/wine-builds/ubuntu. Por lo general, las versiones disponibles se encuentran en dists/. Espejos
  3. Después de localizarlo, abra Software y actualizaciones y reemplace su nombre de lanzamiento con el lanzamiento disponible; preferiblemente más reciente o LTS uno. Reemplace la sección 'Distribución' en espejos binarios y de código fuente. En este caso, estoy reemplazando bioniccon artful. ingrese la descripción de la imagen aquí
  4. Hazlo de sudo apt updatenuevo.
  5. Ya terminaste! Ahora no tiene más errores 404 al actualizar sus listas de paquetes. ingrese la descripción de la imagen aquí
  6. Cuando se lancen los paquetes para su versión de Ubuntu, repita los pasos 3 y 4 reemplazando la sección 'Distribución' con su nombre de distribución.
Aryo Adhi
fuente
2

Tenga en cuenta que ya me pasó a mí y que estaba fuera de estas situaciones. Y también funcionó para un amigo mío. Incluso sin poder explicar por qué, hay algo que resolvió ese problema:

  1. Deshabilite todos sus PPA;
  2. Ejecutar sudo apt-get updatedesde la terminal;
  3. Habilite sus PPA nuevamente;
  4. Correr sudo apt-get update;

Y de repente funcionó. No me preguntes porque.

Danilo
fuente
No hizo ninguna diferencia para mí. Todavía 404s.
kwoxer
Inhabilité algunos de los PPA no deseados y probé sudo apt-get updatey funcionó perfectamente.
Shashanth
1

Si recibe un error 404 al intentar obtener archivos de seguridad o del sistema de un repositorio oficial (no un PPA), puede elegir un espejo diferente para resolver este problema.

Tu también puedes:

A) determine uno manualmente revisando esta lista y eligiendo el espejo más actual. (es posible que desee tener en cuenta otros factores como la distancia y el ancho de banda) o

B) Elija uno automáticamente.

De cualquier manera, puede comenzar con la aplicación Software y actualizaciones como se muestra a continuación: Luego seleccione Descargar de seguido de Otro. Luego puede elegir manualmente el espejo de su elección de la lista o hacer clic en el botón Seleccionar el mejor servidor que ejecutará algunas pruebas y elegirá el mejor servidor para usted según las condiciones actuales.

SnU

Elder Geek
fuente