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
2
3
4
5
6
usermod -aG sudo 用户名

# 可选验证:
groups 用户名
# 示例输出
用户名 : 用户名 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 updateapt update更新软件包列表
yum upgradeapt upgrade升级已安装的软件
yum install 包名apt install 包名安装软件包
yum remove 包名apt remove 包名卸载软件包
yum search 关键词apt search 关键词搜索软件包
yum info 包名apt show 包名显示软件包详细信息

2. 常用 APT 命令

1
2
3
4
5
6
7
sudo apt update						# 更新软件包列表
sudo apt upgrade -y # 升级已安装的软件
sudo apt install 软件包名称 -y # 安装软件包
sudo apt remove 软件包名称 -y # 卸载软件包
sudo apt purge 软件包名称 -y # 彻底卸载(包括配置文件)
apt search 关键词 # 搜索软件包
sudo apt clean # 清理缓存

3. 更新升级

1
2
sudo apt update        # 更新软件包列表
sudo apt upgrade -y # 升级已安装的软件

这个过程可能在 10 多分钟作用,耐心等待……可能会出现下面的情况:

PixPin_2025-10-05_18-28-09

这是 Ubuntu 在升级 openssh-server 包时的提示,意思是:之前修改过 /etc/ssh/sshd_config 配置文件(比如改过端口、sudo 权限等),而现在升级的软件包带来了一份新的默认配置。系统不知道该用哪个,所以给出选择,选项含义:

  1. install the package maintainer’s version → 用新版本覆盖掉你现在的配置(会丢失你自己改的设置)。
  2. keep the local version currently installed → 保留你现在的配置(推荐,大部分情况下选这个)。
  3. show the differences… → 查看差异,方便你决定。
  4. do a 3-way merge… → 尝试三方合并。
  5. start a new shell… → 打开一个 shell 手动处理。

按照自己情况来,如果选择覆盖,之前的解放的 sudo 要重新配置。

PixPin_2025-10-05_18-32-57

直接 ok 就行。 这是 Ubuntu 系统提示有内核更新待处理的界面。系统当前运行的内核版本是 5.15.0 - 138 - generic,而有更新的内核版本 5.15.0 - 157 - generic 可用。提示说明系统不会自动重启来加载新内核,建议你考虑手动重启系统,这样新的内核就能被加载运行,可能会带来性能优化、 bug 修复等好处。

PixPin_2025-10-05_18-33-15

直接保持默认选中的状态,然后选择 <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
2
3
4
5
6
# 安装 PPA 源
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y

# 可选
sudo apt update
sudo apt install gcc-13 g++-13 -y

安装完成后可以用以下命令查看版本:

1
2
3
4
5
6
7
8
9
10
11
12
13
gcc --version
g++ --version

# 示例输出:
gcc (Ubuntu 11.4.0-1ubuntu1~22.04.2) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

g++ (Ubuntu 11.4.0-1ubuntu1~22.04.2) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

2. 安装指定版本的 GCC(可选)

如果你需要安装 GCC 12 或 13:

1
2
3
4
5
6
7
# 安装 GCC 12
sudo apt install gcc-12 g++-12 -y

# 安装 GCC 13(需要添加 PPA 源)
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
sudo apt update
sudo apt install gcc-13 g++-13 -y

3. 配置 GCC 版本切换(可选)

如果系统中安装了多个版本的 GCC,可以使用 update-alternatives 来管理:

1
2
3
4
5
6
7
8
9
# 设置 GCC 12 为默认版本
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100 \
--slave /usr/bin/g++ g++ /usr/bin/g++-12 \
--slave /usr/bin/gcov gcov /usr/bin/gcov-12

# 设置 GCC 11 为备选版本
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 80 \
--slave /usr/bin/g++ g++ /usr/bin/g++-11 \
--slave /usr/bin/gcov gcov /usr/bin/gcov-11

切换 GCC 版本

1
sudo update-alternatives --config gcc

输入对应的编号即可切换到相应的 GCC 版本。

6. 其他工具的安装

在 CentOS 中,使用 yum installdnf install 安装软件时,最后会显示一行醒目的:Complete!,这行文字就像一个“成功印章”,告诉你:“安装顺利完成,一切 OK!”Ubuntu 不会显示 Complete!,在 Ubuntu 的世界里,安静,就是最好的赞美!没有报错(Error)就是成功!

1. 安装 tree 命令

1
sudo apt install tree -y

安装完成后测试:tree --version

2. 安装 Git

1
2
sudo apt install git -y		 # 通常是 2.34.x(Ubuntu 22.04 默认)
git --version # 版本验证,可能是 2.40+ 或更高

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
2
sudo apt install libc6-dbg libgcc-11-dev -y
dpkg -l | grep libc6-dbg # 验证:若出现 libc6-dbg,说明安装成功。

6. 安装 JsonCpp

JsonCpp 是 C++ 的 JSON 解析与序列化库,常用于网络通信、配置文件解析。

1
2
sudo apt install libjsoncpp-dev -y
dpkg -l | grep jsoncpp # 验证:若显示 libjsoncpp-dev,说明安装成功。

7. 安装 telnet

telnet 用于测试网络连通性与端口开放状态(TCP 连接测试),可快速验证远程主机端口是否可访问。

1
sudo apt install telnet -y

基本语法:

1
2
3
4
5
6
# telnet [主机名或IP地址] [端口号],比如:
telnet baidu.com 80
# 连通后的示例输出:
Trying 220.181.7.203...
Connected to baidu.com.
Escape character is '^]'.

注意:如果省略端口号,默认连接远程主机的 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_hostsknown_hosts.old 这 2 个文件删除,重新连接即可,等待 1-2 分钟,VS Code Server 就会完成,该目录下会自动生成新的密钥,我们又可以进行愉快的开发啦~

如果你使用的还是 1.85.1 版本的 VS Code 那就是照旧,但如果你使用的是 2025 年 9 月(版本 1.105),你就会惊奇的发现也可以正常连接!这对于我们老 CentOS 用户来说真是太妙啦!如今的 Ubuntu 不管是这个用户体验还是生态来说都要优于 CentOS,真体验到了什么叫 对开发者真友好……