1. yum命令介绍
1.1 yum的介绍
yum命令来自于英文词组”YellowdogUpdater,Modified“的缩写,其功能是用于在Linux系统中基于RPM技术进行软件包的管理工作。
YUM是C/S架构的在线软件安装命令,是RPM1的前端工具,依赖于RPM存在的。
能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
当然了 ,其实不懂yum的概念,一点也不妨碍你使用yum去工作,真的。
1.2 yum的优劣势
yum最大的优势就是能够解决rpm包的依赖问题,自动解决安装时候的依赖。
不过yum也有缺陷,最大的缺陷就是如果有未完成的安装在强行终止的情况下,下次再次安装容易出现无法解决的依赖问题。
为了处理yum本身的缺陷,引入了dnf命令,dnf的使用方法和yum一样。 dnf完全是用python写的,更新了依赖关系解析器的后端,比yum效率更高。
1.3 使用yum的注意事项
使用yum之前要首先配置好本地yum源,或者网络yum源,否则无法使用。
1.3.1 配置本地yum源
1. 挂载镜像
1) 先确保镜像已经挂载
2) 配置yum源文件进行挂载
需要注意的是,这里我们要创建一个以.repo结尾的文件,而且文件必须放在/etc/yum.repos.d目录下
[root@mufeng ~]# cd /etc/yum.repos.d/redhat7.repo
vim redhat.repo
[rhel-source]
name=mufeng
baseurl=file:///mnt
enabled=1
gpgcheck=0
上面代码的相关备注:
内容 |
释义 |
[rhel-source] |
yum源名称,在本服务器上唯一,用来区分不同的yum源 |
name=Redhat |
对yum源的描述 |
baseurl=file:///mnt |
yum的挂载路径,file,http,ftp三种形式的路径 |
enabled=1 |
为1表示开启yum源,0表示禁用 |
gpgcheck=0 |
为1 表示使用公钥检验rpm包正确性,0位不校验 |
3) 在命令行挂载镜像到/mnt
可以看到/dev/sr0已经挂载到了/mnt上,说明成功了。
1.3.2 配置网络yum源
对网络软件包的理解:
- 我们安装软件包,必须先把软件包现在的本地进行安装
- 网络软件包的意思就是,这些软件包不在自己电脑上,而是在别人的电脑上(服务上)
- 我们要下载一个软件包,但我们不清楚这个软件包在哪台电脑上
- 于是电脑在下载软件包的时候会去官网搜索,如果官网连接不通,会去你配置好的网络源搜索,比如阿里云
- 为什么阿里云会提供软件包? 因为利益(比如增加网站的访问量和下载量等)
基于以上对网络软件包的理解,你会发现现在配置网络yum源越来越简单了,不用重复造*,直接使用阿里云的镜像站即可
如下图,选择你要使用的系统版本网络源
2) 我用的是centos7的系统,所以直接选择 centos7.repo即可
怎么知道自己的操作系统?
[root@mufeng yum.repos.d]# cat /etc/centos-release
CentOS release 7.9 (Final)
根据自己的系统型号,选择6还是7或者8的repo包,我这里选择6的
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
3) 运行 yum makecache 生成缓存
[root@mufeng yum.repos.d]# cat /etc/centos-release
可以愉快的使用yum了
[root@mufeng ~]# yum install vsftpd
2. 语法格式及常用选项
2.1 yum的全部参数
我们还是使用 --help来查看yum的常用参数,可以看到yum的常用参数有很多:
[root@mufenggrow ~]# yum --help
已加载插件:fastestmirror, langpacks
Usage: yum [options] COMMAND
List of Commands:
check 检查 RPM 数据库问题
check-update 检查是否有可用的软件包更新
clean 删除缓存数据
deplist 列出软件包的依赖关系
distribution-synchronization 已同步软件包到最新可用版本
downgrade 降级软件包
erase 从系统中移除一个或多个软件包
fs Acts on the filesystem data of the host, mainly for removing docs/lanuages for minimal hosts.
fssnapshot Creates filesystem snapshots, or lists/deletes current snapshots.
groups 显示或使用、组信息
help 显示用法提示
history 显示或使用事务历史
info 显示关于软件包或组的详细信息
install 向系统中安装一个或多个软件包
langavailable Check available languages
langinfo List languages information
langinstall Install appropriate language packs for a language
langlist List installed languages
langremove Remove installed language packs for a language
list 列出一个或一组软件包
load-transaction 从文件名中加载一个已存事务
makecache 创建元数据缓存
provides 查找提供指定内容的软件包
reinstall 覆盖安装软件包
repo-pkgs 将一个源当作一个软件包组,这样我们就可以一次性安装/移除全部软件包。
repolist 显示已配置的源
search 在软件包详细信息中搜索指定字符串
shell 运行交互式的 yum shell
swap Simple way to swap packages, instead of using shell
update 更新系统中的一个或多个软件包
update-minimal Works like upgrade, but goes to the 'newest' package match which fixes a problem that affects your system
updateinfo Acts on repository update information
upgrade 更新软件包同时考虑软件包取代关系
version 显示机器和/或可用的源版本。
Options:
-h, --help 显示此帮助消息并退出
-t, --tolerant 忽略错误
-C, --cacheonly 完全从系统缓存运行,不升级缓存
-c [config file], --cnotallow=[config file]
配置文件路径
-R [minutes], --randomwait=[minutes]
命令最长等待时间
-d [debug level], --debuglevel=[debug level]
调试输出级别
--showduplicates 在 list/search 命令下,显示源里重复的条目
-e [error level], --errorlevel=[error level]
错误输出级别
--rpmverbosity=[debug level name]
RPM 调试输出级别
-q, --quiet 静默执行
-v, --verbose 详尽的操作过程
-y, --assumeyes 回答全部问题为是
--assumeno 回答全部问题为否
--version 显示 Yum 版本然后退出
--installroot=[path] 设置安装根目录
--enablerepo=[repo] 启用一个或多个软件源(支持通配符)
--disablerepo=[repo] 禁用一个或多个软件源(支持通配符)
-x [package], --exclude=[package]
采用全名或通配符排除软件包
--disableexcludes=[repo]
禁止从主配置,从源或者从任何位置排除
--disableincludes=[repo]
disable includepkgs for a repo or for everything
--obsoletes 更新时处理软件包取代关系
--noplugins 禁用 Yum 插件
--nogpgcheck 禁用 GPG 签名检查
--disableplugin=[plugin]
禁用指定名称的插件
--enableplugin=[plugin]
启用指定名称的插件
--skip-broken 忽略存在依赖关系问题的软件包
--color=COLOR 配置是否使用颜色
--releasever=RELEASEVER
在 yum 配置和 repo 文件里设置 $releasever 的值
--downloadonly 仅下载而不更新
--downloaddir=DLDIR 指定一个其他文件夹用于保存软件包
--setopt=SETOPTS 设置任意配置和源选项
--bugfix Include bugfix relevant packages, in updates
--security Include security relevant packages, in updates
--advisory=ADVS, --advisories=ADVS
Include packages needed to fix the given advisory, in
updates
--bzs=BZS Include packages needed to fix the given BZ, in
updates
--cves=CVES Include packages needed to fix the given CVE, in
updates
--sec-severity=SEVS, --secseverity=SEVS
Include security relevant packages matching the
severity, in updates
2.2 影响yum的配置文件
与yum有关的配置文件一共有三个:
基本设置: /etc/yum.conf
仓库配置: /etc/yum.repo.d/*.repo
日志文件: /var/log/yum.log
2.3 最常用的yum参数
根据2.1我们整理出最常用的参数做一下汇总:
参数 |
参数描述 |
install |
安装软件包 |
-y |
对安装过程中所有的提问,都默认选择yes |
-q |
安装模式 |
-v |
详细信息 |
update |
更新软件包 |
list |
列出资源库中所有可以安装的软件包 |
search |
搜寻软件包的信息 |
info |
显示指定的rpm软件包的描述信息和概要信息 |
groupinstall |
安装程序组件 |
clean |
清空 |
remove |
卸载 |
3. 参考案例实战
3.1 使用yum进行安装
想要安装,使用的参数是install , 所以这里用install即可。
-y参数是为了出现提问时候,全部输入为y.
案例一: 使用yum安装httpd
[root@mufeng ~]# yum install httpd -y
案例二: 使用yum安装wget
yum install -y wget
可以看到-y参数可以放在命令的最后,也可以放在 install 后面
案例三: 从硬盘安装rpm包并使用yum解决依赖关系
此时可以使用 yum localinstall ./*.rpm
3.2 使用yum升级和更新软件包
升级软件包使用的是update
[root@mufeng~]# yum update -y
还有个命令也是用来升级: upgrade
yum upgrade -y
yum update 和yum upgrade有什么区别呢?
答: yum update和yum upgrade的功能都是一样的,都是将需要更新的package更新到源中的最新版。
唯一不同的是,yum upgrade会删除旧版本的package,而yum update则会保留(obsoletes=0)。
生产环境中建议使用yum update,防止因为替换,导致旧的软件包依赖出现问题。
案例三: yum源的更新命令
yum clean all
yum makecache
yum update
3.3 软件包的查询
案例一: 查询一个软件包的描述信息
[root@mufeng ~]# yum info httpd
案例二: 查询一个包是哪个命令安装的? 用yum provides
比如我们要查询ab命令是哪个软件包安装的
[root@mufeng ~]# yum provides /usr/bin/ab # 查看ab命令是哪个包安装的
已加载插件:fastestmirror, refresh-packagekit, security
Repository epel is listed more than once in the configuration
Loading mirror speeds from cached hostfile
* updates: mirrors.aliyun.com
httpd-tools-2.2.15-69.el6.centos.x86_64 : Tools for use with the Apache HTTP Server
Repo : base
匹配来自于:
Filename : /usr/bin/ab
httpd-tools-2.2.15-69.el6.centos.x86_64 : Tools for use with the Apache HTTP Server
Repo : installed
匹配来自于:
Other : 提供依赖满足:/usr/bin/ab
案例三: 列出所有可安装的软件包
[root@mufenggrow ~]# yum list httpd
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.163.com
* extras: mirror.lzu.edu.cn
* updates: mirror.lzu.edu.cn
可安装的软件包
httpd.x86_64 2.4.6-97.el7.centos.5 updates
[root@mufenggrow ~]#
其他使用方法
- list +软件包 可以列出要安装或者已经安装的软件包
- list update 表示列出所有可更新的软件包
- list installed 列出所有已经安装的软件包
3.4 yum卸载软件包
卸载软件包,直接使用remove即可
[root@mufeng~]# yum remove httpd
此时也可以加-y参数,一般不需要加。
3.5 yum 安装开发工具软件组
yum grouplist 查看有哪些安装组
yum groupinstall “开发工具”
使用yum grouplist可以查看到所有需要安装的组件,比如我的系统是最小化系统,此时想安装桌面,这时候就可以安装桌面组件。
4.总结
yum是我们日常用的最多的命令,但yum也有一定的不足,比如正在执行的过程中突然中断,会导致下次使用的时候提示缺少依赖包。