Làm cách nào tôi có thể sửa Lỗi 404 khi sử dụng PPA hoặc cập nhật danh sách gói của mình?


266

PPA dường như liên tục offline. Bất cứ khi nào tôi sử dụng sudo apt-get update, lỗi này được hiển thị:

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

Làm cách nào để sửa những lỗi này?


Vì đây dường như là một trong những câu trả lời "Không thể tìm nạp" chính, tôi chỉ muốn chỉ ra ở đây rằng điều này cũng có thể xảy ra với các URL "đối tác" của Ubuntu trong nguồn.list; kiểm tra lỗi của bạn để xem đó có phải là lỗi không và thử nhận xét chúng. Tôi gặp phải vấn đề đó (và giải pháp) nâng cấp từ Quetzal.
joseph_morris

Câu trả lời:


305

Tự động loại bỏ

bỏ qua phần dưới của câu trả lời này để biết cách viết theo kịch bản để loại bỏ các nguồn phần mềm vi phạm cho tất cả các phiên bản Ubuntu trước Ubuntu 15.04

Lỗi 404 là gì

Thông báo lỗi 404 hoặc Không tìm thấy là mã phản hồi tiêu chuẩn HTTP cho biết máy khách có thể giao tiếp với máy chủ, nhưng máy chủ không thể tìm thấy những gì được yêu cầu.

Máy chủ lưu trữ trang web thường sẽ tạo trang web "404 - Không tìm thấy trang", khi người dùng cố gắng theo liên kết bị hỏng hoặc chết.

Nguyên nhân của những lỗi này trong trình quản lý cập nhật là gì

Thông thường, ba lĩnh vực chính gây ra những lỗi này trong update-manager

  1. Một người dùng vừa nâng cấp và đã kích hoạt lại nguồn phần mềm PPA không còn tồn tại nhập mô tả hình ảnh ở đây
  2. Một người dùng đã nhập thủ công một nguồn phần mềm mới không chính xác nhập mô tả hình ảnh ở đây
  3. Một PPA đã được thêm vào, nhưng người bảo trì sau đó đã xóa một số / tất cả PPA

những nguồn phần mềm này ở đâu

PPA thường được lưu ở một trong hai địa điểm

  1. /etc/apt/sources.list
  2. trong một tệp được đặt tên thích hợp với phần mở rộng tệp .list /etc/apt/sources.list.d/chẳng hạnwebupd8team-jupiter-natty.list

Tệp danh sách này thường chứa:

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

Lưu ý a #ở phía trước của một dòng văn bản có nghĩa là nó được nhận xét và không được kiểm tra bởi người quản lý gói.

Làm thế nào để loại bỏ những lỗi này

Thông thường, nếu bạn chạy sudo apt-get updatetừ thiết bị đầu cuối hoặc nhấp vào nút chi tiết trong Trình quản lý cập nhật sau khi nhấn nút làm mới, bạn sẽ thấy các lỗi như:

nhập mô tả hình ảnh ở đây

Nếu lỗi là do PPA - thường bỏ chọn PPA có tên tương tự với URL hiển thị trong thông báo lỗi sẽ giải quyết vấn đề này.

nhập mô tả hình ảnh ở đây

Nếu lỗi 404 là do kho lưu trữ bổ sung đã được thêm vào /etc/apt/sources.listthì việc thêm #ký tự vào đầu dòng dễ dàng hơn để nhận xét kho lưu trữ vi phạm tức là

gksu gedit /etc/apt/sources.list

nhập mô tả hình ảnh ở đây

Thêm thông tin

Dưới đây là báo cáo lỗi về trình quản lý cập nhật để giải quyết vấn đề này:

Nếu bạn gặp phải những vấn đề này mà không có PPA, hãy xem câu hỏi này:


Cảm ơn bạn rất nhiều.
Andrew B Anthony

51

Tự động xóa 404 Không tìm thấy PPA thông qua tập lệnh

Đây là một tập lệnh để tự động xóa tất cả 404 Không tìm thấy của PPA. Sao chép mã bên dưới và dán nó vào một tệp và đặt tên là 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

Cấp quyền thực thi cho tập lệnh

sudo chmod +x ppa-remove

Sao chép và dán ppa-removetệp vào /usr/binthư mục. Vì vậy, bạn có thể truy cập nó từ bất cứ đâu.

Sử dụng

sudo ppa-remove

Mô tả kịch bản

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

tput setaf 6 lệnh biến màu văn bản đầu cuối thành màu xanh lục. Sau đó, nó sẽ hiển thị "Đang khởi động .. Xin vui lòng chờ" trong màu xanh lục.

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;

    Cả stdout và stderr của lệnh sudo apt-get updateđều được ghi vào tệp/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 tìm kiếm dòng trong đó bao gồm W:, launchpad, 404trong /tmp/update.txtfile.If nó phát hiện ra rằng sau đó trong dòng đó nó sẽ hiển thị (stdout) tất cả các chữ cái bắt đầu từ vị trí thứ 26 trong column5.This đầu ra tiêu chuẩn đã được chuyển hướng (bằng văn bản) để các /tmp/awk.txttập tin.

Ví dụ:

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

Đại học thứ 5 - http://ppa.launchpad.net/pitti/postgresql/ubuntu/dists/saucy/main/binary-i386/Packages

trong cột thứ 5 đó bắt đầu từ ký tự thứ 26- pitti/postgresql/ubuntu/dists/saucy/main/binary-i386/Packages

Dòng trên đã được lưu vào /tmp/awk.txttập tin. Bây giờ lệnh tiếp theo,

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

awk tìm ra cột1 và cột2 với dấu phân cách /trong đó cột1 và cột2 được nối với nhau /từ /tmp/awk.txttệp và sau đó chuyển hướng (ghi) thiết bị xuất chuẩn thành /tmp/awk1.txttệp.

Bây giờ /tmp/awk1.txttập tin chứa pitti/postgresqldòng.

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

Nếu có hai dòng giống nhau, uniquelệnh chỉ hiển thị (stdout) một dòng duy nhất. Dòng đó được viết thành /tmp/awk2.txt Cuối cùng /tmp/awk2.txtbao gồm các tên PPA duy nhất.

tput sgr0

Lệnh này thay đổi màu của văn bản đầu cuối thành màu trắng.

Cuối cùng các ifbáo cáo có điều kiện sẽ thực thi. if [ -s /tmp/awk2.txt ]kiểm tra nội dung của tập tin /tmp/awk2.txt có hay không. Nếu có, thì nó sẽ nhận dòng đầu tiên từ /tmp/awk2.txtvà thực thi lệnh. Nó sudo add-apt-repository -r ppa:$linetiếp tục cho đến dòng cuối cùng.

Nếu không, điều đó có nghĩa là không có nội dung. Vì vậy, nó nói "Không có PPA nào bị xóa".

Ảnh chụp màn hình

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây


/ usr / bin / ppa-remove: dòng 32: lỗi cú pháp: kết thúc tệp không mong muốn
Shravan40

21

Bạn đang gặp phải những lỗi này vì kho PPA của bạn không cung cấp các gói để phân phối Ubuntu (tức là; quantal).

Nhìn vào các ảnh chụp màn hình sau:

ppa: petrakis / wdt-chính Logo Launchpad

chính

ppa: màn hình / ppa Logo Launchpad

màn hình

Bạn có thể thấy rằng thư mục quantalbị thiếu và do đó bạn đang nhận được 404 Not Found Error Messages.

Để loại bỏ các tin nhắn này, bạn phải xóa các kho PPA này khỏi hệ thống của bạn. Thực hiện theo câu hỏi này về cách loại bỏ PPA:


Làm thế nào để điều tra điều này và đi đến kết luận này?

Đây là những thông báo lỗi bạn nhận được cho 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

Mở tab trình duyệt của bạn và mở liên kết cung cấp 404 Không tìm thấy lỗi. Trong trường hợp này http://ppa.launchpad.net/petrakis/và đi sâu hơn theo liên kết đưa ra lỗi. Bạn sẽ có thể thấy vấn đề thực sự là gì.


17

Khả năng cao nhất xảy ra là PPA không còn được duy trì và cần phải loại bỏ. Bạn có thể làm điều này chỉ bằng cách sử dụng:

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

3
Điều này chỉ lưu một câu hỏi trùng lặp khỏi việc được đăng .. Tôi đã có sẵn nội dung Q của mình và khi tôi bắt đầu nhập tiêu đề của mình đã tìm thấy liên kết .. tại sao họ không giữ tất cả danh sách ở một nơi! có một số được liệt kê ở /etc/apt/sources.listnơi tôi đã kiểm tra nhưng không biết tôi cũng phải xem /etc/apt/sources.list.d/.. cảm ơn ..
chính xác là

Điều này và sau đó thêm PPA mới thích hợp hóa ra là giải pháp tốt nhất (chỉ hoạt động) đối với tôi.
markus-tharkun

4

Chọn kho lưu trữ cũ

Nếu bạn thực sự cần các gói từ kho lưu trữ đó , bạn có thể sử dụng các bản sao từ bản phát hành cũ hơn.

Tuy nhiên, xin lưu ý rằng không phải tất cả các bản phát hành cũ đều tương thích ngược ; một số trong số chúng gây ra xung đột với kho lưu trữ gói chính của bạn.

Điều duy nhất bạn có thể làm khi xung đột là xây dựng từ nguồn hoặc đợi cho đến khi nhà cung cấp phát hành kho lưu trữ cho phiên bản Ubuntu của bạn. Chúng tôi không biết chính xác khi nào các nhà cung cấp gói sẽ phát hành gói của họ cho phiên bản của chúng tôi, vì vậy bạn là người chịu trách nhiệm kiểm tra kho lưu trữ của họ để phát hành.

Điều này có thể được sử dụng với bất kỳ kho lưu trữ dựa trên Debian. Tuy nhiên, không có gì đảm bảo rằng điều này sẽ thành công.

Các bước

  1. Làm bình thường sudo apt updatesau khi thêm PPA / kho lưu trữ. Bạn có thể nhận thấy rằng có lỗi 404 trong khi cập nhật; chỉ cần bỏ qua điều này. Lỗi 404
  2. Mở thư mục kho lưu trữ gây ra lỗi 404 với trình duyệt của bạn; trong trường hợp này nó là https://dl.winehq.org/wine-builds/ubuntu. Thông thường, các bản phát hành có sẵn được đặt tại dists/. Gương
  3. Sau khi bạn tìm thấy nó, hãy mở Phần mềm & Cập nhật và thay thế tên phát hành của bạn bằng bản phát hành có sẵn; tốt nhất là mới nhất hoặc LTS một. Thay thế phần 'Phân phối' trong gương nhị phân và mã nguồn. Trong trường hợp này, tôi sẽ thay thế bionicbằng artful. nhập mô tả hình ảnh ở đây
  4. Làm sudo apt updatelại.
  5. Bạn đã hoàn tất! Bây giờ bạn không còn lỗi 404 trong khi cập nhật danh sách gói của bạn. nhập mô tả hình ảnh ở đây
  6. Khi các gói cho phiên bản Ubuntu của bạn được phát hành, hãy lặp lại bước 3 và 4 bằng cách thay thế phần 'Phân phối' bằng tên phân phối của bạn.

2

Lưu ý rằng nó đã xảy ra với tôi và tôi đã thoát khỏi những tình huống này. Và nó cũng làm việc cho một người bạn của tôi. Thậm chí không thể giải thích tại sao, có một cái gì đó đã giải quyết vấn đề đó:

  1. Vô hiệu hóa tất cả các PPA của bạn;
  2. Chạy sudo apt-get updatetừ thiết bị đầu cuối;
  3. Cho phép PPA của bạn trở lại một lần nữa;
  4. Chạy sudo apt-get update;

Và đột nhiên nó hoạt động. Đừng hỏi tôi tại sao.


Không có sự khác biệt cho tôi. Vẫn là 404s.
kwoxer

Tôi đã vô hiệu hóa một số PPA không mong muốn và đã thử sudo apt-get updatevà nó hoạt động hoàn hảo.
Shashanth

1

Nếu bạn gặp lỗi 404 khi cố lấy các tệp bảo mật hoặc hệ thống từ kho lưu trữ chính thức (không phải PPA), bạn có thể chọn một máy nhân bản khác để giải quyết vấn đề này.

Bạn có thể:

A) xác định một cách thủ công bằng cách xem lại danh sách này và chọn gương mới nhất. (bạn có thể cân nhắc các yếu tố khác như khoảng cách và băng thông) hoặc

B) Chọn một tự động.

Dù bằng cách nào bạn cũng có thể bắt đầu với ứng dụng Phần mềm & Cập nhật như được hiển thị bên dưới: Sau đó, chọn Tải xuống theo sau bởi Khác. Sau đó, bạn có thể chọn thủ công gương bạn chọn từ danh sách hoặc nhấp vào nút Chọn máy chủ tốt nhất sẽ chạy một số thử nghiệm và chọn máy chủ tốt nhất cho bạn tùy thuộc vào điều kiện hiện tại.

SnU


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.