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

220

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

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

Как исправить эти ошибки?

    
задан Pedro 14.10.2011 в 03:16
источник

6 ответов

268

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

пропустите нижнюю часть этого ответа для сценария, чтобы удалить непоправимые программные источники для всех версий 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

Сценарий удаления для всех версий ubuntu до 15.04

Я написал быстрый скрипт, который проверяет PPA и Software-Sources, которые показывают ошибки 404. Это работает для всех версий Ubuntu до 15.04. В течение 15.04 и позже выполните описанные выше ручные методы.

В моем PPA:

sudo add-apt-repository ppa:fossfreedom/packagefixes
sudo apt-get update
sudo apt-get install banish404

Вы можете просто загрузить пакет deb и установить его напрямую:

wget https://launchpad.net/~fossfreedom/+archive/packagefixes/+files/banish404_0.1-4_all.deb
sudo dpkg -i banish404_0.1-4_all.deb

N.B. его же пакет deb для всех дистрибутивов.

Вопросы / комментарии / Улучшение, пожалуйста, Launchpad Свяжитесь со мной ссылку

Как использовать:

sudo banish404

Сценарий будет автоматически создавать резервные копии ваших источников до их модификации - для поиска в /etc/apt

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

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

ответ дан fossfreedom 05.01.2012 в 01:15
46

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

Это скрипт, который автоматически удаляет все 404 Не найденные PPA'. Копируйте приведенный ниже код и вставьте его в файл и назовите его как 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(,26) }' /tmp/update.txt > /tmp/awk.txt; awk -F '/' '{ print "/" }' /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(,26) }' /tmp/update.txt > /tmp/awk.txt; awk -F '/' '{ print "/" }' /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(,26) }' /tmp/update.txt > /tmp/awk.txt; awk -F '/' '{ print "/" }' /tmp/awk.txt > /tmp/awk1.txt;

Awk ищет строку, состоящую из W: , launchpad , 404 в файле /tmp/update.txt . Если она обнаружила, что тогда в этой строке отображается (stdout) все буквы, начиная с 26-го местоположения в столбце. Этот стандартный выход был перенаправлен (записан) в файл /tmp/awk.txt .

Например:

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

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

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

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

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

awk найдите столбец1 и столбец2 с разделителем / , где столбец1 и столбец2 объединяются / из файла /tmp/awk.txt и затем перенаправляют (записывают) файл stdout в файл /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 для удаления».

Скриншоты

    
ответ дан Avinash Raj 10.03.2014 в 19:08
20

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

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

ppa: petrakis / wdt-main

ppa: screenlets / ppa

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

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

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

Это сообщения об ошибках, которые вы получаете для wdt-main PPA:

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/ и углубиться по ссылке, которая дает ошибки. Вы сможете увидеть, что представляет собой настоящая проблема.

    
ответ дан Aditya 16.02.2013 в 19:59
15

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

sudo rm /etc/apt/sources.list.d/ppaname-ppa-$(lsb_release -sc).list*
    
ответ дан Braiam 23.12.2013 в 19:08
1

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

  1. Отключите все ваши PPA;
  2. Запустить sudo apt-get update из терминала;
  3. Включите PPA снова,
  4. Запустить sudo apt-get update ;

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

    
ответ дан Danilo 19.11.2013 в 21:22
0

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

Вы можете:

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

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

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

    

ответ дан Elder Geek 15.01.2017 в 15:57