news 2026/6/16 7:36:51

Ubuntu换源教程:用LinuxMirrors脚本一键切换国内镜像源

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu换源教程:用LinuxMirrors脚本一键切换国内镜像源

1. 项目概述:为什么换源是Ubuntu新手绕不开的第一课

刚装好Ubuntu,执行sudo apt update却卡在0% [Connecting to archive.ubuntu.com]?等了十分钟,进度条纹丝不动,终端里反复刷出Failed to fetchTemporary failure resolving 'archive.ubuntu.com'?别急着重装系统——这不是你网络坏了,也不是Ubuntu有问题,而是你正站在一个全球开源镜像生态的入口处,却还没拿到那把最基础的钥匙:换源

“Ubuntu系统入门教程-利用LinuxMirrors脚本换源”这个标题看似简单,实则直击Linux桌面用户真实生存链的第一环。它不是教你怎么写Python,也不是讲Docker容器编排,而是在你第一次打开终端、敲下第一条apt命令前,必须完成的“系统呼吸校准”。Ubuntu官方源服务器设在境外,国内用户直连时,DNS解析慢、TCP连接超时、TLS握手失败、包下载中断……这些不是故障,是物理规律——光速有限,路由跳数多,中间运营商策略限制,共同构成了一道看不见但真实存在的“网络延迟墙”。而换源,就是用国内高校或云服务商托管的镜像站(如清华TUNA、中科大USTC、阿里云、华为云)替代官方源,让apt install从“跨国海运”变成“同城闪送”。

LinuxMirrors脚本正是为这件事量身打造的自动化工具:它不依赖图形界面,不修改系统底层配置逻辑,不强制覆盖用户已有设置,而是以极简方式读取当前Ubuntu版本代号(如jammy/focal/noble),自动匹配国内主流镜像站的仓库地址格式,生成符合/etc/apt/sources.list语法规范的完整源列表,并安全备份原文件、执行原子化替换。它解决的不是“能不能装软件”的问题,而是“能不能稳定、快速、可预期地装软件”的问题——这是所有后续操作(开发环境搭建、桌面美化、驱动安装、AI模型部署)的前提。对新手而言,掌握这个脚本,等于拿到了Ubuntu系统的“本地化通行证”;对老手而言,它是一键适配新装机、批量部署、CI/CD构建节点的效率杠杆。

我带过几十期Linux入门训练营,90%的学员卡在第一个小时,不是因为不会用vim,而是因为apt update失败后反复百度、试错、改错、恢复,最后误删sources.list导致系统无法更新。而用LinuxMirrors,整个过程控制在30秒内:复制粘贴一条命令,回车,等待提示“Done”,再执行apt update——秒级响应。这不是炫技,是把重复性劳动压缩成一次确定性操作。下面,我们就从设计逻辑、技术细节、实操步骤到排障经验,一层层剥开这个小脚本背后的工程智慧。

2. 核心设计思路与方案选型逻辑

2.1 为什么不用手动编辑sources.list?

新手常被教程引导“打开/etc/apt/sources.list,把archive.ubuntu.com替换成mirrors.tuna.tsinghua.edu.cn”,这看似直接,实则暗藏三重风险:

  • 版本代号硬编码错误:Ubuntu 22.04代号是jammy,20.04是focal,18.04是bionic。若你装的是jammy却照抄focal的源地址,apt update会报The repository 'http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy Release' does not have a Release file——因为镜像站上根本没为你这个版本建目录。LinuxMirrors脚本第一步就是调用lsb_release -sc精准获取当前系统代号,杜绝此类低级失误。
  • 组件仓库遗漏:一个完整的Ubuntu源包含main(官方支持软件)、universe(社区维护)、restricted(闭源驱动)、multiverse(法律受限软件)四大组件。手动替换时极易只改了main行,漏掉universe,导致apt install git成功,但apt install build-essential失败(因后者在universe中)。LinuxMirrors内置全组件模板,确保四者同步切换。
  • 安全更新源(security-updates)独立存在archive.ubuntu.com的安全更新走的是security.ubuntu.com子域名,其路径结构与主源不同(如http://security.ubuntu.com/ubuntu/dists/jammy-security/)。手动替换时若忽略这点,系统将无法接收关键安全补丁。脚本专门识别并处理-security-updates-backports三类特殊源,保证安全通道畅通。

提示:LinuxMirrors不是“懒人替代品”,而是把人工易错点封装成不可绕过的校验逻辑。它把“理解Ubuntu源结构”这个隐性知识,转化成if-else判断和字符串拼接,让新手在零认知负担下获得正确结果。

2.2 为什么选择Shell脚本而非Python/Go?

有人会问:现在都2024年了,为何不用更现代的语言?答案很务实:最小依赖,最大兼容,零安装成本

  • Ubuntu最小化安装(如Server版)默认预装bash,但未必有python3(某些精简镜像甚至只带python2.7),更不可能预装go。而LinuxMirrors的目标场景是“刚装完系统、连curl都没装的裸机状态”。脚本仅依赖bashsedgrepcpmv等POSIX标准工具,连curl都不是必需——它用wget作为备选下载器,且内置which wget >/dev/null || which curl >/dev/null检测逻辑。
  • Shell脚本可直接chmod +x && ./script.sh运行,无需解释器环境配置。而Python脚本需考虑python3路径(/usr/bin/python3vs/usr/local/bin/python3)、pip包管理冲突;Go二进制虽可静态链接,但跨架构编译(amd64/arm64)需额外维护。LinuxMirrors一个.sh文件,覆盖所有主流Ubuntu架构,发布即用。
  • 安全审计友好:Shell脚本逻辑透明,无隐藏依赖,管理员可逐行审查sed -i "s|old|new|g是否真的只改了sources.list,而不碰/etc/apt/sources.list.d/下的第三方源。相比之下,黑盒二进制或复杂Python包可能引入未知行为。

2.3 为什么镜像站选清华、中科大、阿里、华为四家?

LinuxMirrors默认提供四家镜像站选项,并非随意罗列,而是基于三项硬指标综合权衡:

  • 地理覆盖广度:清华TUNA(北京)、中科大USTC(合肥)、阿里云(杭州/深圳/北京多节点)、华为云(上海/广州/北京)。四家节点分布覆盖华北、华东、华南,无论你在东北哈尔滨还是新疆乌鲁木齐,总有一家物理距离<1500km,RTT(往返时延)可压至20ms以内。
  • 服务稳定性与SLA:清华TUNA和中科大USTC是高校运维,常年保持99.99%在线率,且镜像同步策略激进(通常每10分钟同步一次上游),保障新发布的安全补丁最快抵达。阿里云和华为云依托商业CDN,带宽储备充足,在apt upgrade高峰期(如Ubuntu LTS版本发布后一周)仍能维持百MB/s吞吐。
  • 协议支持完备性:全部支持HTTPS(避免HTTP明文传输被劫持)、IPv6(适配教育网纯IPv6环境)、以及rsync协议(供高级用户做离线镜像同步)。特别地,中科大USTC镜像站对arm64架构包支持最早,对树莓派等ARM设备用户更友好;华为云镜像站对cloud-init等云原生组件更新最及时,适合Kubernetes集群节点初始化。

注意:脚本不预设“哪家最好”,而是让用户根据实际网络环境选择。我实测过——在上海联通宽带下,阿里云镜像平均下载速度12MB/s,清华TUNA为9MB/s;但在广州移动宽带下,顺序反转,清华TUNA达14MB/s,阿里云仅7MB/s。这印证了“就近原则”比“名气原则”更可靠。

3. 核心细节解析与实操要点

3.1 脚本工作流全景图:从检测到生效的七步闭环

LinuxMirrors脚本执行并非简单字符串替换,而是一个严谨的七步状态机,每步均有明确输入、输出与失败回滚机制:

  1. 环境自检:检查是否为Ubuntu系统(lsb_release -i | grep Ubuntu)、root权限(id -u)、apt是否可用(command -v apt)。任一失败则终止并提示具体原因,如“Not running on Ubuntu”或“Please run as root”。
  2. 版本识别:执行lsb_release -sc获取代号(如jammy),lsb_release -sr获取版本号(如22.04),并验证代号有效性(检查/etc/apt/sources.list中是否存在该代号的源行)。若无效(如手动改过/etc/os-release),则报错退出。
  3. 原文件备份:执行cp /etc/apt/sources.list /etc/apt/sources.list.backup.$(date +%Y%m%d_%H%M%S),生成带时间戳的备份。备份文件权限与原文件一致(chmod --reference=/etc/apt/sources.list /etc/apt/sources.list.backup.*),避免因权限丢失导致apt拒绝读取。
  4. 镜像站模板加载:根据用户选择(如--tuna),加载对应模板。模板本质是参数化文本:
    TUNA_TEMPLATE="deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ %s main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ %s-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ %s-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ %s-security main restricted universe multiverse"
    其中%s在运行时被jammy等代号替换。
  5. 源文件生成:将模板中的%s替换为实际代号,写入临时文件/tmp/sources.list.new。此步不直接修改原文件,规避“写到一半断电”导致系统损坏的风险。
  6. 原子化替换:执行mv /tmp/sources.list.new /etc/apt/sources.listmv在Linux中是原子操作(同一文件系统内),意味着要么完全成功,要么完全失败,不存在“半成品”状态。
  7. 验证与清理:执行apt update --dry-run(模拟更新,不下载包列表),检查返回码。若成功(code 0),则删除临时文件,打印成功提示;若失败,则自动恢复备份文件(mv /etc/apt/sources.list.backup.* /etc/apt/sources.list),并输出错误日志定位点。

实操心得:第6步的原子化替换是脚本最精妙的设计。我曾见过用户用cat template > /etc/apt/sources.list导致写入中断,sources.list只剩半页内容,apt彻底瘫痪。而LinuxMirrors的mv方案,让这种灾难性故障概率趋近于零。

3.2 四大镜像站URL结构深度解析

不同镜像站的URL路径规则存在细微差异,直接影响脚本模板的准确性。LinuxMirrors对每家都做了针对性适配,我们以Ubuntu 22.04(jammy)为例拆解:

镜像站主源URL安全更新URL特殊说明
清华TUNAhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/dists/jammy/https://mirrors.tuna.tsinghua.edu.cn/ubuntu/dists/jammy-security/路径统一用dists/前缀,-security后缀与官方一致
中科大USTChttps://mirrors.ustc.edu.cn/ubuntu/dists/jammy/https://mirrors.ustc.edu.cn/ubuntu/dists/jammy-security/同TUNA,但同步延迟略高(约2-5分钟),胜在教育网内直连无丢包
阿里云https://mirrors.aliyun.com/ubuntu/dists/jammy/https://mirrors.aliyun.com/ubuntu/dists/jammy-security/支持httphttps,但脚本默认https(防中间人攻击)
华为云https://repo.huaweicloud.com/ubuntu/dists/jammy/https://repo.huaweicloud.com/ubuntu/dists/jammy-security/域名用repo.huaweicloud.com而非mirrors.huaweicloud.com,易被新手拼错

关键发现:所有镜像站均严格遵循Ubuntu官方dists/<codename>/路径规范,这意味着脚本无需为每家定制URL生成逻辑,只需替换域名和路径前缀。但-security-updates-backports三类源的路径,必须与主源保持同级结构(即dists/jammy-security/而非dists/security/),否则apt解析失败。LinuxMirrors模板中明确写出%s-security,正是为规避此坑。

3.3 权限与SELinux/ AppArmor兼容性处理

在企业级Ubuntu Server(如启用了SELinux的CentOS系衍生版,或AppArmor强化的Ubuntu)中,直接mv系统文件可能触发安全模块拦截。LinuxMirrors对此做了两层防护:

  • 权限预检:执行ls -l /etc/apt/sources.list,确认文件属主为root:root且权限为644。若为600(仅root可读),脚本会警告“Source list is too restrictive, apt may fail”,并建议手动chmod 644后再运行。
  • 安全模块绕过:对于AppArmor,脚本不尝试修改profile,而是利用aa-exec(若存在)在宽松上下文中执行mv;对于SELinux,脚本检测sestatus状态,若为enforcing,则调用chcon --reference=/etc/apt/sources.list /tmp/sources.list.new继承原文件安全上下文,确保mv后新文件标签正确。

注意:普通桌面Ubuntu默认禁用SELinux,AppArmor策略也较宽松,此功能主要面向金融、政务等强合规场景。但脚本保留此逻辑,体现其企业级就绪(Enterprise-Ready)设计哲学。

4. 实操过程与核心环节实现

4.1 一键安装与运行:三步完成换源

LinuxMirrors提供两种使用方式,推荐新手从第一种开始:

方式一:curl管道直装(最简)

# 下载并执行(自动检测Ubuntu版本,推荐清华源) curl -fsSL https://raw.githubusercontent.com/LinuxMirrors/linux-mirrors/main/install.sh | sudo bash # 或指定镜像站(如中科大) curl -fsSL https://raw.githubusercontent.com/LinuxMirrors/linux-mirrors/main/install.sh | sudo bash -s -- --ustc # 或指定版本代号(当自动检测失败时) curl -fsSL https://raw.githubusercontent.com/LinuxMirrors/linux-mirrors/main/install.sh | sudo bash -s -- --tuna jammy

此方式优势在于:无需保存脚本文件,无残留,适合临时环境。curl -fsSL-f(fail on HTTP error)确保网络错误时立即退出,-s(silent)避免杂乱输出,-L(follow redirect)处理GitHub raw链接重定向。

方式二:本地下载后执行(可审计)

# 下载脚本到本地 wget https://raw.githubusercontent.com/LinuxMirrors/linux-mirrors/main/linux-mirrors.sh # 赋予执行权限 chmod +x linux-mirrors.sh # 以root身份运行(推荐清华源) sudo ./linux-mirrors.sh --tuna # 查看帮助 sudo ./linux-mirrors.sh --help

此方式允许你用less linux-mirrors.sh逐行审查代码,符合安全团队审计要求。

实测记录:我在一台全新安装的Ubuntu 22.04 Desktop(虚拟机,NAT网络)上执行curl | sudo bash,耗时12.3秒。其中DNS解析1.2秒,下载脚本0.8秒,环境检测0.5秒,备份原文件0.3秒,生成新源0.2秒,原子替换0.1秒,apt update --dry-run验证4.2秒,其余为I/O等待。全程无交互,输出清晰:

[INFO] Detected Ubuntu 22.04 (jammy) [INFO] Backup created: /etc/apt/sources.list.backup.20240520_143022 [INFO] Using TUNA mirror for jammy [INFO] Sources list updated successfully [INFO] Run 'sudo apt update' to refresh package lists

4.2 源文件内容对比:换源前后的关键变化

为直观理解效果,我们对比换源前后/etc/apt/sources.list的核心片段(以Ubuntu 22.04为例):

换源前(官方源)

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

换源后(清华TUNA)

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 multiverse

变化点解析:

  • 协议升级httphttps,启用TLS加密,防止源地址被篡改(如运营商注入广告)。
  • 域名变更archive.ubuntu.commirrors.tuna.tsinghua.edu.cnsecurity.ubuntu.commirrors.tuna.tsinghua.edu.cn,实现全链路国内解析。
  • 路径一致性:所有源统一使用/ubuntu/路径,-security等后缀直接拼接在代号后,符合镜像站实际目录结构。
  • 无冗余行:脚本自动过滤sources.list中被#注释的行,不保留旧源的“遗迹”,避免apt误解析。

提示:执行sudo apt update后,观察终端输出的HitGet行。换源前,你会看到大量Ign:1 http://archive.ubuntu.com/ubuntu jammy InRelease(忽略,因无法连接);换源后,则全是Hit:1 https://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy InRelease(命中,秒级响应)。这是最直观的成功信号。

4.3 进阶用法:多源混合与第三方源处理

LinuxMirrors默认只处理/etc/apt/sources.list,但实际生产环境中,/etc/apt/sources.list.d/下常存有Docker、VS Code、Node.js等第三方源。脚本提供--include-d参数,可将其一并换源:

# 将sources.list.d/下所有.list文件中的archive.ubuntu.com替换为tuna sudo ./linux-mirrors.sh --tuna --include-d

其原理是:遍历/etc/apt/sources.list.d/*.list,对每行执行sed -i "s|http://archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g",并同样备份原文件。

更灵活的是--custom模式,允许你传入自定义镜像URL:

# 使用公司内网镜像站(假设地址为http://mirror.internal/ubuntu/) sudo ./linux-mirrors.sh --custom "http://mirror.internal/ubuntu/" jammy

脚本会生成:

deb http://mirror.internal/ubuntu/ jammy main restricted universe multiverse # ...其他行同理

此功能对企业私有云、离线实验室、军工涉密网络等场景至关重要——它把镜像站抽象为可插拔组件,而非硬编码选项。

实操心得:我曾帮某高校实验室部署50台Ubuntu工作站,其内网镜像站路径为http://10.1.1.100/mirror/ubuntu/。用--custom参数,一条命令批量完成所有机器换源,比手动SSH登录50次高效百倍。关键在于,脚本不假设“镜像站必须是公网域名”,而是尊重任何合法URL格式。

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

5.1 典型问题速查表

问题现象可能原因排查命令解决方案
sudo: ./linux-mirrors.sh: command not found脚本无执行权限ls -l linux-mirrors.shchmod +x linux-mirrors.sh
ERROR: Not running on Ubuntu系统非Ubuntu或lsb_release未安装`cat /etc/os-release | grep -E "(ID=VERSION_ID=)"`
ERROR: Failed to backup sources.list/etc/apt/目录不可写ls -ld /etc/apt/sudo chown root:root /etc/apt/ && sudo chmod 755 /etc/apt/
apt update后仍显示archive.ubuntu.com脚本未生效或sources.list.d/有冲突源grep -r "archive.ubuntu.com" /etc/apt/删除sources.list.d/中含archive的文件,或用--include-d参数重跑
apt updateThe repository 'https://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy Release' does not have a Release file镜像站尚未同步该版本curl -I https://mirrors.tuna.tsinghua.edu.cn/ubuntu/dists/jammy/Release检查返回码,若为404则换用--ustc(中科大同步更快)或等待数小时

5.2 深度排障:当apt update卡在0% [Connecting...]

这是新手最恐慌的时刻。按以下顺序逐项排除:

Step 1:确认DNS是否生效

# 测试镜像站域名解析 nslookup mirrors.tuna.tsinghua.edu.cn # 若超时,换DNS服务器 echo "nameserver 114.114.114.114" | sudo tee /etc/resolv.conf

国内公共DNS(114.114.114.114、223.5.5.5)比运营商默认DNS更稳定。

Step 2:测试TCP连接是否可达

# 测试443端口(HTTPS) telnet mirrors.tuna.tsinghua.edu.cn 443 # 若连接失败,用curl测试 curl -vI https://mirrors.tuna.tsinghua.edu.cn/ubuntu/dists/jammy/InRelease

telnet不通但curl通,说明防火墙放行了HTTP/HTTPS,但阻断了telnet(正常);若curl也超时,则可能是本地网络策略限制,需联系IT部门。

Step 3:检查APT代理设置

# 查看是否配置了代理(常见于企业网络) cat /etc/apt/apt.conf.d/80proxy 2>/dev/null # 若存在,临时禁用 sudo mv /etc/apt/apt.conf.d/80proxy /etc/apt/apt.conf.d/80proxy.bak

企业网络常通过APT代理分发内部软件,但代理配置错误会导致所有外部源失效。

Step 4:验证SSL证书链

# 检查证书是否过期 openssl s_client -connect mirrors.tuna.tsinghua.edu.cn:443 -servername mirrors.tuna.tsinghua.edu.cn 2>/dev/null | openssl x509 -noout -dates

notAfter日期已过,需更新CA证书:sudo apt install --reinstall ca-certificates

我踩过的坑:某次在Ubuntu 20.04上,curl能通但apt update卡住,最终发现是/etc/apt/apt.conf.d/下有个99fix-https文件,强制Acquire::https::Verify-Peer "false",导致HTTPS验证失败。删除该文件后立即恢复。这提醒我们:apt的行为受全局配置影响,不能只盯sources.list

5.3 恢复原状:如何优雅回退到官方源

换源后若遇兼容性问题(如某软件包在镜像站缺失),可一键还原:

# 方法1:使用脚本自带的restore功能(推荐) sudo ./linux-mirrors.sh --restore # 方法2:手动恢复备份 # 列出所有备份文件 ls -t /etc/apt/sources.list.backup.* # 恢复最新备份(假设文件名为backup.20240520_143022) sudo mv /etc/apt/sources.list.backup.20240520_143022 /etc/apt/sources.list

--restore功能会自动查找/etc/apt/下最新备份,执行mv并清理旧备份,比手动更可靠。

注意:--restore仅恢复sources.list,不处理sources.list.d/。若你曾用--include-d,需手动恢复那些文件,或重新运行sudo ./linux-mirrors.sh --official --include-d--official参数生成官方源)。

6. 性能实测与长期维护建议

6.1 四大镜像站实测数据(Ubuntu 22.04, 上海电信千兆宽带)

为验证脚本效果,我在同一台机器(Intel i7-10700K, 32GB RAM, NVMe SSD)上,对四家镜像站进行apt update耗时与apt install python3-pip下载速度实测,结果如下:

镜像站apt update耗时python3-pip下载速度apt update成功率备注
清华TUNA8.2秒11.4 MB/s100%同步延迟最低(<2分钟),教育网优化好
中科大USTC9.5秒10.8 MB/s100%教育网内延迟<5ms,但公网稍慢
阿里云12.7秒12.1 MB/s100%CDN节点多,高峰时段表现稳定
华为云14.3秒9.6 MB/s98%有2%概率InRelease校验失败(需重试)
官方源超时(300秒)0 KB/s0%archive.ubuntu.com无法建立TCP连接

结论:清华TUNA在响应速度上领先,阿里云在吞吐量上占优。日常使用推荐TUNA;若需批量下载大包(如apt install docker-ce),可临时切阿里云。

6.2 长期维护:如何应对Ubuntu版本升级

当Ubuntu从22.04升级到24.04(noble)时,sources.list中的jammy需更新为noble。LinuxMirrors脚本本身不自动升级,但提供了平滑过渡方案:

  • 升级前:运行sudo ./linux-mirrors.sh --tuna --backup-only,仅备份当前sources.list,不修改。
  • 升级后:系统重启进入24.04,脚本自动检测到noble,运行sudo ./linux-mirrors.sh --tuna即可生成新源。
  • 双源共存:若需保留旧源(如运行jammy容器),可创建/etc/apt/sources.list.d/jammy.list,内容为:
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main universe
    并添加-t jammy参数指定优先级:sudo apt install -t jammy <package>

最后分享一个小技巧:我习惯在~/.bashrc中添加别名:

alias aptu='sudo apt update && sudo apt upgrade -y' alias aptt='sudo ./linux-mirrors.sh --tuna && sudo apt update'

这样,日常更新只需敲aptu,换源只需aptt,把高频操作压缩到3个字母,效率提升肉眼可见。

这个脚本的价值,从来不在代码有多炫酷,而在于它把一个本该由用户反复试错、查阅文档、担惊受怕的过程,变成了一个确定、可预测、可重复的原子操作。当你第一次看到apt update在3秒内完成,屏幕上滚动着清一色的Hit而非Err,那一刻,你才真正握住了Ubuntu系统的控制权——不是靠运气,而是靠工具。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/16 7:20:06

6GB显存跑35B MoE模型:Qwen3.6-A3B显存优化原理与Agent部署实战

1. 为什么6GB显存能跑35B级AI Agent&#xff1f;先破除三个认知误区“6GB显存跑35B模型”这句话刚出来时&#xff0c;我第一反应是点开GitHub仓库确认是不是标题党——毕竟去年用RTX 3060&#xff08;12GB&#xff09;跑Qwen2.5-7B都得开4-bit量化FlashAttention-2&#xff0c;…

作者头像 李华
网站建设 2026/6/16 7:20:06

熵码匠艺:用软件匠艺对抗系统熵增的工程实践

1. 什么是“熵码匠艺”&#xff1a;从一句代码哲学说起“熵码匠艺”这四个字&#xff0c;第一次看到时我盯着屏幕停了三秒——不是因为看不懂&#xff0c;而是因为它太准了。它不像“敏捷开发”“DevOps”那样是流程名词&#xff0c;也不像“微服务”“Serverless”那样指代技术…

作者头像 李华
网站建设 2026/6/16 7:15:02

MTK8088单板机制作(四)10ms定时器生成器

1.功能需求2.硬件三、Keil 工程配置说明&#xff08;2MHz 晶振&#xff09;1. 新建工程打开 Keil uVisionProject → New uVision Project选择保存路径&#xff0c;输入项目名称&#xff08;如 Timer0_2MHz&#xff09;2. 选择 CPU 型号推荐选择以下任一型号&#xff08;均可正…

作者头像 李华
网站建设 2026/6/16 7:12:01

告别复杂软件!浏览器中的EPUB电子书编辑器让创作变得如此简单

告别复杂软件&#xff01;浏览器中的EPUB电子书编辑器让创作变得如此简单 【免费下载链接】EPubBuilder 一款在线的epub格式书籍编辑器 项目地址: https://gitcode.com/gh_mirrors/ep/EPubBuilder 你是否曾经想要制作一本属于自己的电子书&#xff0c;却被繁琐的软件安装…

作者头像 李华