yum与apt-get的区别:Linux包管理工具全面对比
在Linux的世界中,系统管理主要分为两大流派:RedHat家族(包括Redhat、Centos、Fedora等)与Debian家族(涵盖Debian、Ubuntu等派生版本)。理清这两大派系在软件包管理上的差异,基本上就掌握了Linux软件安装与维护的核心逻辑。
RedHat 系列
RedHat家族采用rpm作为软件包格式,底层操作命令为rpm -参数。其高级包管理工具yum堪称rpm的“智能管家”,能自动处理依赖关系。此外,tar包这类通用压缩格式同样被支持,但使用方式有所不同。
Debian系列
Debian家族则使用deb格式,底层命令为dpkg -参数,其高级包管理工具是广为人知的apt-get。同样,tar包也能在Debian系统中使用。
这里有必要澄清一个概念——tar。tar本质上是一种归档打包工具,它只负责将多个文件合并成一个文件,并不关心文件内容。因此,遇到tar包时,需要先解压再处理。
rpm则不同。它类似于Windows中的安装程序,但更出色之处在于能自动处理软件包之间的依赖关系,省去手动安装缺失库的繁琐步骤。不过,rpm多为预编译的二进制文件,可能针对特定CPU架构或发行版,迁移到其他机器时可能无法运行。
tar包通常包含源码及编译脚本,用户可以在自己的环境中随时编译,具有很好的通用性。简言之,如果开发者不打算开源,发布rpm包是主流选择;而如果源码是开放的,使用tar包分发让用户自行编译配置,反而更加灵活。
具体操作上,tar源码包一般解压后执行经典三部曲:./configure、make、make install。而rpm包可直接通过rpm命令安装或卸载,最大优势在于自动解决依赖问题,无需用户手动操心。
RedHat 系列:rpm 包的日常操作
以下列举一些常见的rpm命令,虽略显“古老”,但日常运维中仍有用武之地。
安装: rpm -ivh *.rpm
卸载: rpm -e packagename
查看是否安装: rpm -q nginx
升级: rpm -Uvh xxx
查询相关:
查询所有已安装包: rpm -qa
查询某个包是否安装: rpm -qa | grep xxx
查看包详细信息: rpm -qi xxx
查看安装路径: rpm -ql xxx
查看配置文件: rpm -qc xxx
查询某个文件属于哪个rpm包: rpm -qf /etc/yum.conf
查看未安装的rpm包信息: rpm -qpi xxx
另外,如果遇到src.rpm这种源代码格式的rpm包,处理方式略有不同。需要先编译:
rpm -rebuild *.src.rpm
然后进入生成目录: cd /usr/src/dist/RPMS
再安装生成后的二进制包: rpm -ivh *.rpm
Debian 系列: dpkg 的基本功
dpkg是Debian家族的底层包管理器,最基础的使用方法如下:
1. 安装deb包: dpkg -i
2. 查看deb包内容: dpkg -c
3. 提取deb包的元信息: dpkg -I
4. 移除已安装的包: dpkg -r
5. 完全清除包(包括配置文件): dpkg -P
6. 列出已安装包的所有文件: dpkg -L
7. 查看已安装包的详细信息: dpkg -s
8. 重新配置已经安装的包: dpkg-reconfigure
生产力工具:yum 和 apt-get
手动使用rpm或dpkg偶尔还行,但在批量管理或频繁更新时,必须借助yum和apt-get这类高级包管理工具,它们能显著提升运维效率。
1. 先讲 RedHat 的 yum
yum的配置文件位于/etc/yum.conf。其核心价值在于自动解决rpm包间的依赖关系,并支持同时配置多个软件源,简单可靠且能保持与RPM数据库的一致性。
常用命令:
安装软件: yum install gcc
更新系统或包: yum update
删除软件: yum remove xxx
清理缓存: yum clean all
搜索包: yum search xxx
列出所有包: yum list
查看包信息: yum info xxx
一组常见的批量安装示例:
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel ...
其他常用子命令:
检查可更新包:yum check-update
更新内核:yum update kernel
大规模版本升级(包含淘汰包):yum upgrade
搜索包含特定文件的包:yum provides realplay
以组为单位操作:yum groupinstall、yum grouplist、yum groupremove
关于源的选择:
可以安装yum-fastestmirror插件,自动选择最快的镜像源,避免因慢速镜像拖慢下载速度。
2. 再讲 Ubuntu 的 apt-get
apt-get的源配置文件位于/etc/apt/sources.list。日常使用中,除了基础命令,还推荐功能更强大的前端工具aptitude。
通过sudo apt-get install aptitude安装后,可直接执行sudo aptitude进入交互式管理界面。
常用aptitude命令同样直观:
update、upgrade、dist-upgrade、install、remove、purge、search、show、clean、autoclean。整体风格与yum一致,但apt-get在依赖处理和软件包查找方面历史积累更为深厚。
常用的APT命令参数:
搜索包:apt-cache search package
查看包详情:apt-cache show package
安装包:sudo apt-get install package
重新安装:sudo apt-get install package --reinstall
修复依赖:sudo apt-get -f install
删除包:sudo apt-get remove package
完全删除(含配置):sudo apt-get remove --purge package
更新源:sudo apt-get update
升级已安装的包:sudo apt-get upgrade
升级整个发行版:sudo apt-get dist-upgrade
查看依赖关系:apt-cache depends package
查看被依赖关系:apt-cache rdepends package
安装编译依赖环境:sudo apt-get build-dep package
下载源码:apt-get source package
清理无用的缓存包:sudo apt-get clean && sudo apt-get autoclean
检查依赖完整性:sudo apt-get check
最后做个简明总结,为日常选择提供参考。如果环境是CentOS/RedHat,包管理以yum为核心;如果环境是Ubuntu/Debian,则apt-get是最佳伙伴。tar作为源头活水,提供了编译自由;rpm实现即装即用,更加省心。而yum与apt-get则让这一切变得高效而优雅,真正提升了Linux系统管理的生产力。
