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 安装的软件包:
通过搜索“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
在源列表中更正后我遇到了同样的问题。什么解决了我的问题:
/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
编辑
/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
之后
apt update && apt upgrade
效果很好