PPA ดูเหมือนจะออฟไลน์อยู่ตลอดเวลา เมื่อใดก็ตามที่ฉันใช้sudo apt-get update
ข้อผิดพลาดนี้จะปรากฏขึ้น:
W: Failed to fetch http://ppa.launchpad.net/ 404 Not Found
ฉันจะแก้ไขข้อผิดพลาดเหล่านี้ได้อย่างไร
PPA ดูเหมือนจะออฟไลน์อยู่ตลอดเวลา เมื่อใดก็ตามที่ฉันใช้sudo apt-get update
ข้อผิดพลาดนี้จะปรากฏขึ้น:
W: Failed to fetch http://ppa.launchpad.net/ 404 Not Found
ฉันจะแก้ไขข้อผิดพลาดเหล่านี้ได้อย่างไร
คำตอบ:
ข้ามไปที่ด้านล่างของคำตอบนี้สำหรับวิธีเขียนสคริปต์เพื่อลบแหล่งที่มาของซอฟต์แวร์ที่ละเมิดสำหรับ Ubuntu ทุกรุ่นก่อน Ubuntu 15.04
ข้อความแสดงข้อผิดพลาด 404 หรือไม่พบเป็นรหัสตอบกลับมาตรฐาน HTTP ที่ระบุว่าลูกค้าสามารถสื่อสารกับเซิร์ฟเวอร์ได้ แต่เซิร์ฟเวอร์ไม่พบสิ่งที่ร้องขอ
โดยปกติแล้วเว็บไซต์โฮสต์เซิร์ฟเวอร์จะสร้างหน้าเว็บ "404 - ไม่พบหน้าเว็บ" เมื่อผู้ใช้พยายามติดตามลิงก์ที่เสียหายหรือไม่ทำงาน
โดยทั่วไปพื้นที่สามหลักทำให้เกิดข้อผิดพลาดเหล่านี้มา update-manager
โดยทั่วไป PPAs จะถูกบันทึกไว้ในหนึ่งในสองแห่ง
/etc/apt/sources.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 ลองดูคำถามนี้:
นี่คือสคริปต์เพื่อลบโดยอัตโนมัติทั้งหมด 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
sudo apt-get update >> /tmp/update.txt 2>&1;
ทั้ง stdout และ stderr ของคำสั่งsudo apt-get update
ถูกเขียนไปยังไฟล์/tmp/update.txt
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 ให้ลบ"
คุณได้รับข้อผิดพลาดเหล่านี้เนื่องจากที่เก็บ PPA ของคุณไม่มีแพ็กเกจสำหรับการแจกจ่าย Ubuntu ของคุณ (เช่น; quantal
)
ดูภาพหน้าจอต่อไปนี้:
คุณจะเห็นว่าไดเรกทอรีสำหรับจะหายไปและด้วยเหตุนี้คุณจะได้รับ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 ไม่พบ ในกรณีนี้http://ppa.launchpad.net/petrakis/
และลึกลงไปตามลิงค์ที่ให้ข้อผิดพลาด คุณจะสามารถดูว่าปัญหาที่แท้จริงคืออะไร
ความน่าจะเป็นที่เกิดขึ้นมากที่สุดคือ PPA นั้นไม่ได้รับการบำรุงรักษาอีกต่อไปและจะต้องถูกลบออก คุณสามารถทำได้โดยใช้:
sudo rm /etc/apt/sources.list.d/ppaname-ppa-$(lsb_release -sc).list*
/etc/apt/sources.list
ที่ฉันตรวจสอบ แต่ไม่รู้ว่าฉันต้องดู/etc/apt/sources.list.d/
ด้วย .. ขอบคุณ ..
หากคุณต้องการแพ็กเกจจากที่เก็บจริงคุณสามารถใช้มิร์เรอร์จากรีลีสที่เก่ากว่าได้
อย่างไรก็ตามโปรดทราบว่ารุ่นเก่าทุกคนมีความเข้ากันได้ ; บางรายการอาจทำให้เกิดข้อขัดแย้งกับที่เก็บแพคเกจหลักของคุณ
สิ่งเดียวที่คุณสามารถทำได้เมื่อขัดแย้งคือการสร้างจากแหล่งข้อมูลหรือรอจนกว่าผู้ให้บริการจะเผยแพร่ที่เก็บสำหรับรุ่น Ubuntu ของคุณ เราไม่ทราบแน่ชัดว่าผู้ให้บริการแพคเกจจะเปิดตัวแพ็คเกจสำหรับรุ่นของเราเมื่อใดดังนั้นคุณจะเป็นผู้รับผิดชอบในการตรวจสอบที่เก็บข้อมูลสำหรับการเปิดตัวของคุณ
สามารถใช้กับที่เก็บ Debian ใดก็ได้ อย่างไรก็ตามไม่มีการรับประกันว่าสิ่งนี้จะประสบความสำเร็จ
sudo apt update
หลังจากเพิ่ม PPA / พื้นที่เก็บข้อมูล คุณสามารถสังเกตเห็นว่ามีข้อผิดพลาด 404 ขณะอัปเดต เพียงแค่ไม่สนใจสิ่งนี้
https://dl.winehq.org/wine-builds/ubuntu
ในกรณีนี้มันเป็น dists/
โดยปกติแล้วรุ่นที่มีอยู่จะอยู่ใน
bionic
artful
sudo apt update
อีกครั้งโปรดทราบว่ามันเกิดขึ้นกับฉันแล้วและฉันไม่อยู่ในสถานการณ์เหล่านี้ และมันก็ใช้ได้กับเพื่อนของฉันด้วย แม้ว่าจะไม่สามารถอธิบายได้ว่าทำไมมีบางสิ่งที่แก้ไขปัญหานั้นได้:
sudo apt-get update
จากสถานี;sudo apt-get update
;และทันใดนั้นก็ใช้งานได้ อย่าถามฉันว่าทำไม.
sudo apt-get update
ใช้งานได้อย่างสมบูรณ์
หากคุณได้รับข้อผิดพลาด 404 พยายามรับความปลอดภัยหรือไฟล์ระบบจากพื้นที่เก็บข้อมูลอย่างเป็นทางการ (ไม่ใช่ PPA) คุณสามารถเลือกมิร์เรอร์อื่นเพื่อแก้ไขปัญหานี้
คุณสามารถ:
A)กำหนดหนึ่งด้วยตนเองโดยการตรวจสอบรายการนี้และเลือกมิเรอร์ล่าสุด (คุณอาจต้องการพิจารณาปัจจัยอื่น ๆ เช่นระยะทางและแบนด์วิดท์) หรือ
B)เลือกหนึ่งโดยอัตโนมัติ
ไม่ว่าคุณจะเริ่มด้วยแอปพลิเคชั่นซอฟต์แวร์และการอัพเดตตามที่แสดงด้านล่าง: จากนั้นเลือกดาวน์โหลดจากตามด้วยอื่น ๆ จากนั้นคุณสามารถเลือกมิเรอร์ที่คุณต้องการจากรายการหรือคลิกปุ่มเลือกเซิร์ฟเวอร์ที่ดีที่สุดซึ่งจะทำการทดสอบและเลือกเซิร์ฟเวอร์ที่ดีที่สุดสำหรับคุณขึ้นอยู่กับเงื่อนไขปัจจุบัน
ฉันได้พยายามทุกคำตอบที่เป็นไปได้ แต่เพียงการแก้ปัญหาคือการคัดลอกUbuntu 16.04 Xenial /etc/apt/sources.list เริ่มต้น/etc/apt/sources.list
แฟ้มของฉัน
แหล่งที่มา: https://gist.github.com/rohitrawat/60a04e6ebe4a9ec1203eac3a11d4afc1
นั่นช่วยลินุกซ์ของฉัน