Linux系统中,yum(Yellowdog Updater, Modified)是一款常用的包管理工具,主要用于自动化安装、更新和卸载软件包,并能自动解决依赖关系,广泛应用于基于RPM的发行版,如CentOS、RHEL、Fedora等,本文将详细介绍如何使用yum进行软件包管理,包括基础配置、安装步骤、常用命令及问题排查等内容。
yum的基础配置
yum的核心是仓库(Repository)配置,仓库指向软件包存储的位置,系统通过仓库获取软件包信息,仓库配置文件通常位于/etc/yum.repos.d/
目录下,以.repo
为后缀(如CentOS-Base.repo
),每个仓库配置包含以下关键参数:
参数 | 说明 | 示例值 |
---|---|---|
[repositoryid] | 仓库唯一标识,方括号内自定义 | [base] |
name | 仓库描述,便于识别 | CentOS-7 – Base |
baseurl | 仓库地址,支持HTTP、FTP、本地路径 | http://mirror.centos.org/centos/7/os/x86_64/ |
enabled | 是否启用该仓库(1为启用,0为禁用) | 1 |
gpgcheck | 是否校验GPG签名(1为校验,0为不校验) | 1 |
gpgkey | GPG密钥文件路径,用于校验软件包完整性 | http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7 |
配置示例:
以CentOS 7为例,默认仓库文件CentOS-Base.repo
的baseurl
可能需要更换为国内镜像源(如阿里云、网易)以加速下载,修改baseurl
为:
[base] name=CentOS-7 - Base - 163.com baseurl=http://mirrors.163.com/centos/7/os/x86_64/ gpgcheck=1 gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
修改完成后,执行yum clean all
和yum makecache
刷新缓存。
安装前的准备工作
-
检查网络连接:
yum需要从仓库下载软件包,确保网络正常,可通过ping www.baidu.com
测试,或使用curl http://mirror.centos.org
检查仓库地址可访问性。 -
确认软件包来源:
官方仓库(如Base、Extras)包含稳定软件包,第三方仓库(如EPEL、Remi)提供额外软件包,若需使用第三方仓库,需先安装对应的仓库配置文件(如安装EPEL仓库:yum install epel-release
)。 -
更新软件包缓存:
执行yum makecache
将仓库中的软件包信息加载到本地缓存,避免后续操作因缓存过旧报错。
使用yum安装软件包
安装单个软件包
使用yum install 包名
命令,yum会自动解决依赖并安装所需软件包,例如安装wget
:
yum install wget
执行过程中,系统会显示软件包信息及依赖关系,输入y
确认安装,安装完成后,可通过rpm -q wget
或yum list installed | grep wget
验证是否安装成功。
安装多个软件包
通过空格分隔多个包名,一次性安装多个软件包,例如同时安装vim
和tree
:
yum install vim tree
安装指定版本的软件包
若需安装特定版本,可通过yum list 包名
查看可用版本,然后使用yum install 包名-版本号
安装,例如查看nginx
版本并安装1.18版本:
yum list nginx # 查看可用版本,如nginx.x86_64 1.18.0-1.el7.ngx yum install nginx-1.18.0-1.el7.ngx
安装本地.rpm软件包
若已下载.rpm文件到本地,使用yum localinstall 包名.rpm
安装,yum会自动处理依赖关系,例如安装本地的google-chrome-stable.rpm
:
yum localinstall google-chrome-stable.rpm
yum常用命令
命令 | 功能 | 示例 |
---|---|---|
yum update |
更新所有已安装软件包到仓库中的最新版本 | sudo yum update |
yum update 包名 |
更新指定软件包 | sudo yum update nginx |
yum list available |
列出仓库中所有可安装的软件包 | yum list available | grep httpd |
yum list installed |
列出已安装的软件包 | yum list installed |
yum search 关键词 |
根据关键词搜索软件包(模糊匹配) | yum search download |
yum info 包名 |
查看软件包详细信息(版本、大小、依赖等) | yum info nginx |
yum remove 包名 |
卸载软件包(保留配置文件) | sudo yum remove nginx |
yum erase 包名 |
卸载软件包(同时删除配置文件) | sudo yum erase nginx |
yum clean all |
清理所有缓存(包括已下载的软件包、元数据等) | sudo yum clean all |
yum history list |
查看yum操作历史记录 | yum history list |
yum history undo ID |
撤销指定ID的yum操作(如安装、更新) | yum history undo 3 |
高级操作与问题排查
配置第三方仓库
以安装EPEL(Extra Packages for Enterprise Linux)仓库为例,该仓库提供大量常用软件包(如htop
、git
):
# 安装EPEL仓库配置文件 yum install epel-release # 验证仓库是否启用 yum repolist enabled "epel*" --verbose
解决依赖问题
若安装软件包时提示“依赖冲突”,可通过以下方式解决:
- 跳过损坏依赖:
yum install 包名 --skip-broken
(不推荐,可能导致功能异常) - 清理未完成的事务:
yum-complete-transaction --cleanup-only
- 手动安装依赖包:通过
yum deplist 包名
查看依赖列表,逐个安装缺失的依赖。
常见错误排查
-
错误1:
No package available
原因:仓库中无该软件包,或仓库未启用。
解决:检查仓库名称是否正确(如CentOS-7
而非CentOS-8
),或通过yum repolist
查看启用的仓库。 -
错误2:
Cannot retrieve repository metadata (repomd.xml)
原因:仓库地址无法访问或元数据损坏。
解决:检查网络连接,更换仓库镜像源,执行yum clean metadata
清理元数据后重试。
相关问答FAQs
Q1:yum和apt有什么区别?
A:yum和apt均为Linux系统包管理工具,但适用场景不同:
- yum:基于RPM包管理,主要用于CentOS、RHEL、Fedora等系统,通过仓库管理软件包,支持依赖自动解决。
- apt:基于DEB包管理,主要用于Debian、Ubuntu等系统,命令更简洁(如
apt install
替代yum install
),支持源码编译安装(通过apt build-dep
)。
两者核心功能一致(安装、更新、卸载软件包),但底层包格式和命令语法不同。
Q2:如何查看某个软件包是由哪个仓库安装的?
A:可通过以下两种方式查询:
-
使用
yum info
命令:yum info 包名
在输出信息中查看
From repository
字段,显示软件包来源的仓库名称。 -
查看
/var/log/yum.log
日志文件:grep "Installed" /var/log/yum.log | grep 包名
该日志记录了所有yum操作,可通过关键字过滤找到安装记录。
已全面覆盖yum安装软件包的基础操作、高级技巧及问题处理,用户可根据实际需求灵活应用,高效管理Linux系统软件包。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/26705.html