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

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


如何解决这些错误?

评论

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

#1 楼

自动删除
跳至该答案的底部,以脚本方式删除Ubuntu 15.04之前所有ubuntu版本的违规软件源。
404错误是什么

404或未找到错误消息是HTTP标准响应代码
,指示客户端能够与服务器通信,
但服务器找不到请求的内容。
网站托管服务器将通常,当用户尝试遵循断开或无效的链接时,通常会生成“ 404-页面未找到
”网页。

更新管理器中这些错误的原因是什么
通常,三个主要区域会在update-manager中导致这些错误。

用户刚刚升级并重新启用了不再存在的PPA软件源


用户手动输入了错误的新软件资源


添加了PPA,但是维护人员随后删除了部分/全部PPA

,其中这些是沙发吗tware-sources
PPA通常保存在两个位置之一中

/etc/apt/sources.list
/etc/apt/sources.list.d/中带有.list文件扩展名的适当命名的文件中,例如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

请注意,在一行文本的前面有一个#意味着它已被注释掉,而程序包管理器未对其进行检查。
如何消除这些错误
通常,如果从终端运行sudo apt-get update或单击刷新按钮后单击Update Manager中的详细信息按钮,您将看到诸如以下错误:

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

如果404错误是由于添加了其他存储库引起的到/etc/apt/sources.list,则可以更轻松地在行首添加#字符,以注释掉有问题的存储库,即
gksu gedit /etc/apt/sources.list


更多信息
这是更新管理器上的错误报告,用于解决此问题:

https://bugs.launchpad.net/ubuntu/+source/update- manager / + bug / 1049046

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

如何使用Ubuntu档案修复404错误?
存储库/ Ubuntu-社区Ubuntu文档-删除和禁用存储库


#2 楼

通过脚本自动删除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(,26) }' /tmp/update.txt > /tmp/awk.txt; awk -F '/' '{ print "/" }' /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(,26) }' /tmp/update.txt > /tmp/awk.txt; awk -F '/' '{ print "/" }' /tmp/awk.txt > /tmp/awk1.txt; uniq /tmp/awk1.txt > /tmp/awk2.txt



sudo apt-get update >> /tmp/update.txt 2>&1;
命令sudo apt-get update的stdout和stderr都被写入文件/tmp/update.txt


awk '( /W:/ && /launchpad/ && /404/ ) { print substr(,26) }' /tmp/update.txt > /tmp/awk.txt; awk -F '/' '{ print "/" }' /tmp/awk.txt > /tmp/awk1.txt;


awk在W:文件中搜索由launchpad404/tmp/update.txt组成的行,如果发现那一行则显示(stdout)从第5列的第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 "/" }' /tmp/awk.txt > /tmp/awk1.txt;  

用分隔符/找出column1和column2,其中column1和column2由//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
16年2月14日在19:31

#3 楼

之所以会出现这些错误,是因为您的PPA存储库不提供用于Ubuntu发行版的软件包(即quantal)。
请看以下屏幕截图:
ppa:petrakis / wdt-main

ppa:screenlets / ppa

您可以看到quantal的目录丢失了,因此您会得到404 Not Found Error Messages
要摆脱这些消息,您可以从系统中删除这些PPA存储库。请遵循以下有关如何删除PPA的问题:


请参阅此答案中的“如何消除这些错误”一节。
或者,如何删除PPA?
/>


如何进行调查并得出结论?
这些是您收到的有关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/并根据给出错误的链接进行更深的研究。您将能够看到实际的问题是什么。

#4 楼

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

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


评论


这只是避免了一个重复的问题。.我准备好我的Q正文,正当我开始键入标题时,找到了链接。.为什么他们不将所有列表都放在一个地方!在/etc/apt/sources.list中列出了一些我曾检查过但不知道我也必须在/etc/apt/sources.list.d/中查看的..谢谢。

–精确
2014年3月12日在11:15

这然后添加适当的新PPA对我来说是最好的(唯一可行的)解决方案。

–markus-tharkun
16-3-3在12:59

#5 楼

选择较旧的存储库

如果您确实需要该存储库中的软件包,则可以使用较旧版本的镜像。

但是请注意,并非所有较旧的版本都是向下兼容;其中一些会导致与主程序包存储库发生冲突。

发生冲突时,您只能做的事情是从源代码构建,或者等到提供程序为您的Ubuntu版本发布存储库。我们不知道软件包提供商何时发布其版本的软件包,因此您是负责检查其版本库的负责人。

它可以与任何Debian-基于存储库。但是,不能保证这将成功。

步骤


添加PPA /存储库后,请执行常规sudo apt update。您会注意到更新时出现404错误;


打开存储库目录,这会导致浏览器出现404错误;在这种情况下,它是https://dl.winehq.org/wine-builds/ubuntu。通常,可用的发行版位于dists/中。


找到它之后,打开“软件和更新”,并用可用发行版替换发行版名称;最好是最新的或LTS之一。替换二进制和源代码镜像中的“分发”部分。在这种情况下,我要用bionic代替artful


再做一次sudo apt update
您完成了!现在,更新软件包列表时,不再有404错误。


发布适用于Ubuntu版本的软件包时,请用发行版替换“发行版”部分,重复步骤3和4名称。


#6 楼

请注意,这已经发生在我身上,而我脱离了这些情况。它也为我的一个朋友工作。甚至无法解释原因,有一些解决了该问题的方法:


禁用所有PPA;
从终端运行sudo apt-get update
重新启用PPA再次;
运行sudo apt-get update;

突然工作了。不要问我为什么。

评论


对我没有影响。仍然是404s。

–kwoxer
16年1月6日在7:56

我禁用了一些不需要的PPA,并尝试了sudo apt-get更新,它运行良好。

–沙珊斯
17年7月7日在6:56

#7 楼

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

您可以:

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


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



#8 楼

我已经尝试了所有可能的答案,但是唯一的解决方案是将Ubuntu 16.04 Xenial默认的/etc/apt/sources.list文件复制到我的/etc/apt/sources.list中。

来源:
https:// gist.github.com/rohitrawat/60a04e6ebe4a9ec1203eac3a11d4afc1

这节省了我的Linux。

#9 楼

>您的资源已被弄乱/或损坏,但我们可以重新列出一个新列表。


打开一个终端并键入


sudo rm /etc/apt/sources.list



然后,键入:


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



然后打开软件源:


sudo软件属性gtk


您会看到5个复选框将其全部打勾,然后在下面将
服务器更改为最接近您的位置,例如,如果您居住在美国,则可以放置美国服务器,应用选项并
关闭窗口。

然后转到终端并输入:


sudo apt-get update && upgrade



哪个会更新您的系统。