解决Ubuntu 22.04开发板更新源404错误的ARM架构适配指南
1. 为什么ARM开发板更新源会报404错误最近在树莓派上折腾Ubuntu 22.04时遇到了一个让人抓狂的问题无论换成阿里云、清华还是中科大的镜像源执行apt update时总是报404错误。刚开始以为是网络问题反复重试了好几次都没用。后来仔细看错误信息才发现问题出在架构上。大多数开发者习惯性使用的镜像源都是针对x86架构的而像树莓派、NVIDIA Jetson这类开发板使用的都是ARM架构。这就好比你去麦当劳点餐明明要的是巨无霸套餐服务员却给你端上来一份儿童餐——虽然都是汉堡但完全不是你要的东西。具体到技术层面当系统尝试从x86架构的源下载ARM架构的软件包时服务器上根本没有对应的文件自然就会返回404 Not Found错误。这个问题的典型报错信息是这样的E: Failed to fetch http://mirrors.aliyun.com/ubuntu/dists/jammy/main/binary-arm64/Packages 404 Not Found关键点在于URL中的binary-arm64部分。x86架构的源通常不会包含这个目录所以请求就会失败。这也是为什么直接使用常规的Ubuntu源地址会出问题。2. ARM架构开发板的正确源配置方法2.1 识别你的开发板架构在修改源之前首先要确认你的开发板确实是ARM架构。这个很简单在终端执行uname -m如果输出是aarch64或者armv7l那就说明你用的是ARM设备。x86设备通常会显示x86_64或者i386。2.2 修改源地址的关键技巧解决这个问题的核心在于把源地址中的ubuntu替换成ubuntu-ports。这个ports后缀是专门为非x86架构准备的仓库。以清华源为例正确的配置应该是这样的deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse注意看所有的ubuntu都变成了ubuntu-ports。这个小小的改动就是解决问题的关键。2.3 实际操作步骤备份原来的源列表sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak编辑源列表文件sudo nano /etc/apt/sources.list把所有包含ubuntu的URL替换成ubuntu-ports保存退出更新软件包列表sudo apt update如果一切顺利你应该能看到正常的下载进度不再有404错误了。3. 国内常用镜像源的ARM适配方案3.1 阿里云镜像源配置阿里云的ARM适配源配置如下deb http://mirrors.aliyun.com/ubuntu-ports/ jammy main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu-ports/ jammy-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu-ports/ jammy-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu-ports/ jammy-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu-ports/ jammy-backports main restricted universe multiverse3.2 中科大镜像源配置中科大的配置方案deb https://mirrors.ustc.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu-ports/ jammy-proposed main restricted universe multiverse3.3 华为云镜像源配置华为云的ARM源也很有特色deb https://mirrors.huaweicloud.com/ubuntu-ports/ jammy main restricted universe multiverse deb https://mirrors.huaweicloud.com/ubuntu-ports/ jammy-updates main restricted universe multiverse deb https://mirrors.huaweicloud.com/ubuntu-ports/ jammy-backports main restricted universe multiverse deb https://mirrors.huaweicloud.com/ubuntu-ports/ jammy-security main restricted universe multiverse4. 常见问题排查与进阶技巧4.1 更新后仍然报错怎么办有时候即使修改了源地址可能还会遇到一些问题。这时候可以尝试以下步骤清除旧的软件包缓存sudo apt clean sudo apt autoclean检查网络连接是否正常ping mirrors.tuna.tsinghua.edu.cn确保系统时间正确date如果时间不对HTTPS连接可能会失败4.2 如何测试源的速度可以使用这个命令测试各个镜像源的响应速度curl -o /dev/null -s -w %{time_total}\\n https://mirrors.tuna.tsinghua.edu.cn多次测试不同镜像源选择响应时间最短的那个。4.3 使用官方源的建议如果你的网络环境允许也可以考虑使用Ubuntu官方ports源deb http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted universe multiverse deb http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse deb http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted universe multiverse deb http://ports.ubuntu.com/ubuntu-ports/ jammy-proposed main restricted universe multiverse deb http://ports.ubuntu.com/ubuntu-ports/ jammy-backports main restricted universe multiverse官方源的优点是软件包最全更新最及时但国内访问速度可能不太理想。5. 自动化配置脚本分享为了简化配置过程我写了一个简单的bash脚本可以自动检测架构并配置合适的源#!/bin/bash ARCH$(uname -m) RELEASE$(lsb_release -cs) if [[ $ARCH aarch64 || $ARCH armv7l ]]; then echo 检测到ARM架构正在配置ubuntu-ports源... sudo sed -i s|http://.*ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports|g /etc/apt/sources.list sudo sed -i s|http://.*archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports|g /etc/apt/sources.list sudo sed -i s|https://.*archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports|g /etc/apt/sources.list echo 源配置完成正在更新... sudo apt update else echo 非ARM架构无需特殊配置 fi把这个脚本保存为change_source.sh然后给执行权限chmod x change_source.sh sudo ./change_source.sh脚本会自动检测你的架构如果是ARM设备就会把源地址改成清华的ubuntu-ports镜像。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2462976.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!