ฉันจะแก้ไขข้อผิดพลาด 404 เมื่อใช้ PPA หรืออัปเดตรายการแพคเกจของฉันได้อย่างไร


266

PPA ดูเหมือนจะออฟไลน์อยู่ตลอดเวลา เมื่อใดก็ตามที่ฉันใช้sudo apt-get updateข้อผิดพลาดนี้จะปรากฏขึ้น:

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

ฉันจะแก้ไขข้อผิดพลาดเหล่านี้ได้อย่างไร


เนื่องจากนี่เป็นหนึ่งในคำตอบ "ไม่สามารถดึงข้อมูล" หลักได้ฉันเพียงต้องการชี้ให้เห็นว่านี่อาจเกิดขึ้นกับ URL "พันธมิตร" ของ Ubuntu ในแหล่งที่มารายการ ตรวจสอบข้อผิดพลาดของคุณเพื่อดูว่าเป็นสิ่งเหล่านั้นหรือไม่และแสดงความคิดเห็นออกมา ฉันพบปัญหา (และวิธีแก้ไข) การอัพเกรดจาก Quetzal
joseph_morris

คำตอบ:


305

กำจัดอัตโนมัติ

ข้ามไปที่ด้านล่างของคำตอบนี้สำหรับวิธีเขียนสคริปต์เพื่อลบแหล่งที่มาของซอฟต์แวร์ที่ละเมิดสำหรับ Ubuntu ทุกรุ่นก่อน Ubuntu 15.04

ข้อผิดพลาด 404 คืออะไร

ข้อความแสดงข้อผิดพลาด 404 หรือไม่พบเป็นรหัสตอบกลับมาตรฐาน HTTP ที่ระบุว่าลูกค้าสามารถสื่อสารกับเซิร์ฟเวอร์ได้ แต่เซิร์ฟเวอร์ไม่พบสิ่งที่ร้องขอ

โดยปกติแล้วเว็บไซต์โฮสต์เซิร์ฟเวอร์จะสร้างหน้าเว็บ "404 - ไม่พบหน้าเว็บ" เมื่อผู้ใช้พยายามติดตามลิงก์ที่เสียหายหรือไม่ทำงาน

อะไรคือสาเหตุของข้อผิดพลาดเหล่านี้ใน update-manager

โดยทั่วไปพื้นที่สามหลักทำให้เกิดข้อผิดพลาดเหล่านี้มา update-manager

  1. ผู้ใช้เพิ่งอัพเกรดและเปิดใช้งานซอฟต์แวร์ PPA อีกครั้งที่ไม่มีอยู่อีกต่อไป ป้อนคำอธิบายรูปภาพที่นี่
  2. ผู้ใช้พิมพ์ด้วยตนเองในแหล่งซอฟต์แวร์ใหม่อย่างไม่ถูกต้อง ป้อนคำอธิบายรูปภาพที่นี่
  3. เพิ่ม PPA แล้ว แต่ผู้ดูแลได้ลบ PPA บางส่วน / ทั้งหมดออกในภายหลัง

แหล่งซอฟแวร์เหล่านี้อยู่ที่ไหน

โดยทั่วไป PPAs จะถูกบันทึกไว้ในหนึ่งในสองแห่ง

  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จากเทอร์มินัลหรือคลิกที่ปุ่มรายละเอียดใน Update Manager หลังจากกดปุ่มรีเฟรชคุณจะเห็นข้อผิดพลาดเช่น:

ป้อนคำอธิบายรูปภาพที่นี่

หากข้อผิดพลาดเกิดจาก PPA - โดยทั่วไปแล้วการยกเลิก PPA ที่มีชื่อคล้ายกันกับ URL ที่แสดงในข้อความแสดงข้อผิดพลาดจะแก้ไขปัญหานี้ได้

ป้อนคำอธิบายรูปภาพที่นี่

หากข้อผิดพลาด 404 เป็นเพราะพื้นที่เก็บข้อมูลเพิ่มเติมที่ถูกเพิ่มเข้าไป/etc/apt/sources.listแล้วมันจะง่ายต่อการเพิ่ม#ตัวละครไปยังจุดเริ่มต้นของบรรทัดเพื่อแสดงความคิดเห็นออกจากพื้นที่เก็บข้อมูลที่ละเมิดเช่น

gksu gedit /etc/apt/sources.list

ป้อนคำอธิบายรูปภาพที่นี่

ข้อมูลเพิ่มเติม

นี่คือรายงานข้อผิดพลาดเกี่ยวกับตัวจัดการการอัปเดตเพื่อแก้ไขปัญหานี้:

หากคุณพบปัญหาเหล่านี้โดยไม่มี PPA ลองดูคำถามนี้:


ขอบคุณมาก.
Andrews B Anthony

51

การลบอัตโนมัติ 404 ไม่พบ PPA ผ่านสคริปต์

นี่คือสคริปต์เพื่อลบโดยอัตโนมัติทั้งหมด 404 ไม่พบ PPA's.Copy 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.txtแฟ้มถ้าพบว่าแล้วในสายที่จะแสดง (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

5th coloumn - 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 ค้นหาคอลัมน์ 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 ให้ลบ"

ภาพหน้าจอ

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


/ usr / bin / ppa-remove: บรรทัดที่ 32: ข้อผิดพลาดทางไวยากรณ์: จุดสิ้นสุดไฟล์ที่ไม่คาดคิด
Shravan40

21

คุณได้รับข้อผิดพลาดเหล่านี้เนื่องจากที่เก็บ PPA ของคุณไม่มีแพ็กเกจสำหรับการแจกจ่าย Ubuntu ของคุณ (เช่น; quantal)

ดูภาพหน้าจอต่อไปนี้:

ppa: Petrakis / WDT หลัก โลโก้ Launchpad

WDT หลัก

ppa: Screenlets / ppa โลโก้ Launchpad

Screenlets

คุณจะเห็นว่าไดเรกทอรีสำหรับจะหายไปและด้วยเหตุนี้คุณจะได้รับquantal404 Not Found Error Messages

เพื่อกำจัดข้อความเหล่านี้คุณต้องลบที่เก็บ PPA เหล่านี้ออกจากระบบของคุณ ทำตามคำถามนี้เกี่ยวกับวิธีลบ PPAs:


วิธีการตรวจสอบนี้และมาถึงข้อสรุปนี้?

นี่คือข้อความแสดงข้อผิดพลาดที่คุณได้รับสำหรับ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

ความน่าจะเป็นที่เกิดขึ้นมากที่สุดคือ PPA นั้นไม่ได้รับการบำรุงรักษาอีกต่อไปและจะต้องถูกลบออก คุณสามารถทำได้โดยใช้:

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 อย่างใดอย่างหนึ่ง แทนที่ส่วน 'การกระจาย' ในมิร์เรอร์และซอร์สโค้ดมิเรอร์ ในกรณีนี้ผมเปลี่ยนด้วย bionicartfulป้อนคำอธิบายรูปภาพที่นี่
  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;

และทันใดนั้นก็ใช้งานได้ อย่าถามฉันว่าทำไม.


ทำให้ไม่มีความแตกต่างสำหรับฉัน ยังคง 404s
kwoxer

ฉันปิดการใช้งาน PPA ที่ไม่พึงประสงค์และลองsudo apt-get updateใช้งานได้อย่างสมบูรณ์
Shashanth

1

หากคุณได้รับข้อผิดพลาด 404 พยายามรับความปลอดภัยหรือไฟล์ระบบจากพื้นที่เก็บข้อมูลอย่างเป็นทางการ (ไม่ใช่ PPA) คุณสามารถเลือกมิร์เรอร์อื่นเพื่อแก้ไขปัญหานี้

คุณสามารถ:

A)กำหนดหนึ่งด้วยตนเองโดยการตรวจสอบรายการนี้และเลือกมิเรอร์ล่าสุด (คุณอาจต้องการพิจารณาปัจจัยอื่น ๆ เช่นระยะทางและแบนด์วิดท์) หรือ

B)เลือกหนึ่งโดยอัตโนมัติ

ไม่ว่าคุณจะเริ่มด้วยแอปพลิเคชั่นซอฟต์แวร์และการอัพเดตตามที่แสดงด้านล่าง: จากนั้นเลือกดาวน์โหลดจากตามด้วยอื่น ๆ จากนั้นคุณสามารถเลือกมิเรอร์ที่คุณต้องการจากรายการหรือคลิกปุ่มเลือกเซิร์ฟเวอร์ที่ดีที่สุดซึ่งจะทำการทดสอบและเลือกเซิร์ฟเวอร์ที่ดีที่สุดสำหรับคุณขึ้นอยู่กับเงื่อนไขปัจจุบัน

SNU


1

ฉันได้พยายามทุกคำตอบที่เป็นไปได้ แต่เพียงการแก้ปัญหาคือการคัดลอกUbuntu 16.04 Xenial /etc/apt/sources.list เริ่มต้น/etc/apt/sources.listแฟ้มของฉัน

แหล่งที่มา: https://gist.github.com/rohitrawat/60a04e6ebe4a9ec1203eac3a11d4afc1

นั่นช่วยลินุกซ์ของฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.