ARTICLE DETAIL

资讯详情

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

Ubuntu换清华源实操指南:从apt到pip与conda的配置排错

Ubuntu换清华源实操指南:从apt到pip与conda的配置排错 刚装完 Ubuntu或者用着用着发现apt update慢到让人想砸键盘这时候十有八九会有人告诉你“换个国内源”。而在所有国内镜像站里清华源mirrors.tuna.tsinghua.edu.cn又是出现频率最高的那个。我最初接触 Ubuntu 那会儿踩过不少坑换源的时候甚至还把系统搞到差点重装所以这篇文章打算把 Ubuntu 换清华源的完整思路和实操步骤一次性讲清楚你会明白软件源是什么、为什么选清华源、从老版本的sources.list到 24.04 的ubuntu.sources该怎么处理、pip 和 conda 这类 Python 生态工具怎么跟清华源联动以及被拒、404、GPG 报错这些高频问题到底怎么排查。不管你是刚装完虚拟机的新手还是已经在 WSL 里折腾了一段时间的开发者照着这份思路走基本不会再被源的问题卡住。1. 换源之前先搞明白软件源到底是个啥1.1 软件源的本质apt 从哪里把软件拉下来很多人把“换源”当成一个固定操作复制粘贴完就结束了。但如果不理解背后的机制后面一旦遇到报错你根本不知道从哪里下手。所谓软件源就是 Ubuntu 系统里 apt 这个包管理器默认连接的软件仓库。你可以把它想象成手机上的应用商店apt install的时候系统其实是在向这个“商店”查询软件包并下载安装。这个“商店”的地址写在/etc/apt/sources.list文件里或者说写在/etc/apt/sources.list.d/目录下的源文件里。Ubuntu 默认配置的是官方服务器地址archive.ubuntu.com和security.ubuntu.com。从国内网络环境直连这两个地址速度时快时慢高峰期甚至会出现几十 KB/s 的下载速度装个稍微大点的软件包都像在受刑。镜像站的作用就是把这些官方仓库的内容完整同步到国内服务器上让你访问时走的是国内链路速度自然快几个数量级。1.2 为什么偏偏是清华源国内能用的镜像站其实不少阿里、中科大、华为云都有。但清华大学的 TUNA 镜像站一直是口碑最稳的那一档。首先是带宽和同步频率都有保障Ubuntu、Debian、CentOS 这些主流发行版的仓库更新非常及时基本不会出现“官方已经发了新版本镜像站还差半天没同步”的情况。其次是覆盖面广清华源不止有 apt还有 pip、conda、npm、docker 等一整套开发环境需要的镜像你换完系统源之后Python 和 Anaconda 顺便也一起换了一套配置走天下。所以这篇文章里的“清华源”指的不只是一个 apt 源而是以mirrors.tuna.tsinghua.edu.cn为根地址的一组镜像服务。适合的人群也很明确国内 Ubuntu 用户、刚装好系统或虚拟机的学习者、在 WSL 里做开发的人以及任何被 apt、pip 下载速度折磨过的开发者。2. 换源前的准备版本判断与备份2.1 先确认你的 Ubuntu 版本和源文件格式这是我在实际交流中发现最多人栽跟头的地方。Ubuntu 的换源方式不同版本之间其实有差异尤其是 24.04 之后源文件的组织方式发生了不小变化。你在网上搜教程时如果照着旧版本的方法去改新版本大概率会遇到“文件不存在”或者“改了之后没效果”的尴尬。第一步确认系统版本和代号lsb_release -a或者cat /etc/os-release输出里会出现类似Ubuntu 22.04.4 LTS这样的系统版本以及jammy、noble这样的版本代号。这个代号很重要因为源地址里的路径是按代号来的。常见对应关系大概是版本代号源文件位置20.04focal/etc/apt/sources.list22.04jammy/etc/apt/sources.list24.04noble/etc/apt/sources.list.d/ubuntu.sources24.04 开始默认源文件从原来的单行列表格式切换成了 deb822 多行格式放在/etc/apt/sources.list.d/ubuntu.sources里。如果你在 24.04 上还只盯着/etc/apt/sources.list改基本是白忙一场因为系统默认走的是ubuntu.sources这个文件。2.2 备份源文件给自己留条退路改任何系统配置文件之前备份是底线。这个习惯我建议你从一开始就养成尤其是源文件这种直接关系到系统能否正常安装软件的关键配置。万一改错了、写挂了还原备份远比在网上重新找教程要快。老版本格式备份sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak新版本 deb822 格式备份sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak备份文件名后面的.bak是约定俗成的后缀你叫backup1也行只要能认出来就能用。此时不要急着改文件先看一眼当前源文件的内容确认里面写的是不是官方地址。如果是下一步直接替换如果你之前已经换过别的源那么替换时就要以实际内容为准。3. apt 换源完整实操从 sed 一键替换到手写配置3.1 源文件里到底写了什么先看老格式的/etc/apt/sources.list默认内容大致是deb http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse一行一条源。每行里deb表示这是一个二进制软件包源后面跟的是服务器地址再后面是发行版代号最后是组件类别。main是官方维护的自由软件restricted是官方支持的非自由软件universe是社区维护的自由软件multiverse是可能带有版权问题的非自由软件。日常使用建议四个都保留避免装某些软件时提示找不到包。24.04 的/etc/apt/sources.list.d/ubuntu.sources默认内容大致是Types: deb URIs: http://archive.ubuntu.com/ubuntu/ Suites: noble noble-updates noble-backports noble-security Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg含义和老格式一一对应只是换成了结构化写法。URIs对应仓库地址Suites对应发行版代号及更新通道Components对应组件类别Signed-By指定用于验证该源签名的密钥文件。3.2 一条 sed 命令完成域名批量替换替换的核心思路很简单把域名从官方地址改成清华镜像地址后面的路径保持/ubuntu/不变。如果你的系统是老格式20.04、22.04在终端依次执行sudo sed -i s//archive.ubuntu.com/ubuntu///mirrors.tuna.tsinghua.edu.cn/ubuntu/g /etc/apt/sources.list sudo sed -i s//security.ubuntu.com/ubuntu///mirrors.tuna.tsinghua.edu.cn/ubuntu/g /etc/apt/sources.list如果你的系统是 24.04 新格式执行sudo sed -i s//archive.ubuntu.com/ubuntu///mirrors.tuna.tsinghua.edu.cn/ubuntu/g /etc/apt/sources.list.d/ubuntu.sources sudo sed -i s//security.ubuntu.com/ubuntu///mirrors.tuna.tsinghua.edu.cn/ubuntu/g /etc/apt/sources.list.d/ubuntu.sources命令里的s旧内容新内容g表示把每一行中出现的旧内容全部替换成新内容。之所以用做分隔符而不是常见的/是因为地址里本身包含/直接混用会让命令变得很难读。替换完之后建议先cat看一眼文件内容确认所有官方域名都变成了mirrors.tuna.tsinghua.edu.cn再进入下一步。3.3 手写配置的方式也给你备好了sed 替换适合整个文件都是默认源的情况。如果你之前手动添加过第三方源或者文件内容已经被改得不认识了那干脆手动编辑更稳妥。用你习惯的编辑器打开源文件例如sudo vim /etc/apt/sources.list老格式直接写入以下内容以 22.04 为例其他版本将jammy换成对应代号deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse24.04 新格式则编辑/etc/apt/sources.list.d/ubuntu.sources写入Types: deb URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ Suites: noble noble-updates noble-backports noble-security Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg这里有个细节为什么新格式里没有单独给noble-security拆一个独立块因为清华镜像的/ubuntu/路径下已经同步了noble-security这个套件合并写在Suites里Ubuntu 会统一从清华拉取不存在老版本里security需要指向另一个域名的情况。这是新格式一个很舒服的地方域名统一了换源也就干净了。3.4 更新源并验证结果源文件改完之后执行sudo apt update看到输出里大量出现Hit、Get并且地址是mirrors.tuna.tsinghua.edu.cn说明源已经生效。Hit表示仓库元数据没有变化直接用缓存Get表示有更新正在下载Ign一般是无害的忽略提示。如果更新过程中出现Err就得进入第 5 章对着问题排查了。确认源没问题后顺便执行sudo apt full-upgrade把系统中所有软件包同步到镜像站对应的最新状态。这一步不是必须的但我建议新装的系统做一次因为官方源和镜像站在同步时间点上可能存在微小差异升级完能避免依赖版本不一致导致的奇怪问题。4. 不只是 aptpip、conda 等生态的清华源配置4.1 pip 换源Python 开发者的刚需apt 搞定之后紧接着要处理的就是 pip。很多人在 Ubuntu 上用 pip 装 Python 包速度同样让人着急。清华 PyPI 镜像地址是https://pypi.tuna.tsinghua.edu.cn/simple临时使用安装某个包时手动指定pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple永久生效写入 pip 配置文件。Linux 下的用户级配置文件位于~/.config/pip/pip.conf没有就自己创建mkdir -p ~/.config/pip vim ~/.config/pip/pip.conf写入[global] index-url https://pypi.tuna.tsinghua.edu.cn/simple保存后执行pip config list可以看到当前生效的配置。以后所有pip install都会走清华源不需要每次带-i参数了。这里我多提一句有些旧教程会让你加trusted-host pypi.tuna.tsinghua.edu.cn这是因为早期使用 HTTP 协议或证书链不完整时需要跳过校验。现在清华源使用标准 HTTPS 证书trusted-host已经不是必需的配置。如果你在公司内网代理或防火墙导致证书校验失败再考虑加这一行否则别乱加保持配置最小化才是好习惯。4.2 conda 换源装 Python 3.11 这类需求时特别省心很多用 Anaconda 或 Miniconda 的用户经常遇到conda create -n py311 python3.11时下载速度极慢的情况。conda 默认的 repo 源在国外清华源同样提供了 Anaconda 仓库镜像。在用户主目录下编辑.condarc文件vim ~/.condarc写入channels: - defaults show_channel_urls: true default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2 custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud保存后通过以下命令验证配置conda config --show channels conda config --show default_channelsdefault_channels是 conda 在默认官方源位置替换后的地址custom_channels则是把 conda-forge、pytorch 这类社区频道也指到清华镜像的对应目录。这样配置之后创建环境或者安装 PyTorch 等大体积包时速度提升会非常明显。4.3 其他常见源的快捷入口清华源还有 npm、docker-ce、ros 等大量的镜像。比如 npm 只需要设置 registrynpm config set registry https://mirrors.tuna.tsinghua.edu.cn/npm/docker 则是在/etc/docker/daemon.json里配置registry-mirrors指向清华提供的 docker 镜像加速地址。这些按需配置即可不用一次性全换也不建议盲目把所有软件都指向同一个镜像站那样反而可能因为单点带宽占用导致速度不升反降。5. 换源后常见问题与排查实录5.1 被清华源拒绝访问到底怎么回事这是搜索热词里一个很典型的问题“被清华源拒绝访问”。实际表现往往是浏览器能打开清华源页面但 apt 或 pip 莫名其妙报 403、403 Forbidden或者干脆连接被重置。根据我的排查经验绝大多数 403 和“拒绝访问”不是你的 IP 被封了而是镜像站对请求的客户端做了识别。清华源这类面向全网的公共服务为了避免被爬虫和恶意脚本拖垮会校验User-Agent。如果你用 Python 的requests库或者某些下载工具的默认 UA 去抓取镜像站内容就可能被判定为非正常客户端而拒绝。正常使用 apt 时apt 自带的 UA 是类似APT-HTTP/1.3这样的标识pip 也有自己的 UA这些都不会被限制所以日常apt update、pip install其实很少遇到拒绝访问。如果你确实用脚本去批量下载镜像站文件建议把 UA 设置成常见浏览器的标识并且控制请求频率避免给公共资源造成压力。另外如果你在公司或学校网络环境出口 IP 是共享的可能有别人误操作触发了镜像站的临时封锁这种情况通常过段时间会自动恢复。5.2 GPG 签名验证失败NO_PUBKEY换源之后执行apt update有时会看到类似W: GPG error: https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble InRelease: The following signatures couldnt be verified because the public key is not available: NO_PUBKEY XXXXXXXX这种问题通常不是清华源本身的问题而是你的系统缺少某个软件源的官方 GPG 公钥。Ubuntu 用 GPG 签名来保证软件包来自官方且未被篡改镜像站只是原样同步仓库和签名密钥校验仍然走官方机制。解决办法就是导入缺失的密钥。新版本系统建议用gpg配合 keyserver 导入sudo gpg --keyserver keyserver.ubuntu.com --recv-keys 报错里给出的KEY然后再把导出的密钥放到系统 keyrings 目录以 24.04 为例gpg --export 报错里给出的KEY | sudo tee /usr/share/keyrings/自定义名称.gpg /dev/null之后在源文件里把Signed-By指向这个 keyring 文件再执行apt update。旧版本系统可能还会看到apt-key的用法但 apt-key 在新版本里已经被标记为废弃建议尽量用上面这种方式。5.3 404 Not Found路径、代号、组件别搞混apt update报 404核心原因基本是源地址里某个字段写错了。最常见的三种第一种版本代号写错。源地址里必须用当前系统的代号比如 24.04 是noble你写成了jammy镜像站对应路径下自然找不到这个仓库直接 404。第二种源文件里混入了不存在的套件。比如某些教程让你写noble-proposed但该套件在清华源dists目录下已经不再同步或者你没有启用对应组件都会导致访问失败。第三种用了旧格式文件却混入了新格式的配置。24.04 如果你还在/etc/apt/sources.list里写deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble ...同时系统又读到ubuntu.sources里的内容两边一旦冲突同样可能引发各种诡异报错。排查方法很直接打开浏览器或者用 curl访问报错里给出的完整 URL看这个路径在镜像站上是否真实存在。比如curl -I https://mirrors.tuna.tsinghua.edu.cn/ubuntu/dists/noble/Release能返回 200说明路径正确返回 404就逐层检查路径里的每个部分。5.4 换源后 apt update 卡住或极慢明明换了国内源为什么apt update还是很慢甚至像卡死了我遇到的一个高频原因是 IPv6 优先策略。如果你的机器有 IPv6 地址但网络环境对 IPv6 支持不好apt 在尝试连接镜像站的 IPv6 地址时会长时间超时然后才回退到 IPv4表现出来就是“转圈圈转很久”。解决办法要么是调整 DNS 让系统优先解析 IPv4要么临时禁用 IPv6 测试一下sudo sysctl -w net.ipv6.conf.all.disable_ipv61不过这个方案只是临时验证用不要永久关闭 IPv6更稳妥的做法是调整 apt 的Acquire::ForceIPv4配置echo Acquire::ForceIPv4 true; | sudo tee /etc/apt/apt.conf.d/99force-ipv4另一个可能原因是你之前在其他源文件里残留了无效的第三方源。apt update会遍历/etc/apt/sources.list.d/下的所有源定义其中任意一个长时间超时都会拖慢整体进度。排查时用apt update -o Acquire::http::Timeout5这种带超时参数的方式快速找出哪个源有问题然后注释或删除它。5.5 常见问题速查现象大概率原因处理方式403 / 被拒绝访问客户端 UA 异常或请求过于频繁检查 UA、控制请求频率正常 apt/pip 很少触发NO_PUBKEY缺少软件源公钥通过 keyserver 导入该源对应密钥404 Not Found路径、代号、组件写错用 curl 访问完整 URL 定位错误字段apt update 极慢某第三方源超时、IPv6 优先禁用无效源、按需强制 IPv4找不到软件包源没有更新或组件缺失确认执行过 apt update、检查 Components 是否包含 universe 等安装包版本不是最新镜像同步存在少量延迟等待同步或主动访问镜像站确认版本状态6. 换完源之后顺手把这些环境问题一起解决清华源配置好了之后很多新装系统的朋友紧接着会遇到一连串“接下来怎么办”的问题。我把最常被问到、且跟源/环境紧密相关的几个点一并列出来你可以按需操作。6.1 安装基础开发工具链新装系统最痛的坑之一就是gcc、make这类工具没有预装。执行sudo apt install build-essentialbuild-essential是一个元包会把你需要的 gcc、g、make 等基础编译工具链一起装好。很多时候你发现“ubuntu 安装 gcc 失败”其实不是 gcc 本身装不上而是之前没执行过apt update源列表还是旧的或者系统里缺少依赖。先把源换好并apt update然后再装build-essential大部分问题都能顺带解决。6.2 SSH 远程连接配置虚拟机里装好 Ubuntu经常遇到 Windows 上用 Xshell 或者别的终端工具连不上。这种情况八成是系统里压根没装 OpenSSH 服务端。执行sudo apt install openssh-server sudo systemctl enable --now ssh如果还连不上检查防火墙是否放行了 22 端口sudo ufw allow ssh另外确认网络模式是否正确比如虚拟机里用 NAT 模式时端口转发配置要指向虚拟机的实际 IP 和 22 端口。And 别忘了查看 Ubuntu 的 IPip addr。6.3 中文输入法中文输入法是很多人刚切换到 Ubuntu 时的痛点。现在 Ubuntu 24.04 系统自带的 IBus 已经能比较顺滑地支持中文拼音你可以在系统设置里的 Region Language 中添加中文输入源试试自带的拼音引擎。如果更习惯搜狗输入法那就要装 fcitx 框架再去搜狗官网下载 Linux 版本安装包安装后切到 fcitx重启会话生效。这里我多一句嘴不建议一上来就折腾第三方输入法先用系统自带拼音一两周。如果只是偶尔打中文自带的完全够用如果确实有大量中文输入需求再考虑搜狗这类方案能少踩很多兼容性的坑。6.4 N 卡驱动笔记本或台式机用了 NVIDIA 显卡在 Ubuntu 上经常会出现分辨率异常、外接显示器不识别之类的现象基本就是缺驱动。最简单的方式是在换好源之后执行sudo ubuntu-drivers autoinstall这个命令会自动检测你机器上的 NVIDIA 显卡型号并安装匹配的驱动。安装完成后务必重启一次。当你在网上看到“ubuntu 安装 nvidia 显卡驱动”一堆复杂的教程时先试试这条命令能解决大部分人的需求。换源这件事本身不复杂但它牵涉到的环境细节和后续配置很多。做完一遍之后你会发现apt、pip、conda 全都快了开发环境搭建的顺畅度完全上了一个台阶。我自己的习惯是任何新装的 Ubuntu 系统第一步永远都是备份源文件、换成清华源、apt update、apt full-upgrade然后再去装其他东西。这套流程踩过太多次坑之后已经成了肌肉记忆也希望能帮你少走点弯路。
返回列表