1. yum命令介绍

1.1 yum的介绍

yum命令来自于英文词组”YellowdogUpdater,Modified“的缩写,其功能是用于在Linux系统中基于RPM技术进行软件包的管理工作。

YUM是C/S架构的在线软件安装命令,是RPM1的前端工具,依赖于RPM存在的。

能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

当然了 ,其实不懂yum的概念,一点也不妨碍你使用yum去工作,真的。

linux基本功系列之yum命令_centos

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) 先确保镜像已经挂载

linux基本功系列之yum命令_加载_02

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

linux基本功系列之yum命令_yum源_03


可以看到/dev/sr0已经挂载到了/mnt上,说明成功了。

linux基本功系列之yum命令_加载_04

1.3.2 配置网络yum源

对网络软件包的理解:

  1. 我们安装软件包,必须先把软件包现在的本地进行安装
  2. 网络软件包的意思就是,这些软件包不在自己电脑上,而是在别人的电脑上(服务上)
  3. 我们要下载一个软件包,但我们不清楚这个软件包在哪台电脑上
  4. 于是电脑在下载软件包的时候会去官网搜索,如果官网连接不通,会去你配置好的网络源搜索,比如阿里云
  5. 为什么阿里云会提供软件包? 因为利益(比如增加网站的访问量和下载量等)

基于以上对网络软件包的理解,你会发现现在配置网络yum源越来越简单了,不用重复造轮子,直接使用阿里云的镜像站即可

1) 阿里云开发者社区-镜像站-点击直达

如下图,选择你要使用的系统版本网络源

linux基本功系列之yum命令_centos_05

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也有一定的不足,比如正在执行的过程中突然中断,会导致下次使用的时候提示缺少依赖包。