ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Ubuntu 20.04更换清华软件源:原理、步骤与问题排查全指南

Ubuntu 20.04更换清华软件源:原理、步骤与问题排查全指南

1. 项目概述:为什么要更换Ubuntu的软件源?

如果你刚装好Ubuntu 20.04,或者已经用了一段时间,可能会发现通过apt updateapt install安装软件时,速度时快时慢,甚至偶尔会卡住不动。这通常不是你的网络问题,而是默认的软件源服务器(repository server)可能在地球的另一端,物理距离和网络拥堵导致了延迟。对于国内用户来说,将Ubuntu官方的软件源替换为国内的镜像源,比如清华大学开源软件镜像站(Tuna),几乎是提升系统使用体验的第一步。这不仅仅是“换个地址”那么简单,它直接关系到你后续所有软件安装、系统更新的速度和稳定性。

简单来说,Ubuntu的软件源就是一个巨大的软件仓库列表,里面记录了从哪里下载系统核心组件、应用程序、语言包、安全更新等。默认情况下,系统会使用Ubuntu官方在全球架设的服务器。而清华镜像源在国内有服务器节点,相当于把整个仓库“搬”到了家门口,下载速度自然会有质的飞跃。这个操作本身不复杂,但背后涉及到系统配置文件的修改、密钥的验证以及不同场景下的源地址选择,对于新手来说,理解每一步在做什么,比单纯复制命令更重要。接下来,我会带你从原理到实操,彻底搞懂如何安全、高效地将Ubuntu 20.04的源换成清华镜像。

2. 核心原理与文件结构解析

在动手之前,我们先搞清楚要修改的是什么,以及为什么这么修改是安全的。这能让你在遇到问题时,知道从哪里排查。

2.1 软件源配置文件:/etc/apt/sources.list

这是整个操作的核心文件。apt(Advanced Package Tool)是Ubuntu的包管理工具,它的一切行为都基于这个文件。你可以用任何文本编辑器打开它看看:

sudo cat /etc/apt/sources.list

你会看到很多以debdeb-src开头的行。每一行定义了一个软件源。我们来拆解一行的含义:

deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse
  • deb: 表示这是一个二进制软件包仓库(我们安装的软件都是这种)。如果是deb-src,则表示是源代码包仓库,普通用户很少用到。
  • http://archive.ubuntu.com/ubuntu/: 这是仓库的根URL。我们更换镜像源,主要就是替换这部分地址。
  • focal: 这是Ubuntu 20.04的代号。每个Ubuntu版本都有一个代号(如18.04是bionic,22.04是jammy)。这一点至关重要,必须匹配你的系统版本,否则会导致安装错误的软件包,可能让系统崩溃。
  • main restricted universe multiverse: 这是软件包的组件(Component)。它们代表了Ubuntu对不同软件的自由度和支持程度的分类。通常我们会全部启用,以确保软件库的完整性。

注意:在修改前,强烈建议备份原始文件。这是一个好习惯,万一新源有问题,可以瞬间恢复。命令很简单:sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

2.2 镜像源的选择:为什么是清华?

国内有多个优秀的开源镜像站,如阿里云、中科大、华为云等。选择清华镜像(Tuna)的原因有几个:一是历史悠久,稳定可靠;二是同步速度通常很快,基本与官方源保持即时更新;三是其提供的文档非常清晰。对于Ubuntu来说,各镜像站的内容本质上是一样的,都是官方源的完整拷贝,所以选任何一个在速度上都不会有本质区别,你可以根据网络情况测试后选择。本文以清华源为例,方法是通用的。

2.3 APT的工作流程

当你执行sudo apt update时,apt会读取sources.list中的所有地址,去这些地址下载一个叫做InReleaseRelease.gpg的文件(包含仓库的元数据索引)以及Packages.gz等文件。这个过程会验证服务器的数字签名(通过/etc/apt/trusted.gpg.d/目录下的密钥),确保软件包来源可信且未被篡改。更换镜像源后,apt只是从另一个同样被Ubuntu官方签名的服务器获取数据,安全性是有保障的。

3. 详细操作步骤:命令行与图形界面两种方法

我们将分两种方法进行:纯命令行(适用于服务器、桌面版终端)和图形界面(适用于桌面版新手)。请务必先备份!

3.1 方法一:命令行手动替换(推荐,通用性强)

这是最根本、最清晰的方法。我们直接编辑配置文件。

步骤1:备份现有源列表

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

这行命令创建了一个名为sources.list.bak的备份文件。如果后续操作失误,你可以通过sudo cp /etc/apt/sources.list.bak /etc/apt/sources.list来恢复。

步骤2:编辑源列表文件使用你熟悉的命令行文本编辑器。最常用的是nano(对新手友好)或vim

sudo nano /etc/apt/sources.list

打开文件后,你会看到所有现有的源地址。我们的目标是将其中http://archive.ubuntu.com/ubuntu/以及类似http://security.ubuntu.com/ubuntu/的URL,替换为清华源的地址。

步骤3:替换URL你需要将文件中所有http://archive.ubuntu.com/ubuntu/替换为https://mirrors.tuna.tsinghua.edu.cn/ubuntu/。同样,将http://security.ubuntu.com/ubuntu/替换为https://mirrors.tuna.tsinghua.edu.cn/ubuntu/

nano编辑器中,你可以使用快捷键Ctrl+\进行搜索替换。不过,更稳妥的做法是注释掉所有旧行,新增对应的新行。具体操作如下:

  1. 在每一行旧地址的行首加上#号来注释它。例如:
    # deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse # deb-src http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse
  2. 在文件末尾,添加以下对应清华源的新行。请确保focal与你系统版本一致
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
    • focal: Ubuntu 20.04 代号。
    • focal-updates: 正式版发布后的更新。
    • focal-backports: 为旧版系统提供的新版软件。
    • focal-security: 重要的安全更新。这部分源至关重要,必须正确配置。

步骤4:保存并退出nano中,按Ctrl+O写入文件,回车确认,然后按Ctrl+X退出。

步骤5:更新软件包列表这是检验配置是否正确的关键一步。

sudo apt update

这个命令并不会升级任何软件,它只是让apt去你新设置的清华源服务器上,获取最新的软件包列表信息。如果终端开始快速滚动显示从mirrors.tuna.tsinghua.edu.cn获取信息的进度,并且最后没有报错(看到“全部完成”或“All packages are up to date”之类的提示),那么恭喜你,换源成功了!

实操心得:执行sudo apt update时,如果遇到Certificate verification failedThe following signatures couldn‘t be verified这类错误,很可能是因为你的系统时间不正确,或者镜像站正在同步(短暂不可用)。可以先检查系统时间date,或等待几分钟再试。清华源非常稳定,后者情况较少。

3.2 方法二:使用sed命令一键替换(快速,但需谨慎)

如果你熟悉命令行,想更快地完成,可以使用sed流编辑器进行全局替换。这同样需要先备份。

sudo sed -i.bak 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g;s/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list

这条命令做了两件事:

  1. -i.bak:在原位编辑文件,并自动创建一个带.bak后缀的备份(sources.list.bak)。
  2. s/A/B/g:这是一个替换命令,将文件中所有匹配A的字符串替换为B。这里我们执行了两次替换,分别将archive.ubuntu.comsecurity.ubuntu.com替换为mirrors.tuna.tsinghua.edu.cn

执行后,同样运行sudo apt update测试即可。

注意事项sed命令虽然快捷,但它会替换文件中所有匹配的字符串。请确保你的sources.list文件格式标准,没有其他注释或特殊内容包含这些域名,否则可能导致意外修改。对于新手,更推荐方法一,可控性更强。

3.3 方法三:图形界面设置(Ubuntu Desktop)

对于桌面用户,Ubuntu 提供了更友好的设置方式。

  1. 打开“软件和更新”(Software & Updates)应用。你可以在应用菜单中搜索找到它。
  2. 在弹出的窗口中,第一个标签页就是“Ubuntu 软件”(Ubuntu Software)。
  3. “下载自”(Download from)的下拉菜单中,选择“其他...”(Other...)。
  4. 这时会弹出一个服务器列表。点击“选择最佳服务器”(Select Best Server),系统会自动测试并推荐一个速度最快的镜像。通常这会选中国内的某个镜像站(可能是清华、阿里云或中科大)。
  5. 你也可以手动选择。在服务器列表中,找到“China”并展开,从列表里选择mirrors.tuna.tsinghua.edu.cn
  6. 点击“选择服务器”(Choose Server),输入密码授权。
  7. 关闭“软件和更新”窗口,系统会提示列表已过时,点击“重新载入”(Reload)。这个过程就相当于在后台执行了sudo apt update

图形化方法的本质也是修改/etc/apt/sources.list文件,只不过它帮你完成了编辑和验证的步骤。

4. 验证与进阶配置

换源之后,我们来做一些验证和优化。

4.1 验证换源是否成功

执行sudo apt update后,仔细看输出的每一行。你应该看到大量的Hit行,URL 开头都是https://mirrors.tuna.tsinghua.edu.cn。例如:

获取:1 https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal InRelease [265 kB] 获取:2 https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-updates InRelease [114 kB] ...

这明确表示正在从清华源拉取数据。然后,尝试安装或更新一个软件来感受速度:

sudo apt install htop

如果下载速度飞快(通常能达到几MB/s甚至更高),说明换源效果显著。

4.2 处理可能的“404 Not Found”错误

有时在apt update时,可能会针对某个子仓库(如focal-backports)报404 Not Found错误。这通常不是因为源地址错了,而是该镜像站可能没有同步某个非常用组件,或者你的sources.list中存在错误的、不属于当前系统版本的仓库行(例如,混入了其他版本如jammy的源)。

排查步骤:

  1. 再次检查/etc/apt/sources.list文件,确保所有focal的拼写正确,并且没有多余的其他版本代号的行。
  2. 检查/etc/apt/sources.list.d/目录。这个目录存放着第三方软件源的独立列表文件(比如Docker、Node.js等)。有时问题出在这里。你可以用ls /etc/apt/sources.list.d/查看,并逐一检查这些文件中的源地址是否也需要更换或是否兼容。
  3. 如果错误仅来自一两个不常用的组件(如deb-src源码包),而你确定不需要它们,可以直接在对应行首添加#注释掉,然后再次apt update

4.3 为特定软件使用特定源(高级)

有时候,你可能希望大部分软件从清华源下载,但某个特定软件(比如某个游戏的启动器)需要从其官方源获取。这时就不应该修改全局的sources.list,而是利用/etc/apt/sources.list.d/目录。

例如,要添加Docker的官方源:

  1. 安装依赖以使apt能通过HTTPS使用仓库:
    sudo apt install ca-certificates curl
  2. 添加Docker的官方GPG密钥(用于验证):
    sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc
  3. 将Docker仓库添加到APT源列表中(这里依然会用到focal代号):
    echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ focal stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  4. 更新列表并安装:
    sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io

这样,Docker就会从其官方源安装,而系统其他软件仍从清华源获取。这是一种更清晰、更易于管理的源配置方式。

5. 常见问题与排查技巧实录

即使按照步骤操作,也可能遇到一些问题。这里记录了几个我实际遇到过的坑和解决方法。

5.1 问题:sudo apt update失败,提示“无法安全地用该源进行更新,所以默认禁用该源”

错误信息示例

W: GPG error: https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY XXXXXXXXXXXXXXXX E: The repository 'https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal InRelease' is not signed. N: Updating from such a repository can't be done securely, and is therefore disabled by default.

原因与解决: 这表示系统缺少验证该仓库软件包所需的GPG公钥。虽然清华镜像站的内容是官方同步的,但apt需要对应的密钥来验证完整性。解决方法是从官方渠道导入缺失的密钥。

  1. 从错误信息中复制XXXXXXXXXXXXXXXX这部分密钥ID。
  2. 使用以下命令从Ubuntu密钥服务器导入:
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys XXXXXXXXXXXXXXXX
    例如,如果密钥ID是3B4FE6ACC0B21F32,则命令为sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
  3. 导入成功后,再次运行sudo apt update

注意apt-key命令在较新版本的Debian/Ubuntu中已被标记为弃用,但对于处理历史遗留的第三方源密钥问题仍然有效。更现代的做法是像前面Docker例子那样,将密钥单独放到/etc/apt/trusted.gpg.d/目录或使用signed-by指令。

5.2 问题:更新速度依然很慢

排查思路

  1. 检查源地址是否正确:再次确认sources.list中的地址是mirrors.tuna.tsinghua.edu.cn,并且协议是https(http也可,但https更安全)。可以尝试ping一下这个域名,看延迟如何:ping mirrors.tuna.tsinghua.edu.cn
  2. 网络环境问题:如果你使用了某些特殊的网络配置(如代理),可能会影响。apt默认使用系统代理设置。你可以通过检查环境变量echo $http_proxy $https_proxy来确认。如果需要为apt单独设置代理,可以创建配置文件/etc/apt/apt.conf.d/proxy.conf,并添加:
    Acquire::http::Proxy "http://your-proxy-address:port"; Acquire::https::Proxy "http://your-proxy-address:port";
    (请将your-proxy-address:port替换为你的实际代理地址和端口,如果不需要代理,则删除此文件或注释掉内容)。
  3. 尝试其他国内镜像:清华源虽然快,但网络是复杂的。你可以临时将地址换成阿里云镜像mirrors.aliyun.com或中科大镜像mirrors.ustc.edu.cn试试速度。方法同上,只需替换URL中的域名部分。

5.3 问题:执行apt install时,某些包找不到

错误信息示例

E: Unable to locate package python3-pip

解决: 这通常是因为软件包列表没有更新,或者你输入的包名确实不存在。请按顺序排查:

  1. 首先,确保你已经成功运行了sudo apt update
  2. 使用apt search命令查找准确的包名:apt search python3 pip
  3. 如果确信包名正确但依然找不到,检查你的sources.list是否包含了所有必要的组件(main, restricted, universe, multiverse)。特别是universemultiverse仓库包含了大量社区维护和版权受限的软件,很多常用工具都在里面。确保你的源行末尾包含了这些组件。

5.4 问题:误操作导致源文件混乱,如何恢复?

这是备份习惯派上用场的时候。

  1. 如果你按照建议做了备份,直接还原:
    sudo cp /etc/apt/sources.list.bak /etc/apt/sources.list
  2. 如果没有备份,别慌。Ubuntu 官方提供了一个最基础的sources.list文件。你可以清空当前文件,然后填入官方源地址。一个更简单的方法是,直接下载一个针对20.04版本的默认文件模板(但记得替换为国内源地址)。或者,如果你能记住最初的几行,可以手动重写。
  3. 终极方法:使用apt自带的software-properties-common工具重置。安装它(如果尚未安装):sudo apt install software-properties-common,然后使用sudo add-apt-repository --remove来删除错误的仓库,但更直接的是,你可以从另一台正常的 Ubuntu 20.04 机器上拷贝一个/etc/apt/sources.list文件过来修改。

为了避免这些问题,最好的习惯就是:修改任何系统重要配置文件前,先备份

我个人在实际操作中的体会是,更换软件源这个操作,看似简单,却是深入理解Linux系统管理的一个绝佳切入点。它让你直接接触到包管理系统的核心配置,理解了仓库、组件、版本代号这些概念。成功换源后带来的速度提升是立竿见影的,这会让后续所有的开发、学习体验顺畅很多。对于服务器环境,这更是部署前的标准动作,能显著减少软件安装和系统更新的等待时间。最后一个小技巧是,你可以定期(比如每半年或一年)重新评估一下哪个国内镜像站对你的网络最快,因为网络环境可能会变化,换个更快的源只需几分钟,却能持续受益。

返回列表