Як я можу виправити помилку 404 під час використання PPA або оновлення списків пакунків?


266

Здається, PPA постійно перебуває в режимі офлайн. Щоразу, коли я використовую sudo apt-get update, ця помилка відображається:

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

Як виправити ці помилки?


Оскільки це, здається, є однією з головних відповідей "Не вдалося отримати", я просто хочу тут зазначити, що це також може статися з URL-адресами "партнера" ​​Ubuntu в source.list; перевірте свої помилки, щоб побачити, чи це ці, і спробуйте прокоментувати їх. Я зіткнувся з оновленням питання (та вирішення) від Quetzal.
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

Примітка a #на передній частині рядка тексту означає, що він коментований і не перевіряється менеджером пакунків.

Як усунути ці помилки

Як правило, якщо ви запустите sudo apt-get updateз терміналу або натисніть кнопку деталей у Менеджері оновлень після натискання кнопки оновлення, ви побачите помилки, такі як:

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

Якщо помилка пов’язана з PPA - це усуне цю проблему, як правило, скасування аналогічно названого PPA з URL-адресою, показаною у повідомленні про помилку.

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

Якщо помилка 404 була пов’язана з додатковим сховищем, яке було додано до /etc/apt/sources.listцього, її легше додати #символу до початку рядка, щоб прокоментувати репозиторій, що порушує порушення, тобто

gksu gedit /etc/apt/sources.list

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

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

Ось звіт про помилку в менеджері оновлень, щоб вирішити цю проблему:

Якщо у вас виникають ці проблеми без PPA, перегляньте це питання:


Дуже дякую.
Ендрюс Б Ентоні

51

Автоматичне видалення 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($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

у цій п'ятій колонці починаються з 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 find out column1 and column2 з роздільником, /де колонку1 і 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: petrakis / wdt-main Логотип стартової панелі

wdt-головний

ppa: скрінселі / ppa Логотип стартової панелі

екрани

Ви можете бачити, що каталог для 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 не знайдених помилок. У цьому випадку http://ppa.launchpad.net/petrakis/і заглиблюйтесь за посиланням, яке дає помилки. Ви б змогли побачити, яка саме проблема.


17

Найімовірніше, що це відбувається, це те, що ППС більше не підтримується і його потрібно усунути. Це можна зробити, використовуючи:

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

3
це тільки врятувало повторне запитання від розміщення .. У мене було готове тіло мого Q, і тільки коли я почав набирати свою назву, знайшов посилання .. чому б вони не зберегли весь список у своєму місці! є деякі, перераховані /etc/apt/sources.listтам, де я перевіряв, але не знав, що мені теж слід було заглянути /etc/apt/sources.list.d/.. спасибі ..
точно

це, а потім додавання належного нового PPA виявилося для мене найкращим (лише працюючим) рішенням.
markus-tharkun

4

Виберіть Старіший сховище

Якщо вам справді потрібні пакети з цього сховища, ви можете використовувати дзеркала з попереднього випуску.

Однак зауважте, що не всі старіші версії є сумісними назад ; деякі з них викликають конфлікти з вашим основним сховищем пакетів.

Єдине, що ви можете зробити, коли це конфліктує, - це або побудувати з джерела або почекати, поки постачальник не випустить сховище для вашої версії Ubuntu. Ми точно не знаємо , коли постачальники пакетів випустять свій пакет для нашої версії, тому ви відповідаєте за те, щоб перевірити їх сховище на випуск.

Це можна використовувати з будь-яким сховищем на базі Debian. Однак немає гарантії, що це буде успішним.

Кроки

  1. Зробіть зазвичай sudo apt updateпісля додавання PPA / сховища. Ви можете помітити, що під час оновлення виникає 404 помилки; просто ігноруйте це. 404 Помилка
  2. Відкрийте каталог репозиторію, що спричинить помилку 404 у вашому браузері; в даному випадку це так https://dl.winehq.org/wine-builds/ubuntu. Зазвичай доступні випуски розміщені в dists/. Дзеркала
  3. Після того, як ви його знайшли, відкрийте Програмне забезпечення та оновлення та замініть назву випуску доступною версією; переважно останній або 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), ви можете вибрати інше дзеркало для вирішення цієї проблеми.

Ви можете:

А) визначте їх вручну, переглянувши цей список та вибравши найсучасніше дзеркало. (ви можете взяти до уваги інші фактори, такі як відстань і пропускну здатність) або

B) Виберіть один автоматично.

У будь-якому випадку ви можете почати з програми «Програми та оновлення», як показано нижче: Потім виберіть «Завантажити», а потім «Інше». Тоді ви можете або вручну вибрати зі списку дзеркало, яке ви обрали, або натиснути кнопку Вибрати найкращий сервер, яка виконає деякі тести і вибрати найкращий сервер для вас залежно від поточних умов.

SnU


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.