apt-get 与 yum 命令对照表:5 个场景下的 Ubuntu/CentOS 包管理等效操作
apt-get 与 yum 命令对照手册:跨平台运维的5大核心场景实战指南
当你在CentOS的舒适区里游刃有余地使用yum install时,突然切换到Ubuntu系统面对apt-get的陌生语法,是否感到一阵手忙脚乱?这份对照手册将为你打通两大Linux包管理体系的任督二脉。我们不是简单罗列命令,而是从设计哲学差异和实战场景出发,帮你建立深层认知框架。
1. 系统更新:不同的哲学,相同的目标
在开始具体操作前,有必要理解两种工具背后的理念差异。yum(Yellowdog Updater Modified)源自Red Hat体系,采用Python编写,其依赖解析算法以事务性操作著称;而apt(Advanced Package Tool)则是Debian家族的明星,用C++实现,以高效的依赖处理和清晰的进度显示见长。
1.1 更新软件源索引
# Ubuntu/Debian (apt) sudo apt update # 添加 -qq 参数可抑制非关键输出,适合脚本环境 sudo apt -qq update # CentOS/RHEL (yum) sudo yum check-update # 强制刷新缓存(相当于apt update + apt clean) sudo yum clean all && sudo yum makecache关键差异点:
- apt将元数据存储在
/var/lib/apt/lists/,而yum使用/var/cache/yum/ - apt默认显示彩色进度条,yum需安装
yum-plugin-ps获得类似体验
1.2 升级已安装的软件包
# Ubuntu/Debian sudo apt upgrade # 标准升级(不处理依赖变更) sudo apt full-upgrade # 激进升级(可能删除冲突包) # CentOS/RHEL sudo yum update # 等效于apt upgrade sudo yum --obsoletes update # 等效于apt full-upgrade注意:生产环境中建议先测试升级方案。在Ubuntu上可使用
apt-listchanges预览变更,CentOS则可通过yum history查看过往操作记录。
2. 软件安装:从基础到高级技巧
2.1 基础安装流程对比
# 安装Nginx(Ubuntu) sudo apt install nginx # 安装时自动回答yes sudo apt install -y nginx # 安装Nginx(CentOS) sudo yum install nginx # 启用EPEL仓库后再安装(常见于RHEL) sudo yum install epel-release && sudo yum install nginx版本选择策略差异:
- apt默认安装
stable分支的最新版本 - yum会优先考虑与当前系统版本匹配的软件包
2.2 安装特定版本软件
# Ubuntu中安装指定版本的Node.js sudo apt install nodejs=12.22.9~dfsg-1ubuntu3 # CentOS中启用SCL仓库安装新版Python sudo yum install centos-release-scl sudo yum install rh-python38 scl enable rh-python38 bash版本查询命令对比:
| 操作 | apt命令 | yum命令 |
|---|---|---|
| 查看可用版本 | apt-cache policy <包名> | yum --showduplicates list <包名> |
| 查看已安装版本 | apt list --installed | yum list installed |
2.3 源码编译与二进制包混合管理
当官方仓库没有所需版本时,两种系统有不同的解决方案:
# Ubuntu方案:添加PPA仓库 sudo add-apt-repository ppa:deadsnakes/ppa sudo apt install python3.9 # CentOS方案:使用RPM包 wget https://example.com/package.rpm sudo yum localinstall package.rpm3. 软件搜索与信息查询
3.1 基础搜索功能
# Ubuntu搜索包含"redis"的包 apt search redis # 显示详细描述 apt show redis-server # CentOS搜索 yum search redis # 查看仓库中的详细信息 yum info redis3.2 高级查询技巧
依赖关系分析:
# 查看nginx的依赖树(Ubuntu) apt-cache depends nginx # 查看反向依赖(哪些包依赖nginx) apt-cache rdepends nginx # CentOS中的等效操作 repoquery --requires nginx repoquery --whatrequires nginx文件级查询:
# 查找提供/bin/ls命令的包(Ubuntu) apt-file search /bin/ls # 需要先安装并更新数据库 sudo apt install apt-file sudo apt-file update # CentOS等效命令 yum provides /bin/ls4. 软件移除与系统清理
4.1 卸载软件的不同策略
# Ubuntu标准卸载(保留配置文件) sudo apt remove nginx # 彻底清除(包括配置) sudo apt purge nginx # CentOS标准卸载 sudo yum remove nginx # 清除无用依赖 sudo yum autoremove4.2 清理缓存与旧版本
# Ubuntu清理 sudo apt clean # 删除所有下载的deb包 sudo apt autoclean # 只删除过期的包 # CentOS清理 sudo yum clean all # 彻底清理 sudo package-cleanup --oldkernels # 专用于清理旧内核空间回收效果对比(以Nginx安装后为例):
| 操作 | Ubuntu回收空间 | CentOS回收空间 |
|---|---|---|
| 基础清理 | ~50MB | ~30MB |
| 深度清理 | ~120MB | ~80MB |
5. 仓库管理:扩展软件生态
5.1 第三方仓库管理
# Ubuntu添加MongoDB官方仓库 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 656408E390CFB1F5 echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -sc)/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list # CentOS添加ELRepo仓库 sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org sudo yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm5.2 仓库优先级管理
# Ubuntu设置Pin-Priority # 在/etc/apt/preferences.d/中创建优先级文件 Package: * Pin: release a=stable Pin-Priority: 900 # CentOS使用yum-plugin-priorities sudo yum install yum-plugin-priorities # 在.repo文件中添加priority=N常见问题解决方案:
签名验证失败:
# Ubuntu sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [KEY] # CentOS sudo rpm --import https://example.com/RPM-GPG-KEY仓库元数据损坏:
# Ubuntu sudo rm -rf /var/lib/apt/lists/* sudo apt update # CentOS sudo yum clean all sudo yum makecache
掌握这些核心场景的对照操作后,你会发现虽然命令语法不同,但解决问题的思路是相通的。真正的系统管理高手,应该能够超越具体工具的限制,理解包管理系统背后的设计哲学。当你下次面对陌生的Linux发行版时,这份对照手册将成为你快速适应新环境的秘密武器。
