解决Ubuntu sudo apt-get update找不到源的问题

本文介绍了解决Ubuntu系统中sudo apt-get update命令出现的源错误问题,详细解释了问题原因,并提供了解决步骤,包括更新源地址和重新获取软件包列表。
1. 问题描述:

执行sudo apt-get update命令时,出现如下报错信息:

忽略:3 http://mirrors.ustc.edu.cn/ubuntu zesty-security/main all Packages
错误:4 http://mirrors.ustc.edu.cn/ubuntu zesty-security/main amd64 Packages
  404  Not Found [IP: 202.141.176.110 80]
忽略:5 http://mirrors.ustc.edu.cn/ubuntu zesty-security/main i386 Packages
忽略:6 http://mirrors.ustc.edu.cn/ubuntu zesty-security/main Translation-zh
忽略:7 http://mirrors.ustc.edu.cn/ubuntu zesty-security/main Translation-zh_CN
忽略:8 http://mirrors.ustc.edu.cn/ubuntu zesty-security/main Translation-en_US
忽略:9 http://mirrors.ustc.edu.cn/ubuntu zesty-security/main Translation-en
忽略:10 http://mirrors.ustc.edu.cn/ubuntu zesty-security/main amd64 DEP-11 Metadata
忽略:11 http://mirrors.ustc.edu.cn/ubuntu zesty-security/main all DEP-11 Metadata
忽略:12 http://mirrors.ustc.edu.cn/ubuntu zesty-security/main DEP-11 64x64 Icons
忽略:13 http://mirrors.ustc.edu.cn/ubuntu zesty-security/restricted amd64 Packages
忽略:14 http://mirrors.ustc.edu.cn/ubuntu zesty-security/restricted all Packages
正在读取软件包列表... 完成
W: 仓库 “http://mirrors.ustc.edu.cn/ubuntu zesty-security Release” 没有 Release 文件。
N: 无法认证来自该源的数据,所以使用它会带来潜在风险。
N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。
W: 仓库 “http://security.ubuntu.com/ubuntu zesty-security Release” 没有 Release 文件。
N: 无法认证来自该源的数据,所以使用它会带来潜在风险。
N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。
E: 无法下载 http://mirrors.ustc.edu.cn/ubuntu/dists/zesty-security/main/binary-amd64/Packages  404  Not Found [IP: 202.141.176.110 80]
E: 无法下载 http://security.ubuntu.com/ubuntu/dists/zesty-security/multiverse/source/Sources  404  Not Found [IP: 91.189.88.142 80]
E: 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件。
2.问题原因

出现该问题的原因是/etc/app/source.list文件中的源地址失效了,需要进行更新。失效的源地址如下所示:


 39 ## Uncomment the following two lines to add software from Canonical's
 40 ## 'partner' repository.
 41 ## This software is not part of Ubuntu, but is offered by Canonical and the
 42 ## respective vendors as a service to Ubuntu users.
 43 #deb http://archive.canonical.com/ubuntu zesty partner
 44 #deb-src http://archive.canonical.com/ubuntu zesty partner
 45 
 46 deb http://mirrors.ustc.edu.cn/ubuntu/ zesty-security main restricted
 47 deb-src http://security.ubuntu.com/ubuntu zesty-security main restricted
 48 deb http://mirrors.ustc.edu.cn/ubuntu/ zesty-security universe
 49 deb-src http://security.ubuntu.com/ubuntu zesty-security universe
 50 deb http://mirrors.ustc.edu.cn/ubuntu/ zesty-security multiverse

3.解决办法

使用如下命令,在root权限打开/etc/app/source.list文件:

sudo vi /etc/app/source.list

首先注释掉46~50行的失效源地址,然后在下面添加新的源地址(第53~54行)。具体可用的源地址可实时在网上搜索并更新。下面列举的源地址不一定还有效,仅作为参考使用(截止2020年7月3日21:46:05,实测仍然有效)。


 39 ## Uncomment the following two lines to add software from Canonical's
 40 ## 'partner' repository.
 41 ## This software is not part of Ubuntu, but is offered by Canonical and the
 42 ## respective vendors as a service to Ubuntu users.
 43 #deb http://archive.canonical.com/ubuntu zesty partner
 44 #deb-src http://archive.canonical.com/ubuntu zesty partner
 45 
 46 #deb http://mirrors.ustc.edu.cn/ubuntu/ zesty-security main restricted
 47 #deb-src http://security.ubuntu.com/ubuntu zesty-security main restricted
 48 #deb http://mirrors.ustc.edu.cn/ubuntu/ zesty-security universe
 49 #deb-src http://security.ubuntu.com/ubuntu zesty-security universe
 50 #deb http://mirrors.ustc.edu.cn/ubuntu/ zesty-security multiverse
 51 #deb-src http://security.ubuntu.com/ubuntu zesty-security multiverse
 52 
 53 deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
 54 deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse

4.最终效果

修改后一定要保存。确认修改无误后,重新在终端中输入如下命令:

sudo apt-get update

执行结果如下:

zn@ubuntu:~$ sudo apt-get update
命中:1 http://mirrors.163.com/ubuntu bionic InRelease
命中:2 http://mirrors.163.com/ubuntu bionic-security InRelease
正在读取软件包列表... 完成                       
zn@ubuntu:~$ 
<think>我们正在解决一个关于在DebianJessie系统中使用USTC镜像出现404错误的问题。根据之前的分析,这是因为Debian Jessie已经结束支持,被移到了归档仓库。用户提供的引用[1]中提到了使用163镜像,但同样需要调整到归档路径。解决方案的核心:将地址切换到USTC镜像站的归档路径(debian-archive)或使用其他镜像的归档路径。具体步骤:1.修改`/etc/apt/sources.list`文件,将原有的USTC镜像地址替换为USTC的归档地址:-主仓库:`http://mirrors.ustc.edu.cn/debian-archive/debian/`-安全更新仓库:`http://mirrors.ustc.edu.cn/debian-archive/debian-security/`2.修改后的sources.list内容示例(针对Jessie):```debhttp://mirrors.ustc.edu.cn/debian-archive/debian/jessie maindebhttp://mirrors.ustc.edu.cn/debian-archive/debian-security/ jessie/updates main```3.如果使用其他镜像(如163),同样需要到其归档路径。但根据引用[1]中的内容,用户提供的163没有使用归档路径,所以同样会出现404。因此,我们需要将163的也改为归档路径,例如:```debhttp://mirrors.163.com/debian-archive/debian/jessie mainnon-freecontribdebhttp://mirrors.163.com/debian-archive/debian-security/ jessie/updates mainnon-freecontrib```注意:需要确认163镜像站是否提供debian-archive路径,如果没有,则不能使用。4.在Dockerfile中的修改方法(以USTC为例):```dockerfileRUN sed-i's|http://mirrors.ustc.edu.cn/debian|http://mirrors.ustc.edu.cn/debian-archive/debian|g' /etc/apt/sources.list&& \sed-i's|http://security.debian.org|http://mirrors.ustc.edu.cn/debian-archive/debian-security|g' /etc/apt/sources.list```5.如果上述方法无效,还可以考虑使用Debian官方归档站点(archive.debian.org):```dockerfileRUNecho "deb http://archive.debian.org/debian jessiemain"> /etc/apt/sources.list&& \echo"debhttp://archive.debian.org/debian-security jessie/updates main" >>/etc/apt/sources.list```6.注意:使用归档站点时,可能需要添加`--allow-unauthenticated`选项来忽略签名验证,因为归档仓库的签名可能已过期。7.在Dockerfile中安装软件时,如果遇到签名问题,可以暂时允许不验证:```dockerfileRUNapt-getupdate -o Acquire::Check-Valid-Until=false-oAcquire::AllowInsecureRepositories=true &&\DEBIAN_FRONTEND=noninteractiveapt-getinstall --allow-unauthenticated-y...```8.验证:修改后运行`apt-get update`,观察是否还有404错误。下面是一个完整的Dockerfile示例(使用USTC归档镜像):```dockerfileFROMdebian:jessie#修复镜像RUNsed -i 's|http://deb.debian.org/debian|http://mirrors.ustc.edu.cn/debian-archive/debian|g' /etc/apt/sources.list&& \sed-i's|http://security.debian.org|http://mirrors.ustc.edu.cn/debian-archive/debian-security|g' /etc/apt/sources.list#安装软件(允许不安全的仓库和过期的仓库)RUNapt-getupdate -o Acquire::Check-Valid-Until=false &&\DEBIAN_FRONTEND=noninteractive apt-get install-y\wget apache2php5gccmake \&&apt-getclean &&rm -rf /var/lib/apt/lists/*#后续步骤...```注意:由于Jessie已经非常老旧,安装软件时可能会遇到依赖问题,需要具体问题具体分析。如果用户不是在Docker中,而是在实体机或虚拟机中,则直接修改`/etc/apt/sources.list`文件,内容同上。生成相关问题:1.如何确认一个Debian版本是否还在支持周期内?2.除了USTC,还有哪些国内镜像站提供Debian归档仓库?3.在Dockerfile中如何跳过APT的签名验证?4.如何为ProFTPd漏洞环境(CVE-2015-3306)安装特定版本的软件包?5.当使用归档仓库时,遇到“Release fileexpired”错误该如何解决?</think>### 解决 Debian Jessie 使用 USTC 镜像报错 404 的方法 您遇到的 404 错误是由于 Debian Jessie(8.x)已在 2020 年结束官方支持,USTC 镜像站已将其移至归档路径。以下是完整解决方案: #### 步骤 1:修改镜像配置 编辑 `/etc/apt/sources.list` 文件,替换为正确的归档路径: ```bash # 主仓库 deb http://mirrors.ustc.edu.cn/debian-archive/debian/ jessie main contrib non-free # 安全更新 deb http://mirrors.ustc.edu.cn/debian-archive/debian-security/ jessie/updates main contrib non-free # 更新仓库 deb http://mirrors.ustc.edu.cn/debian-archive/debian/ jessie-updates main contrib non-free ``` #### 步骤 2:在 Dockerfile 中的修复方案 ```dockerfile FROM debian:jessie # 修复镜像 RUN sed -i 's|http://[^/]*/debian|http://mirrors.ustc.edu.cn/debian-archive/debian|g' /etc/apt/sources.list && \ sed -i 's|http://[^/]*/debian-security|http://mirrors.ustc.edu.cn/debian-archive/debian-security|g' /etc/apt/sources.list # 安装软件(添加忽略签名验证参数) RUN apt-get update -o Acquire::Check-Valid-Until=false && \ DEBIAN_FRONTEND=noninteractive apt-get install --allow-unauthenticated -y \ wget apache2 php5 gcc make \ && apt-get clean && rm -rf /var/lib/apt/lists/* ``` #### 关键修改说明: 1. **路径修正**: -:`http://mirrors.ustc.edu.cn/debian-archive/debian/` - 安全:`http://mirrors.ustc.edu.cn/debian-archive/debian-security/` - USTC 将旧版系统归档在 `/debian-archive/` 路径下[^1] 2. **特殊参数**: - `-o Acquire::Check-Valid-Until=false`:忽略仓库过期检查 - `--allow-unauthenticated`:允许安装未签名的包(归档仓库常见) 3. **替代镜像方案**(如 USTC 不可用): ```dockerfile # 使用 163 镜像归档 RUN echo "deb http://mirrors.163.com/debian-archive/debian/ jessie main" > /etc/apt/sources.list && \ echo "deb http://mirrors.163.com/debian-archive/debian-security/ jessie/updates main" >> /etc/apt/sources.list ``` #### 验证方法: ```bash docker build -t jessie-fixed . # 构建镜像 docker run -it jessie-fixed bash apt-get update # 应显示成功更新 ``` ### 相关问题 1. 如何验证 Debian 归档镜像的路径结构是否正确? 2. 在 Docker 中调试 `apt-get update` 404 错误的最佳实践是什么? 3. 对于已结束支持的 Linux 发行版,有哪些可靠的软件维护策略? 4. 如何为 ProFTPd 漏洞环境(CVE-2015-3306)配置特定版本的软件包? 5. 当容器构建失败时,如何通过 `docker exec` 进入中间状态进行调试?[^2]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weekman93

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值