使用PPA或更新我的包裹清单时,如何解决404错误?


266

PPA似乎一直处于离线状态。每当我使用时sudo apt-get update,都会显示此错误:

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

如何解决这些错误?


因为这似乎是主要的“无法获取”答案之一,所以我只想在此指出,使用sources.list中的Ubuntu“伙伴” URL也会发生这种情况。检查您的错误以查看是否为错误,然后尝试将其注释掉。我遇到了从Quetzal升级的问题(和解决方案)。
joseph_morris 2014年

Answers:


305

自动清除

跳到该答案的底部,以脚本方式删除Ubuntu 15.04之前所有ubuntu版本的违规软件源

什么是404错误

404或未找到错误消息是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从终端运行,或在单击刷新按钮后单击Update Manager中的详细信息按钮,则会看到诸如以下的错误:

在此处输入图片说明

如果错误是由于PPA引起的-通常将错误消息中显示的URL取消选中具有相似名称的PPA,即可解决此问题。

在此处输入图片说明

如果404错误是由于添加了附加存储库引起的,/etc/apt/sources.list那么它更容易#在行的开头添加字符以注释掉有问题的存储库,即

gksu gedit /etc/apt/sources.list

在此处输入图片说明

更多信息

这是有关更新管理器的错误报告,用于解决此问题:

如果在没有PPA的情况下遇到这些问题,请查看以下问题:


非常感谢。
Andrews B Anthony

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:launchpad404/tmp/update.txt文件。如果它发现然后在该行它显示从column5.This标准输出被重定向的第26位置开始(标准输出)中的所有字母(写入)到该/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

在第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 findout出列1列2和与所述分隔符/,其中列1列2和通过串接/来自/tmp/awk.txt文件,然后重定向(写入)到标准输出/tmp/awk1.txt文件。

现在/tmp/awk1.txt文件包含pitti/postgresql行。

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

如果有两个相同的线,unique命令显示(STDOUT)单线only.That单线被写入/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 2016年

21

之所以会出现这些错误,是因为您的PPA存储库不提供用于Ubuntu发行版的软件包(即quantal)。

查看以下屏幕截图:

ppa:petrakis / wdt-main 启动板徽标

wdt-main

ppa:screenlets / 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 Not Found Errors的链接。在这种情况下http://ppa.launchpad.net/petrakis/,请按照给出错误的链接进行更深入的研究。您将能够看到实际的问题是什么。


17

最有可能发生的是PPA不再维护,需要删除。您可以使用以下方法执行此操作:

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

3
这只是避免了一个重复的问题有一些/etc/apt/sources.list我检查过的地方,但我也不知道我也必须去检查/etc/apt/sources.list.d/..谢谢..
2014年

这对我来说,然后添加适当的新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'1

我禁用了一些不需要的PPA并尝试了,sudo apt-get update并且效果很好。
Shashanth

1

如果在尝试从官方存储库(而非PPA)获取安全性或系统文件时遇到404错误,则可以选择其他镜像来解决此问题。

您可以:

A)通过查看此列表并选择最新的镜像来手动确定一个镜像。(您不妨考虑其他因素,例如距离和带宽)或

B)自动选择一个。

无论哪种方式,您都可以从Software&Updates应用程序开始,如下所示:然后选择Download from from,然后选择Other。然后,您可以从列表中手动选择所需的镜像,或单击“选择最佳服务器”按钮,它将运行一些测试并根据当前条件为您选择最佳服务器。

锡努


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.