058 从 Centos 切换到 Ubuntu

058 从 Centos 切换到 Ubuntu
小米里的大麦从 Centos 切换到 Ubuntu
1. 前言
Centos 是一个不错的发行版,但是它的各个版本都已经停止维护了。CentOS 7 于 2024 年 6 月 30 日正式停止支持,CentOS 8 更是早在 2021 年 12 月 31 日就停止维护了。而且后续学习中不支持部分软件版本,从长远使用、学习、生态等多方面考虑,将其切换到 Ubuntu 是不错之举。
其实从一开始就直接接触 Ubuntu 也是不错的选择,但这些都是后话了,各有优劣吧。从 Centos 切换到 Ubuntu 的朋友可以体验到不同系统的优劣,直接使用 Ubuntu 倒是可以省去一些小麻烦,但归根结底,二者基本可以做到无缝互通,命令大差不差,遇到不一样的简单查一下就行了。下面开始教学如何从 Centos 切换到 Ubuntu,基本上比较简单,少部分涉及 Centos 的一点基础。
2. 系统切换
到自己的云服务器厂商后台找到切换镜像,选择 Ubuntu 22.04 版本进行安装,几分钟后就会完成,注意完成后要重新设置密码!
重要提醒:切换系统前一定要备份好重要数据,系统切换会清空所有数据!
3. 使用 Xshell 进行连接
这里的操作和连接 Centos 一模一样,直接输入公网 IP 和对应的账密就能进行登录。
1. 创建普通账户
同样的,我们还是创建一个普通账户:
1 | adduser 用户名 |
紧接着会让我们设置和确认密码,正常输入就行。完了后就会发现和 Centos 的区别:它会让我们设置该账户的信息,比如全名、房间号码、工作电话、家庭电话等。为了方便可以一路回车表示默认,个人使用会比较方便快捷,当然,如果你想要进行设置也行。
2. 赋予 sudo 权限
关键步骤:创建用户后需要赋予 sudo 权限,否则无法执行管理员命令,这里有两个方法:
方法一: 和 Centos 一样,使用 root 账户执行命令:vim /etc/sudoers,按下 i 键进入插入模式,找到大约第 100 行左右的位置(附近会有 root ALL=(ALL) ALL 的字眼),在其下方添加以下内容:username ALL=(ALL) ALL。
username:替换为你要授权的账户名。ALL=(ALL):允许用户以任何用户身份执行命令。ALL:允许执行所有命令。
按 Esc 键返回到默认模式,然后输入 :wq! 强制保存并退出。然后就可以验证 sudo 权限了。
方法二(更推荐): 先切换到 root 账号,在 Ubuntu 里,加入 sudo 组就是最安全的方式,把某用户加入 sudo 组执行:
1 | usermod -aG sudo 用户名 |
这样新用户就可以使用 sudo 命令来执行需要管理员权限的操作了。
4. 软件包管理器详解
在 Ubuntu 22.04 中已经没有 yum,它属于 RHEL/CentOS 系列。Ubuntu 默认的软件包管理器是 APT (Advanced Package Tool)。等价关系大概是:
- CentOS/RHEL:
yum/dnf - Ubuntu/Debian:
apt/apt-get
1. 等价命令对比
| CentOS/RHEL (yum/dnf) | Ubuntu/Debian (apt) | 说明 |
|---|---|---|
| yum update | apt update | 更新软件包列表 |
| yum upgrade | apt upgrade | 升级已安装的软件 |
| yum install 包名 | apt install 包名 | 安装软件包 |
| yum remove 包名 | apt remove 包名 | 卸载软件包 |
| yum search 关键词 | apt search 关键词 | 搜索软件包 |
| yum info 包名 | apt show 包名 | 显示软件包详细信息 |
2. 常用 APT 命令
1 | sudo apt update # 更新软件包列表 |
3. 更新升级
1 | sudo apt update # 更新软件包列表 |
这个过程可能在 10 多分钟作用,耐心等待……可能会出现下面的情况:
这是 Ubuntu 在升级 openssh-server 包时的提示,意思是:之前修改过 /etc/ssh/sshd_config 配置文件(比如改过端口、sudo 权限等),而现在升级的软件包带来了一份新的默认配置。系统不知道该用哪个,所以给出选择,选项含义:
- install the package maintainer’s version → 用新版本覆盖掉你现在的配置(会丢失你自己改的设置)。
- keep the local version currently installed → 保留你现在的配置(推荐,大部分情况下选这个)。
- show the differences… → 查看差异,方便你决定。
- do a 3-way merge… → 尝试三方合并。
- start a new shell… → 打开一个 shell 手动处理。
按照自己情况来,如果选择覆盖,之前的解放的 sudo 要重新配置。
直接 ok 就行。 这是 Ubuntu 系统提示有内核更新待处理的界面。系统当前运行的内核版本是 5.15.0 - 138 - generic,而有更新的内核版本 5.15.0 - 157 - generic 可用。提示说明系统不会自动重启来加载新内核,建议你考虑手动重启系统,这样新的内核就能被加载运行,可能会带来性能优化、 bug 修复等好处。
直接保持默认选中的状态,然后选择 <Ok> 即可。 当你看到这个界面时,是系统在询问哪些服务需要重启,因为有一些守护进程使用了过时的库,(前面带 [*])通常是系统推荐需要重启的关键服务,更新后需要重启相关服务来应用更改。这些服务依赖的库更新后,重启它们能确保服务使用新库正常运行。
为了让新的内核和系统更新完全生效,建议你重启系统:sudo reboot 或云服务器厂商后台重启。
5. 安装和配置 GCC 编译器
1. 安装较新的 GCC 和 G++(推荐版本 9-12)
Ubuntu 22.04 默认自带的 GCC 版本是 11.x。如果你需要更高版本(例如 GCC 12 或 13),可以通过官方 ppa:ubuntu-toolchain-r/test 获得,这里我们选择默认的就行。
1 | # 安装 PPA 源 |
安装完成后可以用以下命令查看版本:
1 | gcc --version |
2. 安装指定版本的 GCC(可选)
如果你需要安装 GCC 12 或 13:
1 | # 安装 GCC 12 |
3. 配置 GCC 版本切换(可选)
如果系统中安装了多个版本的 GCC,可以使用 update-alternatives 来管理:
1 | # 设置 GCC 12 为默认版本 |
切换 GCC 版本
1 | sudo update-alternatives --config gcc |
输入对应的编号即可切换到相应的 GCC 版本。
6. 其他工具的安装
在 CentOS 中,使用
yum install或dnf install安装软件时,最后会显示一行醒目的:Complete!,这行文字就像一个“成功印章”,告诉你:“安装顺利完成,一切 OK!”Ubuntu 不会显示Complete!,在 Ubuntu 的世界里,安静,就是最好的赞美!没有报错(Error)就是成功!
1. 安装 tree 命令
1 | sudo apt install tree -y |
安装完成后测试:tree --version。
2. 安装 Git
1 | sudo apt install git -y # 通常是 2.34.x(Ubuntu 22.04 默认) |
3. 安装 lrzsz 工具
1 | sudo apt install lrzsz -y |
安装后即可使用:
rz:从本地上传文件到服务器。sz 文件名:从服务器下载文件到本地。
4. 安装 htop 命令
htop 是交互式的进程监控工具,比 top 更直观,支持上下滚动查看进程树,命令:htop,和 top 差不多,也是按 q 退出。
1 | sudo apt install htop -y |
5. 安装 Core Dump 调试支持(debuginfo 替代)
在 Ubuntu 中 没有 debuginfo-install 命令,对应的是 -dbg 或 -dbgsym 包。Ubuntu 的 libc6-dbg 是 glibc 的调试信息包,libgcc-11-dev 对应 GCC 的调试支持(你可以根据 GCC 版本调整,如 libgcc-12-dev)。用于调试程序 Core Dump 时提供符号信息,让 gdb 能正确显示函数调用栈。
1 | sudo apt install libc6-dbg libgcc-11-dev -y |
6. 安装 JsonCpp
JsonCpp 是 C++ 的 JSON 解析与序列化库,常用于网络通信、配置文件解析。
1 | sudo apt install libjsoncpp-dev -y |
7. 安装 telnet
telnet 用于测试网络连通性与端口开放状态(TCP 连接测试),可快速验证远程主机端口是否可访问。
1 | sudo apt install telnet -y |
基本语法:
1 | # telnet [主机名或IP地址] [端口号],比如: |
注意:如果省略端口号,默认连接远程主机的 23 端口(Telnet 服务默认端口)。退出 Telnet 连接: Telnet 交互界面中,按 Ctrl + ] 进入命令模式,然后输入 quit 退出。
8. 安装 iostat(sysstat 工具包)
iostat 用于监控 CPU 使用率 和 磁盘 I/O 性能,常用于性能分析。用命令 iostat 验证,如果输出 CPU 与磁盘统计信息,即表示安装成功。
1 | sudo apt install sysstat -y |
9. 使用 ifconfig 命令
从 Ubuntu 18.04 开始,ifconfig 已经不再默认安装,取而代之的是更强大的 ip 命令。如果更习惯 ifconfig,可以安装:
1 | sudo apt install net-tools |
安装完成后即可使用:ifconfig。
7. 使用 VS Code 连接主机开始开发
这里的操作和之前的一模一样,但是会存在一个问题:换了系统后,公网 IP 和配置没变,典型的效果是远程资源管理器中还显示旧的记录,新的连接一直失败。
解决方法:此时需要做一个操作:在 Windows 中来到 C:\Users\xxxxxxxx\.ssh 这个目录下,将最后 known_hosts 和 known_hosts.old 这 2 个文件删除,重新连接即可,等待 1-2 分钟,VS Code Server 就会完成,该目录下会自动生成新的密钥,我们又可以进行愉快的开发啦~
如果你使用的还是 1.85.1 版本的 VS Code 那就是照旧,但如果你使用的是 2025 年 9 月(版本 1.105),你就会惊奇的发现也可以正常连接!这对于我们老 CentOS 用户来说真是太妙啦!如今的 Ubuntu 不管是这个用户体验还是生态来说都要优于 CentOS,真体验到了什么叫 对开发者真友好……

















