🏆 本文收录于 《滚雪球学 Ubuntu》 专栏。
本专栏面向有一定计算机基础,但尚未系统学习 Linux / Ubuntu 的读者,采用“滚雪球式学习法”:先装好、再会用、再理解、再优化、再实战,带你从第一次进入 Ubuntu 桌面 / 终端开始,逐步掌握 Ubuntu 的日常使用、命令操作、软件安装、系统配置、开发环境搭建与服务器部署能力。
🎯适合人群:Linux 初学者、Ubuntu 新手、计算机专业学生、后端 / 运维 / 测试入门同学、想搭建 Linux 开发环境的开发者、准备学习服务器部署的同学,以及想从 Windows 过渡到 Ubuntu 工作流的用户。从“会打开终端”到“能管理系统”,从“复制命令”到“理解 Linux 思维”,这一次,我们不零散学,而是一路滚雪球!
🎉限时福利:当前专栏活动中,一次订阅,终身阅读,后续更新章节全部免费解锁👉 立即查看👈️
演示环境说明:
- 开发工具:Visual Studio Code / JetBrains 系列 IDE / Vim / Nano
- Ubuntu版本:Ubuntu 22.04 LTS / Ubuntu 24.04 LTS,推荐 Ubuntu 24.04 LTS
- Linux内核版本:Linux Kernel 6.x 或更高
- 终端环境:Bash / Zsh
- 包管理工具:APT / Snap / Flatpak
- 远程连接工具:OpenSSH / Windows Terminal / MobaXterm / Termius
- 虚拟化环境:VMware Workstation / VirtualBox / WSL2 / 云服务器
- 容器环境:Docker / Docker Compose
- 操作系统:Ubuntu Desktop / Ubuntu Server
全文目录:
- 一、前言:为什么版本差异值得专门学习
- 二、本文要解决什么问题
- 三、Ubuntu 的版本命名规则与 LTS 机制
- 3.1 Ubuntu 版本号的含义
- 3.2 LTS 的真实含义
- 3.3 LTS 版本的软件包策略
- 四、四个版本的整体对比概览
- 五、Linux 内核版本差异与影响
- 5.1 内核版本的实际意义
- 5.2 各版本内核详解
- 5.3 内核差异对实际使用的影响
- 六、桌面环境的变化历程(Desktop 版)
- 6.1 GNOME 版本演进
- 6.2 X11 与 Wayland 的切换历史
- 6.3 Snap 与 APT 软件安装方式的变化
- 七、系统初始化与 systemd 的演进
- 7.1 systemd 版本对照
- 7.2 systemd 日常使用的变化
- 7.3 旧的 service 命令:历史遗留问题
- 八、网络配置的演变:从 ifupdown 到 Netplan
- 8.1 Ubuntu 网络配置的历史演变
- 8.2 Netplan 配置在各版本中的变化
- 8.3 网卡命名规则的变化
- 九、软件包管理:APT 与软件源的变化
- 9.1 APT 版本的演进
- 9.2 分阶段更新机制(24.04 新特性)
- 9.3 软件源格式的变化
- 9.4 Ubuntu Pro 与 ESM 源
- 十、Python 版本的切换与影响
- 10.1 各版本默认 Python
- 10.2 pip 的变化
- 十一、OpenSSL 与安全组件版本差异
- 11.1 OpenSSL 的重大升级:从 1.1.1 到 3.0
- 11.2 安全策略加固(CIS Benchmark 支持)
- 十二、容器与虚拟化支持的演进
- 12.1 Docker 在各版本的支持情况
- 12.2 cgroup v2 的切换
- 12.3 Multipass 与 LXD 的变化
- 十三、案例一:在四个版本中统一查看系统环境信息
- 13.1 系统版本与基础信息
- 13.2 核心组件版本确认
- 13.3 硬件资源概览
- 13.4 网络环境检查
- 13.5 运行中的服务检查
- 十四、案例二:在不同版本中配置静态 IP(Netplan)
- 14.1 环境准备与背景
- 14.2 Ubuntu 20.04 的配置方式
- 14.3 Ubuntu 22.04 / 24.04 的配置方式
- 14.4 应用配置并验证
- 十五、案例三:跨版本部署 Nginx + Python + uWSGI 环境
- 15.1 部署架构说明
- 15.2 创建部署用户
- 15.3 安装依赖(跨版本差异处理)
- 15.4 配置 Python 虚拟环境
- 15.5 配置 systemd 服务
- 15.6 配置 Nginx 反向代理
- 15.7 配置防火墙
- 十六、Ubuntu 26.04 LTS 前瞻
- 16.1 预期的主要变化
- 16.2 从 24.04 到 26.04 的升级准备
- 十七、常见问题与踩坑总结
- Q1:我应该选哪个 Ubuntu 版本?
- Q2:Ubuntu 20.04 已经"死了"吗?
- Q3:为什么 22.04 上的 pip install 突然报 "externally-managed-environment" 错误?
- Q4:在 22.04 上用旧教程安装 Docker,为什么按照 20.04 的步骤会出错?
- Q5:从 20.04 升级到 22.04 后,Python 脚本报错 "No module named distutils",怎么解决?
- Q6:Nginx 在 24.04 上安装后版本是 1.24,但某些配置指令在 1.18 的文档里找不到,怎么办?
- Q7:在 22.04 上,修改了 /etc/resolv.conf 设置 DNS,但重启后就恢复了,为什么?
- Q8:我的服务器在 22.04 上运行良好,有必要升级到 24.04 吗?
- Q9:在 24.04 上运行某个 Docker 镜像失败,提示 cgroup 相关错误,怎么解决?
- Q10:在 22.04 之后,为什么 Firefox 启动慢了很多?
- Q11:如何在不重装系统的情况下从 22.04 升级到 24.04?
- Q12:OpenSSL 从 1.1.1 升级到 3.0 导致某些连接失败,如何排查?
- Q13:不同版本的 journalctl 用法有差异吗?
- 十八、最佳实践建议
- 18.1 版本选择策略
- 18.2 升级前的准备清单
- 18.3 Python 项目的跨版本兼容性实践
- 18.4 服务器配置的版本感知习惯
- 18.5 网络配置的版本感知
- 18.6 容器化部署的版本注意事项
- 十九、版本选择决策流程图
- 二十、完整操作流程回顾
- 完整操作命令回顾
- 二十一、总结与下一节预告
- 本篇文章学到了什么
- 你可能还需要深化的方向
- 下一节预告
- 🧧 学习福利 · 限时开放 🧧
- 🫵 Who am I?
一、前言:为什么版本差异值得专门学习
我第一次认真意识到"Ubuntu 版本差异"这件事的严重性,是在给一台生产服务器排查问题的时候。
那台服务器运行的是 Ubuntu 18.04,而我们的开发环境已经升级到了 22.04。两台机器上 Python 的默认版本不同,OpenSSL 版本不同,连某些系统调用的行为都有细微出入。结果就是一段在开发机上运行完全正常的 Python 脚本,跑到生产环境里就报 SSL 握手错误。排查了三个小时,最后发现根本原因就是 OpenSSL 的版本差异导致 TLS 握手参数不兼容。
这件事让我深刻体会到:版本差异不是可以忽略的细节,它直接影响你的软件能不能跑起来、服务能不能稳定运行、安全补丁有没有覆盖。
很多初学者在选择 Ubuntu 版本时是随机的——哪个教程用什么就跟着装什么。但随着学习的深入,你会越来越需要理解:
- 我现在用的这个版本,和最新版本有什么本质区别?
- 某个特性或者命令,是这个版本才有的,还是所有版本都有?
- 我应该选择 22.04 还是 24.04 来部署线上服务?
- 20.04 已经"老了",但它现在还能用吗?
这篇文章就是为了系统回答这些问题而写的。我会从内核、桌面、网络、软件包管理、Python、安全、容器等多个维度,逐一剖析 Ubuntu 20.04、22.04、24.04、26.04 这四个主要版本之间的差异,并给出实际使用中的选择建议。
二、本文要解决什么问题
在正式开始之前,