Как я могу исправить ошибку 404 при использовании PPA или обновлении списков моих пакетов?

266

PPA, кажется, постоянно в автономном режиме. Всякий раз, когда я использую sudo apt-get update, эта ошибка отображается:

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

Как я могу исправить эти ошибки?

Pedro
источник
Поскольку это, кажется, один из основных ответов «Не удалось получить», я просто хочу отметить, что это также может произойти с URL-адресами «партнера» Ubuntu в sources.list; проверьте свои ошибки, чтобы увидеть, если это те, и попробуйте закомментировать их. Я столкнулся с этой проблемой (и решением) обновления с Кетцаль.
joseph_morris

Ответы:

305

Автоматическое удаление

перейдите к нижней части этого ответа, чтобы найти скрипт-способ удаления источников программного обеспечения для всех версий Ubuntu до Ubuntu 15.04.

Какие 404 ошибки

Сообщение об ошибке 404 или Not Found - это стандартный код ответа HTTP, указывающий, что клиент смог установить связь с сервером, но сервер не смог найти то, что было запрошено.

Сервер размещения веб-сайтов обычно создает веб-страницу «404 - Страница не найдена», когда пользователи пытаются перейти по неработающей или неработающей ссылке.

Каковы причины этих ошибок в менеджере обновлений?

Как правило, три основные области вызывают эти ошибки в update-manager

  1. Пользователь только что обновил и повторно включил источник программного обеспечения PPA, который больше не существует введите описание изображения здесь
  2. Пользователь вручную ввел новый программный источник неправильно введите описание изображения здесь
  3. Был добавлен PPA, но сопровождающий впоследствии удалил некоторые / все PPA

где эти программные источники

PPA обычно сохраняются в одном из двух мест

  1. /etc/apt/sources.list
  2. в файле с соответствующим именем с расширением .list, /etc/apt/sources.list.d/например, вwebupd8team-jupiter-natty.list

Этот файл списка обычно содержит:

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

Обратите внимание, что #в начале строки текста означает, что она закомментирована и не проверяется менеджером пакетов.

Как устранить эти ошибки

Как правило, если вы запускаете sudo apt-get updateиз терминала или нажимаете кнопку сведений в диспетчере обновлений после нажатия кнопки обновления, вы увидите такие ошибки, как:

введите описание изображения здесь

Если ошибка происходит из-за PPA - обычно снятие галочки с одноименного PPA с URL-адресом, указанным в сообщении об ошибке, разрешит эту проблему.

введите описание изображения здесь

Если ошибка 404 произошла из-за дополнительного репозитория, который был добавлен, /etc/apt/sources.listто проще добавить #символ в начале строки, чтобы закомментировать некорректный репозиторий, т.е.

gksu gedit /etc/apt/sources.list

введите описание изображения здесь

Больше информации

Вот отчет об ошибке в диспетчере обновлений для решения этой проблемы:

Если вы получаете эти проблемы без PPA, проверьте этот вопрос:

fossfreedom
источник
Огромное спасибо.
Эндрюс Б. Энтони
51

Автоматическое удаление 404 Не найден PPA через скрипт

Это скрипт для автоматического удаления всех PPA 404 Not found. Скопируйте приведенный ниже код, вставьте его в файл и назовите его как 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

Дать разрешение на выполнение скрипту

sudo chmod +x ppa-remove

Скопируйте и вставьте ppa-removeфайл в /usr/binкаталог. Так что вы можете получить к нему доступ из любого места.

использование

sudo ppa-remove

Описание сценария

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

tput setaf 6 Команда превращает цвет текста терминала в зеленый. И затем он отображает «Инициализация .. Пожалуйста, подождите» зеленым цветом.

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;

    И stdout, и stderr команды sudo apt-get updateзаписываются в файл/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 ищет линии , которая состоит из W:, launchpad, 404в /tmp/update.txtfile.If он обнаружил , что то в этой строке отображается (STDOUT) все буквы , начиная с 26 - го места в column5.This стандартный вывод был перенаправлен (письменно) в /tmp/awk.txtфайл.

Например:

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

5-я колонна - http://ppa.launchpad.net/pitti/postgresql/ubuntu/dists/saucy/main/binary-i386/Packages

в этом 5-м столбце начинаются с 26-го символа pitti/postgresql/ubuntu/dists/saucy/main/binary-i386/Packages

Эта строка была сохранена в /tmp/awk.txtфайл. Теперь следующая команда,

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

awk находит столбцы column1 и column2 с разделителем, в /котором столбцы column1 и column2 объединяются /из /tmp/awk.txtфайла, а затем перенаправляют (записывают) стандартный вывод в /tmp/awk1.txtфайл.

Теперь /tmp/awk1.txtфайл содержит pitti/postgresqlстроку.

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

Если есть две одинаковые строки, uniqueкоманда отображает (stdout) только одну строку. Эта строка была записана в /tmp/awk2.txt Наконец, /tmp/awk2.txtсостоит из уникальных имен PPA.

tput sgr0

Эта команда меняет цвет текста терминала на белый.

Наконец, ifусловные операторы будут выполнены. if [ -s /tmp/awk2.txt ]проверить содержимое файла /tmp/awk2.txt или нет. Если да, то он берет первую строку /tmp/awk2.txtи выполняет sudo add-apt-repository -r ppa:$lineкоманду. Он продолжается до последней строки.

Если нет, это означает, что нет содержимого. Так что он говорит: «Не нужно удалять PPA».

Скриншоты

введите описание изображения здесь

введите описание изображения здесь

Авинаш Радж
источник
/ usr / bin / ppa-remove: строка 32: синтаксическая ошибка: неожиданный конец файла
Shravan40
21

Вы получаете эти ошибки, потому что ваши репозитории PPA не предоставляют пакеты для вашего дистрибутива Ubuntu (то есть; quantal).

Посмотрите на следующие скриншоты:

PPA: Петракис / WDT-Главный Логотип панели запуска

WDT-Главный

PPA: Screenlets / PPA Логотип панели запуска

Screenlets

Вы можете видеть, что каталог для quantalотсутствует и, следовательно, вы получаете 404 Not Found Error Messages.

Чтобы избавиться от этих сообщений, вы должны удалить эти репозитории PPA из вашей системы. Следуйте этому вопросу о том, как удалить PPA:


Как исследовать это и прийти к такому выводу?

Это сообщения об ошибках, которые вы получаете для 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

Откройте вкладку браузера и откройте ссылку, которая выдает 404 Not Found Errors. В этом случае http://ppa.launchpad.net/petrakis/и идти глубже по ссылке, которая дает ошибки. Вы сможете увидеть, что является реальной проблемой.

Адитья
источник
17

Наиболее вероятным, что это происходит, является то, что PPA больше не поддерживается и должен быть удален. Вы можете сделать это, просто используя:

sudo rm /etc/apt/sources.list.d/ppaname-ppa-$(lsb_release -sc).list*
Braiam
источник
3
это просто спасло повторяющийся вопрос от публикации. У меня было готово тело моего Q, и как только я начал набирать заголовок, нашел ссылку. Почему бы им не сохранить весь список в одном месте! есть некоторые из тех, /etc/apt/sources.listгде я проверил, но не знал, что мне тоже пришлось заглянуть /etc/apt/sources.list.d/... спасибо ..
точно
это и добавление нового PPA оказалось лучшим (только работающим) решением для меня.
Маркус-Таркун
4

Выберите более старый репозиторий

Если вам действительно нужны пакеты из этого репозитория, вы можете использовать зеркала из более ранней версии.

Тем не менее, обратите внимание, что не все старые версии имеют обратную совместимость ; некоторые из них вызывают конфликты с вашим основным хранилищем пакетов.

Единственное, что вы можете сделать, когда он конфликтует, это либо собрать из исходного кода, либо подождать, пока провайдер не выпустит репозиторий для вашей версии Ubuntu. Мы точно не знаем , когда поставщики пакетов выпустят свой пакет для нашей версии, поэтому вы сами проверяете их репозиторий на предмет вашего выпуска.

Это можно использовать с любым репозиторием на основе Debian. Тем не менее, нет никаких гарантий, что это будет успешным.

меры

  1. Делать как обычно sudo apt updateпосле добавления PPA / репозитория. При обновлении вы можете заметить 404 ошибки; просто игнорируй это. Ошибка 404
  2. Откройте каталог репозитория, который вызывает ошибку 404 в вашем браузере; в этом случае это так https://dl.winehq.org/wine-builds/ubuntu. Обычно доступные версии находятся в dists/. Зеркала
  3. После того, как вы его нашли, откройте Software & Updates и замените название вашего выпуска доступным выпуском; желательно последний или LTS один. Замените раздел «Распределение» в бинарных и исходных кодах зеркал. В этом случае я заменяю bionicна artful. введите описание изображения здесь
  4. Делай sudo apt updateснова.
  5. Вы сделали! Теперь у вас не более 404 ошибок при обновлении списков ваших пакетов. введите описание изображения здесь
  6. Когда пакеты для вашей версии Ubuntu будут выпущены, повторите шаги 3 и 4, заменив раздел «Распространение» именем своего дистрибутива.
Арё Адхи
источник
2

Обратите внимание, что это уже случилось со мной, и я был вне этих ситуаций. И это также сработало для моего друга. Даже не имея возможности объяснить почему, есть кое-что, что решило эту проблему:

  1. Отключить все ваши PPA;
  2. Бежать sudo apt-get updateиз терминала;
  3. Снова включите ваши PPA;
  4. Бегать sudo apt-get update;

И вдруг это сработало. Не спрашивай меня почему.

Данило
источник
Не имеет значения для меня. Еще 404с.
Kwoxer
Я отключил некоторые из нежелательных PPA и попытался, sudo apt-get updateи он работал отлично.
Шашант
1

Если вы получаете сообщение об ошибке 404, пытаясь получить файлы безопасности или системные файлы из официального репозитория (не PPA), вы можете выбрать другое зеркало для решения этой проблемы.

Вы также можете:

А) определите его вручную, просмотрев этот список и выбрав самое последнее зеркало. (вы можете принять во внимание другие факторы, такие как расстояние и пропускная способность) или

Б) Выберите один автоматически.

В любом случае вы можете начать с приложения Software & Updates, как показано ниже: Затем выберите Download from, а затем Other. Затем вы можете вручную выбрать зеркало из списка или нажать кнопку «Выбрать лучший сервер», чтобы запустить несколько тестов и выбрать лучший сервер для вас в зависимости от текущих условий.

SnU

Старейшина Гик
источник