Debian 8 apt-get 更新显示 404 Not Found

Debian 8 apt-get 更新显示 404 Not Found

apt-get update每次在 Debian 8 上运行时,我都会得到以下输出。

有没有办法来解决这个问题?

Err http://ppa.launchpad.net jessie/main amd64 Packages                      
  404  Not Found
Ign http://ppa.launchpad.net jessie/main Translation-en                
Err http://ppa.launchpad.net jessie/main amd64 Packages                
  404  Not Found
Ign http://ppa.launchpad.net jessie/main Translation-en                
Fetched 164 kB in 3s (47.0 kB/s)                                       
W: Failed to fetch http://ppa.launchpad.net/certbot/certbot/ubuntu/dists/jessie/main/binary-amd64/Packages  404  Not Found

W: Failed to fetch http://ppa.launchpad.net/ondrej/php/ubuntu/dists/jessie/main/binary-amd64/Packages  404  Not Found

E: Some index files failed to download. They have been ignored, or old ones used instead.

这就是我所拥有的 /etc/apt/sources.list

deb http://ftp.debian.org/debian/ jessie main
deb-src http://ftp.debian.org/debian/ jessie main

deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

# jessie-updates, previously known as 'volatile'
deb http://ftp.debian.org/debian/ jessie-updates main
deb-src http://ftp.debian.org/debian/ jessie-updates main

deb http://ftp.debian.org/debian jessie-backports main

这是的输出 cat /etc/apt/sources.list.d/*

deb http://ppa.launchpad.net/certbot/certbot/ubuntu jessie main
# deb-src http://ppa.launchpad.net/certbot/certbot/ubuntu jessie main
deb http://ppa.launchpad.net/ondrej/php/ubuntu jessie main
# deb-src http://ppa.launchpad.net/ondrej/php/ubuntu jessie main
deb http://ppa.launchpad.net/ondrej/php/ubuntu jessie main
# deb-src http://ppa.launchpad.net/ondrej/php/ubuntu jessie main
deb https://packages.sury.org/php/ jessie main
deb https://packages.sury.org/php/ jessie main

答案1

因此,这表明您已成功从 Debian Jessie[*] 下载存储库更新,但不是两个第三方存储库。

根据其他评论者指出的信息,这些特定的存储库似乎不再支持您的操作系统。

[*] Debian 8 目前处于“旧稳定”状态,并且已经保持了近一年的时间。 2018年6月后,将得到以下机构的支持:Debian LTS 项目而不是原来的 Debian 安全团队。如果您打算继续使用 Debian LTS,请确保您熟悉这意味着什么。特别是“该版本的 LTS 版本将不支持一些软件包,主要是一些在额外时间范围内无法支持的基于 Web 的应用程序。check-support-status软件包中的工具debian-security-support有助于检测此类不受支持的软件包。”

(考虑到backports也将停止获取更新也可能是相关的。但是backports安全团队尚未正式支持,即一开始就没有相同的承诺)。


一种可能性是您希望删除专门从 PPA 安装的软件包版本,然后切换到支持您的操作系统的其他源。

您可能应该注意确保已完全切换到新源,并且没有从您尝试替换的 PPA 中安装任何软件包。 (在奇怪的情况下,这并不重要,因为它实际上是相同的存储库,但托管存储库的位置已更改)。

我发现以下博客文章介绍了如何识别从已删除的 PPA 安装的软件包:

删除 PPA 并回滚 Debian 中的更改 |飞军

通过搜索“debian uninstall PPA”,然后搜索“debian“ppa-purge””(当我得到 Ubuntu 的结果时告诉我ppa-purge)。


如果您是 Ubuntu 用户,您可能熟悉 ppa-purge。这是一个方便的小型自动化脚本,用于删除 PPA 并回滚从该 PPA 安装的任何应用程序的版本。 Debian 默认情况下不具备这种优点,但有一种相对简单的方法可以接近这种优点。

首先,从 /etc/apt/sources.list 或 /etc/apt/sources.list.d/ 目录中删除 PPA。

进行更新:

sudo apt-get update

查找现在已过时的任何软件包:

aptitude search '?obsolete'

对我来说这返回了以下内容:

# aptitude search '?obsolete'
i A libmysqlclient18      - MySQL database client library                                                                           
i A mysql-client-5.5      - MySQL database client binaries                                                                          
i A mysql-server-5.5      - MySQL database server binaries and system database setup                                                
i A mysql-server-core-5.5 - MySQL database server binaries                                                                          
i A ruby-passenger        - Rails and Rack support for Apache2 and Nginx

现在只需使用 apt-get remove 删除列出的软件包并根据需要重新安装即可。它不像 ppa-purge 那样完全是自动化工具,但它是一个很好的开始。

答案2

只需保留包含以下内容的文件:

deb https://packages.sury.org/php/ jessie main

根据您的/etc/apt/sources.list.d/更新:

apt update

如果您有一个文件,您可以评论/删除其他网址:

# deb http://ppa.launchpad.net/certbot/certbot/ubuntu jessie main
# deb-src http://ppa.launchpad.net/certbot/certbot/ubuntu jessie main
# deb http://ppa.launchpad.net/ondrej/php/ubuntu jessie main
# deb-src http://ppa.launchpad.net/ondrej/php/ubuntu jessie main
# deb http://ppa.launchpad.net/ondrej/php/ubuntu jessie main
# deb-src http://ppa.launchpad.net/ondrej/php/ubuntu jessie main
# deb https://packages.sury.org/php/ jessie main

deb https://packages.sury.org/php/ jessie main

答案3

在源列表中更正后我遇到了同样的问题。什么解决了我的问题:

  1. /etc/apt/sources.list.d/删除排除中的所有文件

    • nginx.list含有deb http://nginx.org/packages/debian jessie nginx
    • vesta.list含有deb http://apt.vestacp.com/stretch/ stretch vesta
  2. 编辑/etc/apt/sources.list为:

     deb http://httpredir.debian.org/debian stretch main contrib non-free
     deb http://httpredir.debian.org/debian stretch-updates main contrib non-free
     deb http://security.debian.org stretch/updates main contrib non-free
    
  3. 之后apt update && apt upgrade效果很好

相关内容